A particular problem is that of "third-party" specifications downloaded indirectly from other libraries: one may end up with different versions of the same specification, imported through different referencing paths. Suppose that a user downloads specs S1, S2 from two different libraries L1, L2, and these both refer to a spec S from a standard library L of specs - but with different versions of S, since L1 and L2 were registered at different times. If S1 and S2 get united, the user ends up with the symbols from both versions of S. Even if a tool may warn the user about this problem, in order to fix such a problem, it may be necessary to change L1 and L2 (lying outside L), which in general requires to contact other library maintainers (those of L1 and L2).
Peter Mosses suggested to avoid to have this contact to other library maintainers. He suggests to have constructs like
from Bremen version 2.3.6 get ... from Aarhus version 1.0 get ... from Edinburgh version 1.1 with Bremen version 2.3.6, Aarhus version 1.0 get ...
or
from Bremen with all latest versions get ...
where "all" above would not only abbreviate a potentially long list, but also avoid dependency on the details of which libraries Bremen currently downloads from.
However, it's not so good to have to repeat version numbers. Perhaps it'd be better to separate the two aspects of downloading? One could specify first which versions to use for all libraries concerned (directly or indirectly) in downloads; then specify which specs are to come from which libraries. E.g.,
library PDM version 0.1 with Bremen version 2.3.6, Edinburgh version 1.1, Aarhus version 1.0 from Bremen get ... from Edinburgh get ... from Aarhus get ...
or, bundling all the version business together:
library PDM version 0.1 with Bremen version 2.3.6, Edinburgh version 1.1, Aarhus version 1.0 from Bremen get ... from Edinburgh get ... from Aarhus get ...
Then "just give me the latest, please" might be written:
library PDM version 0.1 with all latest versions from Bremen get ... from Edinburgh get ... from Aarhus get ...
Note that the default:
library PDM version 0.1 from Bremen get ... from Edinburgh get ... from Aarhus get ...
could still be to get the versions that were frozen when the libraries were last registered (although PDM personally wouldn't argue for this).
Would there ever be a need to download two different specs from different versions of the SAME library? That would be ruled out above; perhaps this is actually a beneficial side-effect of the proposal!
[As I said above, I would prefer to leave this as a tools issue. TM]