I want to highlight another tool to deal with versioning.
19.11.2013, 23:41, "Robert P. Goldman" rpgoldman@sift.info:
two versions of the same library on the same machine is quite feasible, and indeed I do this myself, every day. I have different source trees for different projects, and with each source tree is associated a different ASDF configuration.
This is not a futuristic "wouldn't it be nice if..." situation, either: it's a simple requirement of my daily work environment. E.g., I have projects that rely on different versions of FiveAM (they are hosted differently, so it's not just a matter of demanding that everyone upgrade -- some I run, some I don't).
I did that too. I had a config file vermap.lisp which puts directories of the libary versions I need to ASDF central registry.
So, when we say :depends-on (#:fiveam) we have an external configuration which specifies then exact version of fiveam to be loaded.
The external configuration is a flat mapping: (:name :chunga :ver "0.4.3") (:name :cl-base64 :ver "3.3.2") (:name :cl-cont :ver "0.3.4") (:name :cl-containers :ver "0.9.10") (:name :cl-fad :ver "0.6.2") (:name :cl-html-parse :ver "1.0")
I called such a mapping a "vermap" or a "libworld". I used different vermaps for different applications.
And Quicklisp uses this approach. Quicklisp dist version is a collection of releases, it specifies what exact release of fiveam is used by asdf:load-op "fiveam".
This approach is different from the case where each libary author specifies constrains for the library dependencies, and the library loader tries to find some versions which satisfy the constrains.
With the exact mapping we have a reproducible configuration. For example, my application startup script does (require-quicklisp :version "2013-01-28"), so that when the application is deployed on server, it works with exactly same library versions as it was tested on the development machine.
Developers can collaborate to assemble library version and share vermaps which are consistent and tested to work well together. They can be shared inside a company, or globally, like Quicklisp does.
Best regards, - Anton