Features Download
From: Mark Lentczner <mark.lentczner <at> gmail.com>
Subject: What To Expect When You're a Platform Library Maintainer
Newsgroups: gmane.comp.lang.haskell.libraries
Date: Thursday 10th April 2014 00:18:09 UTC (over 2 years ago)
I've been meaning to write this for a while... Recent discussions spurred
me to get on it. I present:

"What To Expect When You're a Platform Library Maintainer"

Having your library as part of the Platform has its plusses:
* Your library will get lots of users, which in turn will get it used,
tested, and maybe some contributors.
* That functionality becomes part of what developers perceive as "easily
doable with Haskell"
* Fame! (Well, functional fame...)

There are downsides too:
* You'll get bug reports. Some real, some bizarre.
* You have to subscribe to a low-volume mailing list.
* Every six months or so you'll get e-mail from me asking what the current
stable version is.

But the real thing to think about is the responsibility:
* Once in the platform, we're telling people to use it and depend on it...
which means you need to be sure it is dependable.
* You are committing to keeping the API stable. Which means long term
(years) forward and backward compatibility:
** Clients written to your API today should continue to compile and work
against future versions of the API, several years running.
** Clients written to your API today should be able to, without much
trouble, work with the past few (2? 3?) releases of the platform.
* You can only depend on other packages that are in the platform, and are
committing to that restriction going forward. (That isn't to say that you
can't lobby to get some other package you'd like to use into the
platform... but just don't assume it will.)
* Your package should help work toward eliminating "cabal hell". This
generally means adhering to the PVP, and having reasonable values there.
* Tests. Please.
* You should have a public repo on GitHub or someplace with similar
* You should have a contact e-mail publicly available. If you want to stay
anonymous, having a package in the platform isn't the way (see "Fame!"
* You aught to have back-up maintainers. That way if you are on vacation or
need to take leave or give up the project - there is someone else to keep
it going.
* Twice a year expect a short flurry of messages and checking to make sure
all is well and compiles with the latest of everything else that goes into
the platform, including GHC. For many this is usually very little work...
then occasionally GHC 7.n+2 comes along and we all have stuff to do!

I know it sounds like a lot, but isn't that bad, and it is worth it:
Successful programming systems (think PHP or Python or Java) have succeeded
in large part because they have a rich set of platform libraries that "just
work". It is the development experience with that platform that makes
developers decide a programming language is viable. The success of Haskell
will be largely based on how much we can all pitch in to make the platform
libraries a "smooth sailing" experience, "batteries included".

- Mark
CD: 3ms