[Haskell-cafe] The instability of Haskell libraries

John Goerzen jgoerzen at complete.org
Fri Apr 23 22:08:09 EDT 2010


Ivan Lazar Miljenovic wrote:
> I think the "release early, release often" slogan is an affect on this
> as well: we encourage library writers to release once they have
> something that _works_ rather than waiting until it is perfect.  The
> fact that we encourage smaller, more modular libraries over large
> monolithic ones also affects this.

That is absolutely a good thing for many libraries here.  I'm all in 
favor of low barriers to entry, and took advantage of such when I was 
starting out in this community.  And I thank those many of you that have 
been around longer than I for putting up with my early code ;-)

On the other hand, there are certain libraries that are very 
well-established and so popular that they are viewed by many as pretty 
much part of the language.  Here I think of ones such as old-time or 
time, unix, bytestring, containers, etc.  I think that if "release early 
& often" is to be practiced with these, then there ought to be a 
separate stable branch that is made widely available, with development 
releases numbered differently (as the Linux kernel used to do) or only 
available via version control.

> When considering Haskell vs Python, I wonder if the "stability" of
> Python's libraries is due to their relative maturity in that the
> "fundamental" libraries have had time to settle down.

It is a funny thing, because our fundamental libraries *have* had time 
to settle down, in a sense.  In another sense, I must say that the 
innovations we have seen recently have been sorely needed and are 
unquestionably a good thing.  The new time, exceptions, regex 
improvements, Unicode support in IO, etc. are all things of immediate 
practical benefit.  I guess this is the price of failing to avoid 
success, to borrow Simon's phrase.  And again, not entirely bad.

Incidentally, I think that the introduction of the new time was handled 
very well.  No old code had to change (except perhaps for the .cabal 
file), and yet new development could ignore old-time.

My intent here wasn't to stir up some grand new level of QC.  Just to 
request a bit more forethought before changing APIs.

-- John


More information about the Haskell-Cafe mailing list