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

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Thu Jun 6 13:42:06 EDT 2013

On Thu, Jun 6, 2013 at 8:17 AM, Sam Tobin-Hochstadt <samth at ccs.neu.edu> wrote:
> 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.

The main problem with this is that it brings in internal linking where
code directly refers to other packages (implementations) and not
modules (interfaces) as the default. This means we will see code like
(require jays-awesome-data-structure) rather than (require
data/awesome). I think this is bad because it makes it harder to deal
with forking, maintainers abandoning their code, splitting packages
into packages that just depend on 'jays-awesome-data-structure, rather
than implementing it internally, etc. Obviously you can still deal
with those things, but if the path of evolution we imagine starts off
with single-package-with-package/collection-name-shared, then most
packaged collections will have a package as their name.

Jay

--
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93

Posted on the dev mailing list.