[racket-dev] PLaneT(2): Single vs multi-collection packages

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Thu Jun 6 10:17:28 EDT 2013

On Thu, Jun 6, 2013 at 10:00 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
>
>
>> What I'd like is to have single-collection being the default [...]
>>
>> So here is a demo patch attached to precise what I mean (without
>> test, would have taken me way too much time). Because it considers
>> that single-collections are the default, it is backward incompatible.
>> If info.rkt exists, it looks for 'multi-collection, and otherwise
>> looks for the 'collection-name string.
>
> I could go along with this, as long as (most?) everyone agrees, and as
> long as package authors are willing to update existing packages.

I am *very* strongly in favor of this -- I'd rather have
single-collection packages than multi-collection packages, if forced
to choose. I'm very glad that you and Laurent have done the work here.

I'd be happy to update all of my packages.  Currently, of my 9
packages on pkg.racket-lang.org, 8 are single collection, and 1
splices into the existing `data` collection (and has a second
collection to work around a now-fixed limitation.

In the interests of data, I looked at all of the packages on
pkg.racket-lang.org marked as recently updated (6 of them) as well as
the first 10 in alphabetical order. Of these, all but 3 have a single
collection, 1 has some test code in the `tests` collection, 1 has an
additional `example` collection, and 1 has an additional `attic`
collection that doesn't have any .rkt files to avoid the code there
ever being compiled. I think this suggests that single-collection is
the right default.

> If we go that way, then I'd characterize a single-collection package
> without 'single-collection' in "info.rkt" as a low-quality package, but
> a low-quality package is a fine starting point for a high-quality
> package.

Would this characterization be something reflected in any of the
software, or just a recommendation we make to packagers?

Sam

Posted on the dev mailing list.