It would be nice to formalize our package upgrade policy. In other words: When packages may be installed side-by-side, and when they are mutually exclusive?
A straw-man policy proposal, which seems to yield intuitively correct results: "The (target, channel, major, minor)
tuple must be unique per-machine". Some examples of what this would mean:
- Any 32-bit installation will co-exist with any 64-bit one (target is different).
- Installing a nightly replaces previous day's nightly (they only differ in build revision).
- Nightly, beta and stable with the same
major.minor
version will co-exist.
- Installing 1.0-alpha.2 will uninstall 1.0-alpha.1. Installing 1.0-beta.1 uninstalls any 1.0-alpha. And so on...
- 1.0.x-stable will co-exist with 1.1.x-stable, but 1.0.1-stable will replace 1.0.0-stable.