Currently the storage chosen to obtain a project is decided non-deterministically by pubgrub::resolve. Which source to use has to be a policy decision, and we should consider at least Cargo, uv, pip, Maven, npm and similar to avoid making the same mistakes as e.g. pip.
Simple options:
- choose a local source where available
- choose always the first source that is available. Similar to uv.
- choose a source per-usage: only usages with the same source specified get the same source. E.g. cargo does this.
- choose any source: effectively what happens currently
Currently the storage chosen to obtain a project is decided non-deterministically by
pubgrub::resolve. Which source to use has to be a policy decision, and we should consider at least Cargo, uv, pip, Maven, npm and similar to avoid making the same mistakes as e.g. pip.Simple options: