Proposal for new project JDO
19 Nov 2004, Craig Russell (craig dot russell at sun dot com) (updated 23 Nov 2004)
Java Data Objects (JDO) is being proposed as a sub-project within the DB top-level project.
JDO is an interface-based domain-object-to-database programming model developed as a standard extension of Java under the Java Community Process. It separates persistence programming into two different areas: the domain object model and the persistence interface. The domain object model has no references to the persistence interface; and the persistence interface has no references to the domain object model. Application code uses the persistence interface to query, create, and delete persistent instances, and delegates business logic to domain code. This separation of concerns allows independent development of domain objects that represent database entities and application persistence code that interacts with the JDO interface.
JDO is designed for programmers who focus on their object model and the object view of data. Interfaces are provided that allow users to manage data stored in the data store without programming to any database-specific interfaces. The JDO query language is based on Java, and the protocols for managing data abstract such notions as transactional cache, transaction initiation and completion, and data creation, deletion, and update. Applications can be developed without any database-specific code and can be migrated among JDO implementations.
Currently, the JDO 1.0 final release specification is available for download from the Java Specification Request 12 web site under a standard Sun Specification License. The Reference Implementation is based on a btree file system and does not support relational databases for object storage, and is licensed under Sun's Sun Community Source License. The Technology Compatibility Kit is based on JavaTest, a proprietary test framework developed by Sun, and is licensed bundled with a support agreement.
JDO 2.0 is under development as Java Specification Request 243 and is in Early Draft status. The jar files, Reference Implementation, and Technology Compatibility Kit have not yet been developed.
The plan is to migrate the existing JDO 1.0 code base, including the API, RI, and TCK to Apache. Subsequently, development on JDO 2.0 will commence, using the JDO 1.0 code as a starting point. The API and TCK will be implemented entirely as Apache sub-projects. The licenses will be changed to be Apache licenses.
The JDO 2.0 Reference Implementation will be developed outside Apache (in SourceForge under the JPOX project). The license will be Apache 2.0 from the beginning.
Subsequently, we will attempt to integrate with the persistence engine currently under development for Geronimo EJB. This engine, known as Tranql, will be investigated as the common persistence engine for both EJB and JDO in the J2EE 1.5 timeframe. The binding to Tranql will be done as a separate sub-project in the Apache JDO project.
We plan to do everything possible to encourage an environment that supports a meritocracy. One of the lessons that the JDO experts have learned is that meritocracies don't just evolve from good intentions; they require actively asking the community for help, listing/specifying the work that needs to be done, and keeping track of and encouraging members of the community who make any contributions. The committer list for this proposal includes people who will specifically be responsible for doing the work necessary to foster a meritocracy.
From the inception of the JDO expert group in 1999, expertise has been solicited from the community, which has directed the evolution of the API. There is already a strong base of persistence expertise, and a community of users and vendors who regularly use such forums as JDOCentral. This project should help us build a new community at Apache.
Half of the initial committers are key members of Sun's JDO development, test, and project management team. The rest are non-Sun developers who have had significant experience with the framework or the technologies it is built upon. Some of these committers are contributing to this project on behalf of their employer, some of them are self-employed consultants, and some of them are just contributing as individuals. Three of them have been committers on other Apache projects.
The initial code base is targeted to run both standalone (as J2SE clients) and within Tomcat and Geronimo, but the goal is to allow the framework to run on any J2EE compliant Servlet or container, or other containers such as Spring. JDO 1.0 has been integrated with many web and application server containers, and we expect that JDO 2.0 will be even easier to integrate.
JDO requires a persistent store in which to save data, and the most popular data stores are relational databases. Derby is a sub-project of the DB group, and as a sister project, will be the “first and best” integration with JDO. The combination of JDO and Derby is a full featured, easy to use object-relational mapping and database.
(0.2) warning signs
JDO has been developed as a technology under a form of open source, Sun Community Source License. The natural evolution of the code is to become fully open source with a non-restrictive Apache license.
Inexperience with open source:
Many of the committers have experience working on open source projects. Three of them have experience as committers on other Apache projects.
The current list of committers includes developers from several different companies plus many independent volunteers. The committers are geographically distributed across the U.S., and Europe. They are experienced with working in a distributed environment.
Reliance on salaried developers:
Approximately 3/5 of the developers are paid by their employers to contribute to this project; however, this includes three independent employers. The remaining 2/5 of the developers are individual volunteers.
No ties to other Apache products:
As described in the Alignment section, JDO already has ties to many Apache projects, including Geronimo and Derby.
A fascination with the Apache brand:
The committers are intent on developing a strong open source community around JDO whether Apache is the right place or not; however, we believe that this project's current use of Apache products and potential for future synergies make Apache the ideal host community. Sun is committed to supporting the future open source development of JDO.
(1) scope of the subprojects
There are six initial subprojects envisioned:
JDO 1.0 API
JDO 1.0 Reference Implementation
JDO 1.0 Technology Compatibility Kit
JDO 2.0 API
JDO 2.0 Technology Compatibility Kit
JDO 2.0 Geronimo integration
(2) identify the initial source from which the subproject is to be populated
The source for JDO 1.0 currently exists in the Sun JDO repository. It is being relicensed, repackaged, and reimplemented to avoid use of closed source Sun technologies (the TCK currently depends on JavaTest, a proprietary technology that is being replaced by JUnit). The source for JDO 2.0 has not yet been developed except in prototype form by expert group members.
The license for the JDO 1.0 API, the JDO 1.0 RI, and JDO 2.0 API will be the Apache 2.0 JSR license.
The license for the JDO 1.0 TCK and JDO 2.0 TCK will be the Apache 2.0 TCK license.
The license for the JDO 2.0 Geronimo integration will be the Apache 2.0 license.
(3) identify the ASF resources to be created
(3.1) mailing list(s)
jdo-ppmc (with moderated subscriptions)
(3.2) Subversion repository
(4) identify the initial set of committers
Abe White, SolarMetric, JDO expert group member
Brian McCallister, OJB committer
Craig Russell, Sun, JDO Specification Lead
Dain Sundstrom, GlueCode, Geronimo committer
Erik Bengtson, JPOX committer
Geir Magnusson, GlueCode, Geronimo committer
Michael Bouschen, tech@spree, JDO expert group member
Michelle Caisse, Sun, JDO TCK developer
Patrick Linskey, SolarMetric, JDO expert group member
Victor Kirkebo, Sun, JDO TCK developer
(5) identify apache sponsoring individual
Geir Magnusson, Champion and Mentor for the project, (as defined in http://incubator.apache.org/incubation/Roles_and_Responsibilities.html)
send_page = 0.203 total = 0.219