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

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

On Thu, Jun 6, 2013 at 12:03 PM, Sam Tobin-Hochstadt <samth at ccs.neu.edu> wrote:
> On Thu, Jun 6, 2013 at 1:42 PM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
>>
>>> 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.
>
> First, I don't see why single-collection packages make things harder
> to deal with re-implementing a package.  Imagine that I make
> `disassemble` a single-collection package, and someone depends on it,
> and then I abandon my code.  You can easily create a new package that
> ships that collection.  I think that places the burden correctly --
> it's easy to create packages initially, and handling abandoned
> packages takes a little more work.  In JavaScript, where there's a
> flat namespace, this works -- the Zepto library just provides the same
> names as jQuery, even though they're different implementations and not
> generic names.

The problem is that if you use the name "samths-disassemble" then even
in twenty years, my implementation uses the collection
"samths-disassemble" and not "disassemble".

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.