Apache DeltaSpike Proposal

Abstract

Apache DeltaSpike is a collection of JSR-299 (CDI) Extensions for building applications on the Java SE and EE platforms.

Proposal

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.

Background

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.

Rationale

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.

Initial Goals

The initial goals of the Apache DeltaSpike project are to:

Current Status

The initial codebase for Apache DeltaSpike will be populated with mature code donations from project members, including JBoss Seam3, Apache MyFaces CODI and CDISource.

Meritocracy

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.

Community

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.

Core Developers

Alignment

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.

Known Risks

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

Documentation for the existing projects can be found as follows:

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.

Initial Source

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:

The existing Seam, MyFaces CODI and CDISource trademarks will be retained by their respective owners.

External Dependencies

The following external dependencies have been identified:

Required Resources

Mailing Lists

Version Control

It is proposed that the source code for the Apache DeltaSpike project be hosted in the Apache Git repository, under the following directory:

Issue Tracking

The following JIRA project would be required to track issues for the Apache DeltaSpike project:

Initial Committers

Affiliations

The following contributors are full time employees of Red Hat:

Sponsors

Champion

Nominated Mentors

Sponsoring Entity

Project Name

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.