Contrib packages

Alastair Reid alastair@reid-consulting-uk.ltd.uk
Tue, 6 May 2003 15:01:44 +0100


Simon PJ writes:
> What we want, I think, is an aggregation mechanism.  In particular
>
> 	there could be one or more "contrib" packages,
> 	optionally hosted at fptools/libraries,
> 	containing code contributed and maintained by different folk,
> 	but packaged and distributed by one person, a Contrib Builder
> 		(better titles welcome)

Actually, I think we need multiple contrib builders just as there are for GHC 
at the moment.  Specifically:

- we need someone who knows about and cares about FreeBSD to produce freebsd 
ports of libraries

- we need someone who knows about and cares about Windows to produce .msi 
packages

- we need someone who knows about and cares about Debian to produce debian 
packages

and so on for each format we want releases in.  It's unlikely that one person 
will have experience of all the different systems we want releases for so it 
has to be multiple people.

For any one format, it may be easier to have one person do all packages for 
all compilers and all libraries or it may be easier to split the task by 
compiler, by software license, by repository, or whatever.  (Obviously, using 
a common infrastructure makes it easier for one person to handle more 
libraries and more compilers.)

Simon also says:
> The Contrib Builder will probably want to do automated nightly
> build/test runs of the package.

I think this suggestion blurs the distinction between library writers and 
contrib builders.  It is a library writer's responsibility to deal with bugs 
- they  would probably benefit hugely from this sort of infrastructure.  
Contrib builders should only be dealing with bugs they have introduced in a 
particular package or, arguably, with portability issues.

The way I see it, there should be a very clearly defined interface between 
library writers and contrib builders.  Library writers should provide version 
numbered releases (absolutely _not_ daily CVS snapshots) together with 
certain metadata (documentation, which version number this is, which 
particular versions of other libraries the library works with, etc.).  
Contrib builders apply some patches to customize it for a particular system 
(debian, freebsd, etc.), compiles it, runs the testsuite, builds the 
documentation and packages it up.  Contrib builders might also act as a 
conduit for bug reports.

--
Alastair Reid

ps The above assumes that we want binary packages (I think there's plenty of 
evidence (Redhat, Debian, etc.) that this is what people want to use).
  It assumes that we want to work with the 'native' package mechanism on a 
system rather than providing our own parallel mechanism.
  It assumes that authors aren't always able to update their library whenever 
there is a significant change in one of the things they depend on: the 
nightly tests fail every night for a month before they get dealt with.
  Finally, it assumes that most people want official releases of code that the 
author feels are in a usable state rather than random snaphots of an evolving 
system.