This page will provide a list of all the "old" contrib library namespaces from the 1.2 monolithic contrib, along with a brief explanation of its status and how to migrate code that depends on functions in each namespace. This page is a work in progress and will need input from all maintainers of the "new" contrib modules as well as folks with historical knowledge of the contrib library. If you have suggestions, updates, or comments on this page, feel free to email firstname.lastname@example.org so that we can make this into the best possible migration resource!
If a clojure.contrib namespace is listed here but has no migration details, that means no one has volunteered to maintain that namespace. Part of the rationale for modular contrib is that there should be an active maintainer going forward so that the library can be kept compatible with new versions of Clojure. All the new modular contrib libraries are compatible with Clojure 1.2.0 thru 1.4.0 (and are also being automatically tested with Clojure 1.5 as it is being developed - as well as being tested with a number of different JDKs!).
If a clojure.contrib namespace is not listed here, it is most likely an old namespace that was either migrated somewhere else or deprecated as part of Clojure 1.2 (e.g., clojure.contrib.duck-streams mostly migrated to clojure.java.io, clojure.contrib.pprint migrated to clojure.pprint, clojure.contrib.shell and clojure.contrib.shell-out migrated to clojure.java.shell, clojure.contrib.string migrated to clojure.string, clojure.contrib.http.agent was deprecated - clj-http is a good alternative now, as is http.async.client if you're on Clojure 1.3 or later).
If you can't yet switch to the Modular Contrib but you want to migrate to Clojure 1.3 or 1.4, you might want to look at Allen Rohner's unofficial version of Contrib 1.2 compiled against Clojure 1.3 to get you started.
Explanation of the Status links:
- latest build status - links to the most recent automated test results for a library: shows which versions of Clojure and which JVMs the library is currently compatible with (red dot = fail; blue dot = pass)
- latest release on Maven - links to the most recent publicly available version of the library: shows the GroupId (org.clojure), ArtifactId and Latest Version for use with Maven; to use the library with Leiningen, add a dependency of the form [org.clojure/ArtifactId "Latest Version"] to your project.clj file (e.g., [org.clojure/java.jdbc "0.1.4"])
- report bugs - links to the JIRA bug tracker for that library
This section aims to document how to migrate from "old" contrib to "new" contrib.
- Michael Fogus has a project bacwn on Github based on this library.
- fcase replaced by Clojure 1.3 clojure.core/condp. Other macros easily implemented using condp if desired.
- Migrated to clojure.repl and clojure.java.javadoc. show functionality similar to clojure.reflect/reflect. Any equivalents for these? expression-info, run, run*
- Migrated to clojure.set, except proper-subset? and proper-superset?, which are easily implemented using subset? and superset?
New Contrib Namespaces
This section lists new contrib namespaces that do not correspond to old contrib namespaces (as far as I can tell - Sean!) and is provided for completeness / documentation purposes.