Short version:
I propose that we change the snapshot builds to be more like regular releases: Use the snapshot version number as the installation's "name", which affects the way that packages get installed by default.
Long version:
When you install a regular Racket release from https://download.racket-lang.org, the installation has a name that corresponds to the Racket version. This name is shown by raco pkg config name
. The name is used when of packages are added in user-specific mode, which is the default package-installation mode. Those packages end up in a name-specific and therefore version-specific place, so after upgrading to a new version, raco pkg migrate
or "Package Manager" -> "Copy from Version" in DrRacket must be used to reinstall packages that were in place for the old version.
When you install a snapshot Racket build from https://snapshot.racket-lang.org, currently, the installation has a name that is always "snapshot". The intent of that fixed name was that user-specific packages from a previous snapshot are still in place when you switch to a new snapshot, and I think some Racketeers have indeed used snapshots that way. To bring the preserved packages in line with the new snapshot version, though, they must run raco setup
(at a minimum). A new snapshot installation can easily start out broken because it picks up incompatible things from a previous snapshot installation.
Releases and snapshots differ, currently, because we expected different workflows for the different kinds of builds, and because we wanted to experiment to see which convention works better. Although having to use raco pkg migrate
isn't great, I think it has been better than the confusion that can be created by a snapshot build's convention. Confusion is especially a problem for people who use snapshots infrequently and have no reason to think that they'd work differently than a release.
For either a regular release or snapshot build, the name can be set with raco pkg config -i --set name <new-name>
. It's just a question of the default name that is chosen when packaging a release or snapshot.
Changing a snapshot build's configuration seems like an improvement to me, but it will likely break someone's workflow or some automated process, and they'll have to adapt. See also the earlier thread, Rationale for per-version user scope packages?, which started out as an argument in favor of the opposite change toward more sharing. But because the direction with more sharing is so likely to create problems, that earlier thread ended up being about an improved way to opt into sharing.
Any objections to making the change to snapshots?