Ever Heard of Ant2, XDoclet2 or Maven2
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