[racket] Worried about the new package manager not storing each version of a package

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Thu Aug 29 19:28:57 EDT 2013

Matthew Flatt wrote at 08/29/2013 03:14 PM:
> In fact, we want to get rid of the notion that the packages that are
> currently in the main distribution are special --- at least, not in any
> way except that they happen to be selected to be in the distribution
> that PLT provides right now. That's why I keep putting "third-party" in
> quotes; all packages are considered "third-party" by the package
> system.
>    

One distinction that I'm not sure was articulated, between pieces of 
DrRacket and what I'd call an ecology of reusable third-party 
components, is in the who/what/when/where/why/how of the components' 
lifecycles.

Few third-party developers have releasing Racket third-party packages as 
part of their job descriptions, and third-party contributions seems to 
largely be altruistic.  As for altruism, I can attest that trying to 
promote Racket as a third-party R&D person for the last decade has not 
shown financial returns like simply riding the popularity of some other 
platform would've.  And third-party packages aren't often part of a 
tenure bid, nor listed on many grant applications.  When packages aren't 
coming from PLTers and random grad students (who might get academic 
career traction out of it, in addition to the altruistic and vision 
factors), I think packages are generally coming from hobbyists and maybe 
sometimes from businesses.  In the case of businesses, they're often 
toying with the idea of giving back, perhaps for hiring PR, or indulging 
some valuable employee's interest in open source, if it's not too 
expensive to do so.  The third-party motivation seems generally 
altruistic or fragile/fleeting.

In my particular evolving R&D vision for an ecology of reusable 
third-party components, and how that might happen without without 
encumbering the agility of third-party developers who decompose their 
apps to include reusable components that can be open-sourced almost 
incidentally (e.g., easy to release and update, backward-incompatible 
changes are OK), as well as making stable apps developed using large 
numbers of these components practical (e.g., managing and mixing 
versions, and a compatibility info/mechanism)... there are very 
different needs than DrRacket has had thus far.  An initial cut at 
breaking the DrRacket code base into packages will not encounter and 
have to address many of these different needs.

A hypothetical exercise: If, after DrRacket has been broken into 
packages, all the PLT developers cease speaking with each other for a 
few yeas, and release changes to their respective pieces of DrRacket 
only as weekend hobbies, or by sneaking it past their employers, and 
they start building important things upon numerous other third-party 
components, and they start seeing surprise incompatibilities between 
components that breaks their important apps, and problems mixing apps 
and components with incompatible version dependencies... then, even 
though they had the freak advantage of a long-centralized starting point 
for their packages, then they might start to appreciate lifecycles like 
real third-party packages, and apps of same, will.

That's why I'll continue to say "third-party" without quotes around it, 
for now. :)

Neil V.


Posted on the users mailing list.