[Haskell-cafe] Backwards-Compatibility [Was: Re: ANNOUNCE: GHC
survey results]
Sven Moritz Hallberg
pesco at gmx.de
Wed Jun 29 07:20:00 EDT 2005
Am 29. Jun 2005 um 11.03 Uhr schrieb Simon Marlow:
> On 28 June 2005 14:11, Bulat Ziganshin wrote:
>
>> 3) many users complaining about non-compatibility between GHC
>> versions. if they mean library interfaces changes then how about using
>> Pesco's library versioning scheme? (see
>> http://www.haskell.org/tmrwiki/EternalCompatibilityInTheory)
>
> I've read that article, and I think it's an interesting idea. I can't
> disagree with the arguments put forward, but somehow, the cure seems a
> bit painful.
Maybe a slightly painful cure would be preferable to a protracted
disease? ;)
Metaphors aside, I have specifically tried to minimize developer pain
with ECT. Can you be specific as to where you fear it? In adoption? In
maintenance?
In the survey summary, you state that you "will strive to clearly
indicate which features and libraries are considered experimental".
While that means users of GHC can better avoid breakage, it obviously
does so at the cost of prohibiting their use of those often very
appealing new developments. Also, extra stress is put on the library
developers to "get everything right" when a library is moved to stable
status and, at the same time, to change as little as possible
afterwards. With a growing number of users (as it seems to be currently
happening), pressure to not change anything will likewise rise. The
effect can already be seen in the Haskell 98 libraries, to some of
which considerable improvements have become available. Still we cannot
change them. H98 is not so bad, because the amount of libraries is
relatively small and contained, but as can be seen in GHC 6.4, our
library base is growing fast. People will want to use these libraries
but they /will/ need change in the future, lest evolution stagnate.
But I should stop preaching to the choir. As the survey shows,
backwards-compatibility is very important /and/ users praise rapid
evolution. Thus we should work to solve the apparent dichotomy.
ECT can do it, but, as you state, the question is just, is it too
painful? I think not, because:
1. Initial adoption consists of
- renaming modules - easy to automate,
- changing imports - also possible to automate, and
- creating the "short cut" modules - very easy to automate.
The semester ends in two weeks and I'd be happy to contribute.
If there is interest, I will get to work.
2. Proper maintenance means paying attention to notice
incompatible interface changes. Surely this is currently no
different.
Then, upon an interface change:
- renaming the module - trivial, and
- retaining the old version in some form, either by
o keeping a copy of the old code in place - trivial but
bloaty,
o implementing a compatibility adaptor, or
o if the change was actually backwards-compatible (as it will
undoubtedly happen as well), re-export the new version - a
convenience script job.
What am I missing?
Anyway, thanks for reading my article!
With best regards,
Pesco alias Sven Moritz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: Signierter Teil der Nachricht
Url : http://www.haskell.org//pipermail/haskell-cafe/attachments/20050629/f7e2a70c/PGP.bin
More information about the Haskell-Cafe
mailing list