Betwixt is an xml-object mapping component devised (originally) by James Strachan. It lives in Jakarta-Commons.

Contribute To The Betwixt Design!

It's only in alpha but already people are demanding that the design be improved. This refactoring should make the design easier to understand - and so make it easier for people to contribute. (And yes, it'll hopefully make the life of the existing committers that much easier as well (wink)


Documentation created by users, for users.

  • /FrequentlyAskedQuestions
  • /TipsAndHints
  • /CustomPropertySuppressionStrategyExampleUsingJava5Annotations

Road Map

For a long while now, work on Betwixt has proceeded on two separate branches. Some bug fixes and enhancements have been made on CVS HEAD whilst the refactoring of the reading code has proceeded on a REFACTORING branch. Betwixt has also suffered from having only a single buggy alpha release. Betwixt now has a number of users who have suffered from a lack of official release and from no real roadmap allowing them to plan for the future.

In some ways, this has been intentional. Betwixt has limited developer resources who probably couldn't cope with more attention. But this situation is not satisfactory and with the merger of the REFACTORING branch likely to happen sometime soon, this needs addressing.

The current code in CVS HEAD is mature, stable and used in a number of production environments though it has a number of design weaknesses that mean there are some bugs which cannot be fixed and features which cannot be added to that code base without moving to new designs which are not backwards compatible.

The old strategy of alpha releases does not really express the state of the codebase. Really, a series of 0.x releases better express the current state of Betwixt. The code is now stable and well tested but limited. It may be a long road towards a full 1.0 release but it's now clearer what the milestones should be along the way. It is also important for users in production environments to be able to use official ASF releases rather than than rolling their own snapshots.

A major aim of the REFACTORING work has been to made the design more expressive and modular, and therefore easier to work with safely. Hopefully this allow a larger development team to be assembled. There are a number of exciting developments such as schema generation and possible integration with start-from-schema engines on the horizon. So, if you've been hanging around on the sidelines, now's a good time to start contributing.

The Roadmap

  • A Betwixt 0.5 release will be made based on the code in CVS HEAD before the refactored read design is merged in. This will be a baseline release with warts-and-all.
  • A Betwixt 0.6 release will be made once the refactored read design has been merged into CVS HEAD. This will be a baseline release for this codebase. Point releases may be made as the enhancements which this design allows are implemented.
  • Betwixt 0.7 releases will feature abstracted interfaces for the descriptors and XMLBeanInfo generation. May also feature support for object pipelines.

Release Plans

General XML Mapping Topics

  • /ObjectPipelines
  • No labels