Hello!
Browsing throught the source code for tools.deps.alpha
, I noticed two things:
- Package name is with qualified –
org.clojure/tools.deps.alpha {:mvn/version "0.6.480"}
can co-exist with anyorg.clojure/tools.deps {:mvn/version "1.0.0"}
. - Namespaces are qualified.
clojure.tools.deps.alpha
is defined, butclojure.tools.deps
is never defined.
Hypothesis: When tools.deps is to go out of alpha, tools.deps.alpha and tools.deps can co-exist on the classpath in a codebase.
A possible upgrading strategy could be as follows:
- Use
tools.deps.alpha {:mvn/version "0.6.480"}
and ensure that everything works. - Introduce
tools.deps {:mvn/version "1.0.0"}
without any breakage - Gradually migrate codebase from reliance on
tools.deps.alpha
totools.deps
- Remove dependency on
tools.deps.alpha {:mvn/version "0.6.480"}
when migration is complete.
So, are clojure core alpha namespaces chosen to avoid upgrade conflicts? Like with tools.deps
and spec
. Are there other reasons?
Kind regards,
Teodor