[Haskell-cafe] The instability of Haskell libraries
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.
More information about the Haskell-Cafe