I've been having a rethink of our approach to the IVY migration.

Pretty much all of our java dependencies are Cocoon dependencies. So why should we bother to manage them ourselves?

We should be able to just have a dependency on Cocoon and the blocks that we require and that is it. Why can't we do that?

We can't just have a dependency on Cocoon because we use a version built from SVN. This version is not SVN head, but is a past version of Cocoon. If it were SVN head we could use the snapshot repository to pull down the latest snapshot build of Cocoon and go from there.

So why don't we use SVN head?

Because SVN head has no crawler.

So, we have two choices for progression.

Continue with the path I have outlined for the IVY migration whereby we use our own local repo to hold the specific version of Cocoon that we know will work for us, or, we can use the move to ivy to force us to upgrade to Cocoon head (something we should probably do for the 0.8 release anyway).

The latter route will require us to build a crawler, but Thorsten has already started on that with the Droids lab.

I've tried setting it up with just a cocoon-core 2.2-snapshot dependency, there are a couple of unresolved dependencies, but I am sure these can be easily addressed.

The big advantage in going the latter route is that it will make future upgrades to Cocoon a simple case of running an ant task. The downside is that we will have to write a crawler (using the Droids lab code - which is largely based on the crawler from Nutch if I understand correctly).

The big advantage of the former route is that we will be able to make things work as they do now, in trunk, without any surprises from the Cocoon upgrade. The downside is that we have to manage all our own dependencies and will have to continue to build Cocoon independently.

So, should we continue with managing our own dependencies or should we jump the short term hurdle and get the ivy branch working with Cocoon 2.2 snapshots?

Ross