The Source for Java Technology Collaboration
User: Password:



Andreas Schaefer

Andreas Schaefer's Blog

Ever Heard of Ant2, XDoclet2 or Maven2

Posted by schaefa on December 09, 2004 at 03:09 PM | Comments (4)

Lately I was made to look into Maven 2 and started wondering why so many complete rewrites of popular open-source projects never make it. In my view it comes down to the resistance of people to changes which has nothing to do with software development at all. In case you do not believe me try to explain why most PC users still are using Windows with all its problems instead of switching to Linux that became a real alternative to Windows. Now you may ask why did the people start using the first version of these projects if they do not like to change. My answer is that they did not until the pain became so strong that they were willing to give up their comfort zone and tried something new. From then on they waited again until the pain increased to a level they had to leave the comfort zone again. Of course, they could only leave when an alternative was available but then the acceptance would be overwhelming like with Maven.

The success of the first version of such projects is the problem of the successor. First they stand in the shadow of the original project and have problems to get attention from the developer and user community. In order to get the attention they need to have a lot of new features and improvements which, on the other hand, do backfire because we, the users, are used to the original version and tend to stay with what we know than chartering unknown territory. In turn that delays the development of the second version that now also has to keep up with the development of the original version. On the other hand they cannot completely change the project otherwise they would drive off many users of the original version jeopardizing their acceptance.

For example in Maven the most important feature to me are the plugins and that they are written in a scripting language (Jelly). This makes it quite easy to figure out what a plugin is doing, how I can use it and I am able to change it easily when necessary even if this is just debugging. Now in Maven 2 they drop the Jelly plugins replacing them with Java plugins that are faster but harder to read, debug or change. I would not care that much if I did not have seen this as the major problem of XDoclet. There they used an XML file to defined the XML deployment descriptors using special XML tags, an early version of Jelly, and their tag handlers are Java classes making it hard understand what is going on, harder to debug and very difficult to change. This is one of the reasons why the XDoclet 1.2 release was postponed over and over again.

Therefore I will not change to Maven 2 because Maven is still a very active project, it is easy and flexible and I still fight to replace many Ant projects with Maven.

In case a rewrite takes to long to be accomplished any other project solving the problems will take advantage of that and become a success early on like Maven as replacement of Ant. My conclusion is that it is maybe better to start all over again instead of trying to rewrite such a project. In order to be successful the project need to relieve users of their pain and therefore has to wait for a considerable amount of time until the initial euphoria is replaced with the agony of the daily grind. It is maybe better to focus on improving the original version until it becomes mainstream before starting with a new project.

Happy coding – Andy Schaefer


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • I'd be interested to know your sources for this information. Maven2 has not at all stalled, but its profile is being kept low - it will only be released when it is better than Maven 1.x.

    Maven 1.x is still being developed as you say, and much of the development actually crosses both platforms. Most of the changes in 1.1 will come about from work already done on 2.0.

    As for Java plugins shouldn't be harder to read, debug or change for Java developers. Having said that, Maven2 plans to support several scripting languages for plugins.

    Glad you like Maven!

    Posted by: brettporter on December 09, 2004 at 05:55 PM

  • Might also be a matter of how refactored/simple/designed the code is. If you can make a major architectural/metaphor change, and not require many changes to your existing code (client) base it seems people could fork rather than rewrite (but at that point why not keep it in with strategy or something...). I think there is some pain level on making major architectural change that once the thought of working on a green field project.... *drool*

    Posted by: emeade on December 09, 2004 at 06:23 PM

  • Hi Brett, I apoligize if I led to the conclusion that Maven2 has stalled and that is for sure not the case. Nevertheless Maven2 has a taunting task ahead to fight against developers' resistance to changes as well as the overall good quality of Maven. So Maven2 has not failed but also has not succeeded yet.
    The goal of this blog was more to talk about the problems of a successor of successful open-source projects and that they often fail due to the high demands put on them to be better, faster and still somewhat compatible with the original project.
    I am still wondering how Maven2's plugin can be easy to use, read and change when they are compiled Java classes but maybe we should move this discussion to the developer's mailing list.
    Have fun - Andy

    Posted by: schaefa on December 09, 2004 at 07:48 PM

  • Amazing, also, is how many people re-invent the wheel, or re-invent the thinking, or re-ask the same questions. This "version 2, complete rewrite" problem has been explained many years ago. Just take a look at (according to some "the best book on computer engineering"): The Mythical Man-Month: Essays on Software Engineering. It's explained why most "version 2" fail...
    Cheers - Vincent

    Posted by: vincentkeunen on December 12, 2004 at 09:18 AM





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds