Apache DeltaSpike Proposal
Apache DeltaSpike is a collection of JSR-299 (CDI) Extensions for building applications on the Java SE and EE platforms.
Apache DeltaSpike will consist of a number of portable CDI extensions that provide useful features for Java application developers. The goal of Apache DeltaSpike is to create a de-facto standard of extensions that is developed and maintained by the Java community, and to act as an incubator for features that may eventually become part of the various Java SE and EE-related specifications.
One of the most exciting inclusions of the Java EE6 specification is JSR-299, Contexts and Dependency Injection (CDI) for Java. CDI builds on other Java EE specifications by defining a contextual component model and typesafe dependency injection framework for managed beans. It also defines a SPI that allows developers to write portable “extensions” that can be used to modify the behaviour of the Java EE platform, by offering additional features not provided by the platform by default.
Apache DeltaSpike builds on this portable extensions SPI by providing baseline utilities and CDI Extensions which form the base of almost all CDI applications.
There presently exists a number of open source projects that provide extensions for CDI, such as Apache MyFaces CODI, JBoss Seam3 and CDISource. Apache DeltaSpike seeks to unify these efforts by creating an “industry standard” set of extensions, combining the best core features of these projects. The project also aims to provide a rich, JBoss Arquillian based (license: ALv2), test environment to ensure that DeltaSpike portably runs in all important CDI environments.
The initial goals of the Apache DeltaSpike project are to:
- Setup the governance structure of the project
- Receive code donations from contributing members
- Ensure all donated code is appropriately licensed under the Apache License
- Merge and rename code to reflect new project name
- Merge code where feature overlap exists
- Merge or produce documentation for all modules
- Provide simple examples demonstrating feature usage
- Produce release/s based on a schedule created by the PMC
- Attract contributions from the greater Java EE community and other Java EE development groups
The initial codebase for Apache DeltaSpike will be populated with mature code donations from project members, including JBoss Seam3, Apache MyFaces CODI and CDISource.
All contributors have a well established history in the open source community and are well aware of the meritocracy principles of the Apache Software Foundation.
Currently the Seam3 project is fortunate to receive the majority of its code contributions from its large community of users. Many of the modules that are contained in the Seam project are led by volunteers from the community, who have both direct commit access, and discretion over the direction of their modules.
Apache MyFaces CODI is a subproject of Apache MyFaces and thus all contributors are already familiar with the meritocracy principles.
The CDISource project has adopted the principles of meritocracy by the founding developers having control of different modules depending on their contribution to those modules.
The JBoss Seam, Apache MyFaces CODI and CDISource projects already have well established communities, consisting of many active users and contributors. One of the primary goals of the Apache DeltaSpike project is to unify this community, and by creating a project that is a “single source of truth” for CDI Extensions. By doing this, we hope to make the whole greater than the sum of its parts, i.e. to attract a much stronger community than that which currently exists across the separate projects. To this end, it is a goal of this project to attract contributors from the Java EE community in addition to those from the three projects already mentioned.
- Shane Bryzak (Red Hat)
- Jason Porter (Red Hat)
- Stuart Douglas (Red Hat)
- Jozef Hartinger (Red Hat)
- Brian Leathem (Red Hat)
- Ken Finnigan (Red Hat)
- Marius Bogoevici (Red Hat)
- Pete Muir (Red Hat)
- George Gastaldi (individual, ASF committer)
- John Ament (Independent contributor)
- Cody Lerum (Independent contributor)
- Antoine Sabot-Durand (Independent contributor)
- Pete Royle (Independent contributor)
- Mark Struberg (individual, ASF member)
- Gerhard Petracek (individual, ASF member)
- David Blevins (individual, ASF member)
- Matthias Wessendorf (individual, ASF member)
- Jakob Korherr (individual, ASF committer)
- Andy Gibson (Independent contributor)
- Rick Hightower (Independent contributor)
- Rob Williams (Independent contributor)
- Arne Limburg (individual, ASF committer)
The Apache DeltaSpike project is intended to be portable, and be fully compatible with any compliant Java EE6 container. To promote the adoption of this project, we believe that it is important that it remains free from corporate association and is perceived by the community to be vendor neutral. To this end, the Apache Software Foundation with its values of transparency and community makes it an excellent fit for this project, not to mention that one of the contributing members (Apache MyFaces CODI) is already an Apache project.
While many of the contributors to the Apache DeltaSpike project are volunteers, the initial effort of setting up the project and driving ongoing releases may fall to corporate-sponsored members. It is recognized that there may be a slight risk based on the dependence of salaried contributors, however it can safely be said that most if not all of these contributors began as community volunteers that recognized the merit of the project and began contributing as a result of their own passion.
Documentation for the existing projects can be found as follows:
- JBoss Seam - http://docs.jboss.org/seam/3/latest/reference/en-US/html/
- Apache MyFaces CODI - https://cwiki.apache.org/confluence/display/EXTCDI/Documentation
- CDISource - http://cdisource.org/site/
Documentation for the Apache DeltaSpike project would be created by combining and editing material from the above sources, in addition to the writing of new material where required.
Source code contributions for the Apache DeltaSpike project would be made from its member projects, and the initial goal would be to provide a common core extension which contains a number of features considered essential for building other extensions. Tests for this common core will be developed using the Arquillian integration testing framework, allowing the extension to be automatically tested extensively across various CDI implementations and EE servers in the interest of providing a stable foundation for building other extensions.
The ongoing goal of the project will be to gradually incorporate additional features as determined by the PPMC, extending on the foundation features provided by the common core.
Source and IP Submission Plan
The following resources will be moved to Apache infrastructure under the Apache DeltaSpike project name:
- Core JBoss Seam 3 codebase. Seam 3 is already licensed under the Apache License V2.
- Seam Core Reference Documentation
- Apache MyFaces CODI codebase
- Apache MyFaces CODI documentation
- CDISource codebase under the Apache License V2
The existing Seam, MyFaces CODI and CDISource trademarks will be retained by their respective owners.
The following external dependencies have been identified:
- Apache Maven - Java based build tool - Apache License 2.0, (non-runtime)
- Arquillian - Java EE integration testing framework - Apache License 2.0, (non-runtime_)_
- Shrinkwrap - Java deployment packaging - Apache License 2.0 (non-runtime)
- various Java EE API packages - all Apache License 2.0 (non-runtime)
It is proposed that the source code for the Apache DeltaSpike project be hosted in the Apache Git repository, under the following directory:
The following JIRA project would be required to track issues for the Apache DeltaSpike project:
- Shane Bryzak (sbryzak at gmail.com)
- Jason Porter (lightguard.jp at gmail.com)
- Stuart Douglas (stuart.w.douglas at gmail.com)
- Jozef Hartinger (jozefhartinger at gmail.com)
- Brian Leathem (bleathem at gmail.com)
- Ken Finnigan (ken at kenfinnigan.me)
- Marius Bogoevici (mariusb at redhat.com)
- George Gastaldi (gastaldi at apache dot org)
- John Ament (john.d.ament at gmail.com)
- Cody Lerum (cody.lerum at gmail.com)
- Antoine Sabot-Durand (antoine at sabot-durand.net)
- Pete Royle (pete at screamingcoder.com)
- Pete Muir (pmuir at redhat.com)
- Mark Struberg (struberg at apache dot org)
- Gerhard Petracek (gpetracek at apache dot org)
- David Blevins (dblevins at apache dot org)
- Matthias Wessendorf (matzew at apache dot org)
- Jakob Korherr (jakobk at apache dot org)
- Andy Gibson (contact at andygibson.net)
- Rick Hightower (richardhightower at gmail.com)
- Arne Limburg (individual, ASF committer)
The following contributors are full time employees of Red Hat:
- Shane Bryzak
- Jason Porter
- Stuart Douglas
- Jozef Hartinger
- Brian Leathem
- Ken Finnigan
- Marius Bogoevici
- Pete Muir
- Mark Struberg
- Mark Struberg
- Gerhard Petracek
- David Blevins
- Matthias Wessendorf
- Matt Benson
- Jim Jagielski
- Apache MyFaces PMC
While DeltaSpike is intended to be used as the project’s code name during the incubation process, it is intended that we will solicit suggestions from the greater community for a more suitable name before it becomes a top level project at Apache.