DSpace, Maven, Nanny Software

October 5, 2006

If you don’t know Maven, it’s kind of a build tool. At a very simple level you lay your projects out in a certain way, and it gives you a rich build solution with compilation, version tracking, unit testing, documentation suites and library / application deployment for free.

But Maven isn’t just a tool, it’s also a vision of best practise. Consequently it’s not in maven’s interests to support you if you want to step out of line, or disagree with their vision of “the right thing”. So whilst it’s extensible and it’s possible to route around some of the maven way, it’s usually more painful to bend maven to your will than it is to give in and go with the flow.

It sounds terrible, but is this kind of “Nanny Software” really such a bad thing in the right place? At the moment in the Unilever centre we have very little standardization in project layouts and build methods. A shell script here, an ant file there. I’m keen to use promote the use of maven here partly because standardizing will make collaboration between projects much easier and should help projects retain their usefulness if they end up being mothballed for a while. It won’t hurt the standardization effort that maven will fight back a little if people try to get creative with their build process.

So how does all this relate to DSpace?

To me, DSpace 1.0 (and 1.1 to an extent) held to the same philosophy of best practise embodied in software. The adoption of the software helped the adoption of standard practise, but you hit the sides pretty quickly if you wanted to do anything outside HP/MIT’s idea of best practise. This has all changed as the development community has grown. Flexibility has become the watch-word.

The upcoming technical review a great opportunity to at least discuss some fundamentally important decisions: Can and should DSpace have the flexibility to be all things to all people (like the Eclipse RCP)? Alternatively, should DSpace be primarily a best practise vehicle? If so, can the DSpace Federation come up with a single expression of best practise?

3 Responses to “DSpace, Maven, Nanny Software”

  1. grahamtriggs Says:

    Ahh, Maven… I’ve been using it for about three years – since before it was a 1.0 relese, and currently trying to push through a Maven 2 adoption.

    Yes, the Maven distribution embodies a vision of best practise, but it’s a fine line to draw. If you wanted your Java compile to do something radically different, you could replace the plugin. Whether that radical difference is at odds with the core principles will determine how well it collaborates with other plugins.

    This actually makes Maven a lot more like the Eclipse RCP than you suggest – the use of plugins is largely analogous. The encouragement to stick to Maven’s principles comes from the quality and value of the plugins that are already available, which all rely on the core principles for collaboration.

    Can that educate the development of DSpace? Well, yes it can. Flexibility is important – choice of deployment platform, handling of additional data formats, the ways in which you can query, retrieve and be informed by the content of the repository – all things that may be installation specific. But none of which need to change the principles of how you collect, structure, manage that data.

    DSpace could be a core vision of how to organise the repository, implemented through a standard interface (ie. JCR), and a contract for collaboration between units of functionality (submission, workflow, browse, search, etc.). You have flexibility where it counts, but the more you push against the central core of what DSpace is, the more responsibility you have to take on yourself.

  2. ojd20 Says:

    Thanks, Graham, I think that’s a valuable perspective. It’s interesting to note that whilst the two frameworks are technically similar, using them and working with them feels so different.

    A weakness in distributing a plugin-centric framework is dealing with quality and support – users often can’t distinguish between the framework, the core components and the experimental plugin someone kicked out in an afternoon.

    The answer, perhaps, is to have a distribution approach (c.f. Callisto, Debian) so people who install / administer have some kind of knowledge of the maturity of what they’re taking on. I have a feeling that the details of how this is organized and how the community interract with it would be crucial to its success.

  3. grahamtriggs Says:

    Yep, they do feel different. I suspect that this comes down to the scope of what is defined at the core, and the typical usage (having a single core use means that all plugins tend to support that, there isn’t the temptation to make something – or a bit of something – more generally useful).

    How aware users are of the distinction between core components and experimental plugins depends on how you choose to announce (or not) a plugin. It normal circumstances, it’s no bad thing that users can’t distinguish between core and addins – it would suggest that the integration is seamless and a better overall user experience. The key question is who supports the users, and how well can they make the distinction, given that it may be crucial to providing support.

    A distribution approach would be useful – it’s not necessarily a knowledge of maturity, but to know that a collection of components have been tested (and configured) to all work together is important. And this isn’t that far away from what has already been suggested for DSpace – although the focus has been on modularisation rather than a collection of specific versions of modules. But then if you look at the Linux distribution model, then modules of a specific release are being updated all the time. (On that basis, maybe we should be looking at a double versioning scheme for DSpace modules? A platform version, and a module version.)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: