Enterprise Modules Project (Gemini) Proposal
The Enterprise Modules Project is a proposed open source project under the Eclipse Runtime Project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Gemini Eclipse Forum or eclipse.gemini newsgroup.
This proposal recommends the creation of a new project called "Enterprise Modules", nicknamed Gemini, to provide a home for subprojects that integrate existing Java enterprise technologies into module-based platforms, and/or that implement enterprise specifications on module-based platforms. Gemini will be a parent ("container project" as defined by the Eclipse Development Process) for several subprojects ("operating projects" as defined by the Eclipse Development Process) that provide the specific implementations/integrations. Gemini will itself be a subproject of the Eclipse Runtime Project and will strive to leverage functionality of existing projects. We encourage and request additional participation and input from any and all interested parties in the Eclipse community.
Enterprise applications are often complex, involving multiple layers and many actors. Even though every application has a different purpose and usage, there are a number of features and behavioral requirements in the underlying infrastructure that are common among many of those seemingly dissimilar applications. For a long time, not only did developers need to create the vertical business logic of the application, but they also had to create the platform plumbing on which the application could run. Enterprise Java standards made great strides in defining specifications describing how these layers could be implemented, exported and used. They have since become the assumed and ubiquitous underpinnings of the majority of enterprise Java systems.
OSGi started as a technology to enable embedded devices and appliances to operate and communicate through services in dynamic environments. The devices could come online and offline, were decoupled from each other, and had independent life cycles. The framework that emerged to host and support these features turned out to be beneficial to other applications and software layers as well. Recently, OSGi and the module-based design principles that it espouses and promotes, have begun gaining popularity amongst enterprise developers as well. The natural evolution was to start creating standards for integrating popular enterprise technologies in module-based systems, and then provide implementations for consumption by the general population.
The scope of the Gemini project is two-fold:
- Integration of existing Java enterprise technologies into module-based platforms; and
- Implementation of enterprise specifications for module-based platforms
The project focuses on standards developed by the OSGi Enterprise Expert Group. It may later extend to include technology and standards for other module-based systems. Modularity within a standardised component framework is the key binding principle of Gemini projects.
The project is not concerned with creating new enterprise standards, nor with creating a new variety of full-featured enterprise container.
The primary goal of the Gemini project is to provide access to standard enterprise technology implementations within a modular framework. The OSGi Alliance has developed specifications for the application and usage of many of the enterprise technologies within OSGi. These specifications describe how vendors should implement and interoperate with existing services, and how the OSGi modularity, life cycle, and service models should be applied with respect to those technologies. Gemini will provide implementations of many of these specifications, including:
- RFC 66 — Web Container
- RFC 98 — Transactions
- RFC 122 — Database Access
- RFC 124 — Blueprint Services
- RFC 139 — JMX Integration
- RFC 142 — JNDI Integration
- RFC 143 — JPA Integration
- RFC 146 — JCA Connector Integration
Each of the specifications will be hosted as a separate operating project within the Gemini parent project. The scope for each of these projects is limited to providing an implementation of the corresponding specification and integration with related technology. Each operating project will have its own separate leadership, committers, build process, release schedule, developer mailing list, and community newsgroups/forums. Subprojects may individually opt to participate in the annual release train. They may be released separately or together, and will for the most part be executable individually or as part of a group.
Each subproject may evolve or be developed as the community, and those involved with the project, see fit. However, each will continue to share the Gemini prime directive -- the provision of existing enterprise-level standards on a modular framework.
The project will deliver standalone implementations of the RFCs where possible. In most cases the implementation will be the actual OSGi Reference Implementation for the specification it implements.
The implementations will be consumable as "modules" (or OSGi bundles), installable on one or more frameworks. They will be largely independent of each other, or they may be combined to provide a suite of services for use in an existing enterprise platform.
Project teams will strive to openly and transparently collaborate with other Eclipse projects doing related work. Where overlap between projects occur, Gemini subproject committers will work to either (a) resolve the overlap to mutual benefit, or (b) make clear for the community the distinctions between the corresponding projects. Gemini subprojects will leverage existing Eclipse technology as appropriate.
Multiple companies have agreed to be cooperative committers on this project at the outset. These companies are agreeing to initially contribute IP and continue to add to and maintain this IP as the project develops. The companies that have signed up to commit are:
- SpringSource (VMware)
The following individuals are committers to the project:
- Adrian Colyer — SpringSource
- Andy Piper — Oracle
- Andy Wilkinson — SpringSource
- Ben Hale — SpringSource
- Bob Nettleton — Oracle
- Bryan Atsatt — Oracle
- Christopher Frost — SpringSource
- Costin Leau — SpringSource
- Doug Clarke — Oracle
- Glyn Normington — SpringSource
- Gordon Yorke — Oracle
- Hal Hildebrand — Oracle
- J.J. Snyder — Oracle
- Jeff Trent — Oracle
- Mike Keith — Oracle (Project lead)
- Peter Krogh — Oracle
- Rob Harrop — SpringSource
- Shaun Smith — Oracle
- Steve Powell — SpringSource
- Tom Ware — Oracle
The subprojects will be created with the following initial IP components and donating companies:
- Blueprint Service Implementation — SpringSource
- Web Container Integration code — SpringSource
- JPA Integration code for EclipseLink — Oracle
- Implementation of JMX Mbeans and composite data types — Oracle
- Derby JDBC Service Implementation — Oracle
- JNDI Service Integration code — Oracle
The following Architecture Council members will mentor this project.
- Wayne Beaton
- Adrian Colyer
- Doug Clarke
The following projects or companies have expressed an interest in this project:
- Eclipse Communication Framework (ECF)
- Red Hat
- Werner Keil
We also believe that there will be some opportunities to collaborate with the Jetty project.
The first milestone will be to get the IP code contributions accepted and approved and the project provisioned. Once it is active, we expect the project to progress and evolve according to the expectations of its developers and users. The release schedule will align with the development and availability of the coincident OSGi specifications.
Changes to this document
23-Nov-2009: Changed wording (but not meaning) in the scope section.