The Adempiere Next Generation (TANG)
I have been part of Adempiere community since November 2006. I did not have any Compiere experience when I join in. Since day one I have been impressed about the amount of knowledge in this bazaar. Real power of the Adempiere is in community which shares ideas and information.
Adempiere has great set of features things under the hood does not look equally impressive for new developers joining in.
Because Compiere were pioneer of its time it had to make own implementations for object-relational mapping, dynamic user interface, authorization, transaction management, business process management and many others. Today we have many open source implementation for those needs. Debugging, maintaining and developing own implementations of those core services is slowing down the development and making learning curve steeper for new developers.
Birth of Tang project
In December 2006 I read many books about history and ideology of the Open Source movement. One thing kept popping up all the time: Most successful OS projects have very modular structure. Those successful OS projects that do not have modular structure are so small that can be maintained by small group of people.
Since Compiere is mainly made by two people it had no need for modularity. Later on when Compiere grew up others were willing to contribute more, but core developers were too afraid that other contributors would destabilize the code. In a way lack of modularity made Adempiere to exists.
I think that modularity of the OS software has four dimensions:
- Modularity allows development of new features without destabilizing the whole structure.
- It is easier to join the project and start contributing when something useful
- can be submitted without thorough knowledge of the whole code base.
- Modularity allows development of the controversial features without flamewars.
- Also community members which have difficulties to get along with each other
- can work in same projects without constant conflicts.
- Modular software provides more business models for companies around the
- core project. Customizing and maintaining proprietary extension is cheaper
- with modular structure.
Before Christmas 2006 I became aware of some security issues  in the Adempiere. I started to think that maybe revolution would be better and less frustrating way than evolution. I decided to raise some waves  using my skills of being polite and diplomatic.
What has happened so far
At beginning of year 2007 I got subversion branch and mailing list for TANG. Original plan were just take current code and modify it to use Hibernate persistence, JTA transactions, EJB3 session beans, and webservices. I was planning to just sit down and start coding.
Soon it became evident that just replicating current structure with new libraries is not going to be enough. We need to be prepared for handling fast growing and diverse community without constant arguments about which direction Adempiere is moving.
So I end up spending three months just reading different JSR's, W3C recommendations, and documentations of different OS products. During that time I did got many good suggestion from others. Typical pattern were that I first turned those suggestions down in very impolite way. Just to find out couple weeks later that I had been totally wrong.
Many times during those three months I have formed strong opinions about which is the right way to proceed. And usually those opinions have conflicted with each other. At least two times I decided to give up the whole TANG thing.
Finally after three months of brainstorming I thought (once again) that now I have good picture of what Tang is going to look a like. I finally started to document my ideas (should done that for long time ago) under topic: Tang Berlin 2007 Proposal. I was happy about myself until I were forced (by Hengsin and Colin) to take better look at Osgi.
Osgi seems to be the final piece that makes TANG to be mostly collection of java POJO classes and xml files. I were also forced to review my stance to Spring Framework since it provides Osgi out of the box.
What next ?
I will rewrite my Berlin proposal to include Osgi and Spring framework. There surely will be some discussion about proposal on irc, tang mailing list and wiki talk pages. In Berlin I will have discussions with people attending if TANG could become 'official' roadmap for Adempiere long term development.
Many Adempiere developers would like to proceed by taking small steps with current code base instead of total rewrite. Truth is that nobody knows for sure which way is better. But maybe we could learn something about Mozilla / Firefox case. Old Mozilla is still developed and many people use it. Writing Firefox from scratch were long and painful process but it did not matter so much since people could use Mozilla at mean time.
People developing current trunk would not have to worry about radical changes since TANG would be on its way. We could keep stable version really stable and not to try modify it to use JPA or session beans. And those companies that do not need new features in TANG can continue using current branch years from now.