EDIT: I am using “shared environment” wrong. I was thinking of environment stacking.
Basically, when you use the package manager to add/remove packages, it resolves with respect to the current environment, with no regards to the shared environments that might be visible. This is really for the best, otherwise things would become complicated.
But, as a result, when you using SomePackageFromSharedEnv
(eg. Plots) that depends on SomePackageInCurrentEnvAndSharedEnv
(eg. a common package like MacroTools), it will load the Plot’s version from the shared-env, but MacroTool’s version from the current env. There’s no guarantee that those two packages are compatible.
Long story short, shared envs are completely safe for dependency-less packages (eg. BenchmarkTools), but I wouldn’t want to rely on them for more complex packages, because it’s asking for trouble. Use dev environments for that.