Definition of the Haskell standard library
cdsmith at twu.net
Tue Jul 31 11:16:33 EDT 2007
> On Tue, 2007-07-31 at 10:15 +0100, Simon Peyton-Jones wrote:
> > - Package X is "blessed"; lots of people have argued over its design,
> > it's stable, widely used, and actively maintained. Changes to this
> > package goes through a quality-control process.
> > Then, in effect, the "standard library" is all the X packages.
Duncan Coutts <duncan.coutts at worc.ox.ac.uk> wrote:
> I'm not sure that belongs in the cabal file, afterall, being "blessed"
> is a central community consensus thing, not a distributed decision taken
> by each person writing the cabal file for their package. I can't make a
> blessed package by just saying that it is so.
Yes, pretty much. The ideas mentioned in this thread for Hackage sound
great. I definitely was missing a lot there, as I thought of Hackage as
just somewhere people could upload their libraries. If there could be
built-in quality control in promoting certain packages, that would be
great. Even greater would be if:
1. Hackage tracked which packages had this "blessed" status.
2. There were a simple automated way, as part of the GHC install or
otherwise immediately visible without knowing about it ahead of time, to
download the whole set and install them.
3. There were either (a) a single URL that can be used to see
documentation for all of them without worrying about which package
something is in first; or (b) something like Cabal's haddock and install
steps would combine documentation for all installed packages into a
single URL; or even better, (c) both.
I see it as a really big deal that documentation becomes fragmented when
one is using many packages, so that it's harder to find what you want.
In fact, I'd classify that as the single biggest reason that I don't use
many packages now; they aren't documented at
http://haskell.org/ghc/docs/latest/html/libraries/, and it's a pain to
keep open several windows with documentation for different libraries.
(I already have done it a lot for gtk2hs and happs, but at least it's a
Big Deal to be using those, so one can justify the extra window!)
> So it's clear at the moment that the base package is blessed, changes to
> it go through the library submissions process. It's not so clear for the
> other packages that ghc has distributed and have often been taken to be
> the standard library. Many of them look more like Y's above (like
> parsec, regex-*).
I've always thought of at least these packages in the existing
"standard" library as being pretty stable: base, arrows, stm, mtl,
Cabal, haskell-src, template-haskell, network, process, directory,
filepath, unix, random, parsec, and pretty. Perhaps my perception has
been skewed... but given how often these things are recommended, I'd
hope they are stable.
> Even then though, I think Chris was looking for something slightly
I'm not entirely sure I can articulate precisely what I'm looking for.
It sounds like things are going in a reasonable direction. I'll try to
get my head around it, and see if I can pitch in somehow.
I was simply worried that from an outsider's perspective, several recent
comments in various mailing list threads, IRC dicussions, etc. seemed to
predict the demise of any standard library except for base -- which
would be quite disturbing given that base is becoming smaller, not
larger, over time.
> What is not clear
> to me yet is if we should just rely on mechanisms in hackage to
> distinguish the gems from the failed experiments or something more
Good question. I would guess the best way to answer it is to
simultaneously establish something centralized in the short term, and
then try to develop the technological structures to make it obsolete.
More information about the Libraries