[plt-scheme] Choosing language in PLT Scheme

From: Synx (plt at synx.us.to)
Date: Tue Jan 19 15:49:11 EST 2010

John Clements wrote:
> (require scheme/web-server
>          (planet foozle/mysql))

Also you'll want (planet user/package:major-version) at least. So like
(require (planet foozle/mysql:3)). If you don't do that, then it means
your program could break when this "foozle" character makes a new
version of their mysql package.

In planet, major versions are allowed to change the interface and not be
backwards compatible, but minor versions are required (by the honor
system so caveat emptor) to have a backwards compatible interface, so
saying (planet user/package:major-version:minor-version) is considered
by some to be overkill, since an update will (in theory) mean you just
have the burden of incrementing that minor-version number yourself,
without changing any of your code. If you use a package whose maintainer
you know is kind of flaky on that whole "backwards compatibility" thing,
you should specify the minor version. You should also specify it if you
go around the package's explicit interface in your own code (which is
probably a sign you're doing it wrong).

If you specify the version number, then you can keep your programs
working (with the old version) and incrementally change them to be
compatible with the new version, file by file. Only danger about that is
you might end up with a complex program using like 3 versions of the
same package in 3 places, but at least then you know where to work on,
and it's certainly better than having your program unpredictably crash
or corrupt data because it made assumptions that are no longer true for
the latest package version.

Posted on the users mailing list.