I am trying to prepare clojure-contrib for future development and
releases. What appears below is a proposal, for feedback and
suggestions from clojure-contrib committers. -S
BLOCKERS
========================================
Currently I am blocked by a failing test in clojure.contrib.logging,
which you can see here:
http://build.clojure.org/job/clojure-contrib/190/org.clojure.contrib$logging/console
I can't reproduce this failure on my machine.
clojure-contrib module versioning
========================================
All modules and functions which were deprecated in 1.2.0 have been
removed from clojure-contrib on the master branch. Thanks to Ben
Smith-Mannschott for fixing all the breakages.
The first release of modularized clojure-contrib will have all modules
at version "1.3.0". From that point forward, individual modules may
evolve and release new versions independently.
clojure-contrib version numbers will no longer correspond to Clojure
version numbers.
clojure-contrib module deployment
========================================
SNAPSHOT releases of modules will be automatically deployed to
build.clojure.org/snapshots by Hudson.
Stable (i.e., non-SNAPSHOT) releases of modules should be deployed to
build.clojure.org/releases but I don't yet know how to make this
happen.
clojure-contrib dependencies on Clojure
========================================
Every clojure-contrib module inherits configuration and dependencies
from the "parent" module. The parent module declares a dependency on
Clojure versions "[1.0.0,2.0.0)". This means "any version greater
than or equal to 1.0.0 but less than 2.0.0".
Individual sub-modules may override the Clojure dependency with
stricter version constraints.
clojure-contrib AOT-compilation
========================================
Only 4 modules require AOT-compilation: condition, fnmap, jmx, and
repl-ln.
By default, the parent module configuration disables all AOT-
compilation. This can be overridden on a per-module basis, see
http://github.com/clojure/clojure-contrib/blob/master/modules/condition/pom.xml#L26
for an example of how to enable AOT-compilation of specific
namespaces.
Unfortunately, AOT-compilation is still indiscriminately transitive.
This is slated to be fixed in a future release, see
https://www.assembla.com/spaces/clojure/tickets/322
This means that any dependencies of an AOT-compiled namespace will be
included in the compiled JAR for that module.
For now, clojure-contrib modules which require AOT-compilation *must*
declare a dependency on one specific version of Clojure, because the
compiled classes will be incompatible with any version of Clojure
other than the one they were compiled with.