lundak.org — Scrum • Java • Software • Craftsman You are here   Home   Projects   Curriculum Vitae   Thoughts   Downloads   About © 2007 Jiri Lundak

"Maps encourage boldness. They're like cryptic love letters. They make anything seem possible."
- Mark Jenkins, "To Timbuktu"

MetaworX Roadmap

The following paragraphs define the roadmap of the upcomming MetaworX releases. Expect this information to be updated and changed quite frequently. So check back for changes soon.

Ok, ok. No one starts an open source project with a 1.0 release. And the other important change in my thinking stems from XP and other such OS projects: Release often.

Sometimes I try to be a perfectionist and don't want to show my work before I am done with it. But I realize, that this is really counter-productive with an open source effort. I would like to leverage input from all of the good developers out there.

So...here I am. I plan to publish from now on progressive drops of code (on a monthly basis), but don't expect to have a working system before release 0.5. Too many are the changes I have in mind. I try to outline them in the following paragraphs.

0.1 - Nucleus Release (Planned for January 2004)

As the current incarnation of the framework still uses TopLink as O/R mapping framework and TopLink uses direct access to instance fields to populate model objects with values from the datastore, but Hibernate does not favor this approach and instead relies on getters/setters for attributes, I have to change some things. The current getters/setters for attributes contain generated logic for checking security upon access, plus validation logic, etc. Most of this code follows a certain pattern. With the arrival of AOP it is now possible to extract that code to aspects, that are dynamically applied when the public interface methods of a model object are accessed by external code. Should they instead be accessed from some framework code (like the O/R mapping layer) no action has to be taken.

Another area that needs attention and that is also affected by the AOP approach is the treatment of custom code, that can be added by a developer to model objects. Currently there were protected code sections, where a developer could put his code to be preserved in case of regeneration of the model objects. This is a fragile concept, that does not guarantee, that no code gets lost. These protected code sections do also make the generator code more complex, as the generator has to take care of them. As the current generator has tight integration with IBM's old VisualAge for Java IDE and is on its way to be ported or should I say rewritten for Eclipse, it would be much easier, when I have not to care about protected code sections.

This leads to the following changes/enhancements in this release:

  • Database support: Only MS SQL Server (for historical reasons)
  • O/R mapping support: Oracle TopLink (for historical reasons)
  • Moving accessor logic to aspects (using Nanning) and optional pre- and post-processing methods
  • The new JUnit tests will all run
  • Functioning query mechanism on existing (sample) model objects (also across relationships)
  • NOTE: You will NOT be able to use the generator to create new model objects in this release
0.2 - Hydrogen Release (Planned for February/March 2004)
  • Add MySQL Support
  • First release of generator/workbench as Eclipse plug-in
0.3 - Helium Release (Planned for March/April 2004)
  • Add Hibernate Support
  • Upgrade Tapestry to 3.0 (lots of things have changed since 1.6)
  • Power this site using the framework (as proof of concept)
Lithium Release
  • feature
Beryllium Release
  • feature
Boron Release
  • feature
Carbon Release
  • feature
Nitrogen Release
  • feature