[racket-dev] package scopes
We currently have three packages scopes:
* 'installation --- specific to an installation of Racket, where
package files are written into the installation (for all users of
the installation)
* 'user --- specific to a user and version, where packages files are
written to a user-specific location
* 'shared --- specific to a user, but not to a version of Racket
I think we should change to two:
* 'installation --- like now
* 'user --- specific to a user and "installation", but where
installations are identified by a configurable name (as opposed to,
say, the installation's path)
That is, every installation has a name. For a release, the name
defaults to the release version. For a snapshot, the name defaults to
"snapshot" --- which means that when you throw away your snapshot and
install a new one, then you keep your package installations.
(Distributors of releases and snapshots can adjust the default,
obviously.) For a repository checkout, the name defaults to "checkout"
--- which means that you keep your package installations when you `git
pull' and the version changes.
An installation name would be stored in the same configuration file
that is used for package catalogs. A user who wants multiple snapshot
installations, git-repo checkouts with different package sets, or
multiple installations of Racket v6.0 can adjust one installation's
name in its configuration. Similarly, a user who really wants to share
packages between Racket v6.0 and v6.1 can give the installations the
same name.
I think this change would make the 'user installation scope the right
default for pretty much everyone, instead of trying to make the default
'user under some circumstances and 'installation in others. I think it
also covers the goal of 'shared better than 'shared does.