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

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Tue Jun 18 08:19:13 EDT 2013

Matthew Flatt wrote at 06/18/2013 07:59 AM:
> In principle, you should add a versioned dependency on "racket" to
> indicate that the package does not work with version 5.3.4, and so
> users of v5.3.4 should get an earlier revision of the package.

Just a general comment... For production use, I try not to have 
libraries push people to new versions of Racket without good reason.

Despite my general awareness and practice, I was actually bit by this 
problem recently.  A consulting client who used one of my open source 
libraries in production had a problem that I had addressed in a new 
version of the library.  But it turned out that an interim version of 
the library added a dependency on some new Racket feature, and client's 
production setup would be disrupted if they had to move Racket versions 
(increases unknowns).  I ended up forking my own library for the client, 
and merging the fix into their fork.

In the more distant past, I think I've also had at least one situation 
in which I made a Racket (or PLT Scheme) library version use some new 
Racket feature, then in a subsequent version I reversed this change, so 
that it could work with an older Racket version.

This doesn't have to be a big encumbrance -- I do adopt new Racket 
features when they are win (e.g., submodules, define-logger), but I try 
to make small efforts to avoid requiring newer Racket versions than I 
really need, since pushing people to new Racket versions does seem to 
cause problems in practice.

Neil V.


Posted on the dev mailing list.