From: "Geir Magnusson Jr." <geirm@optonline.net>
Date: Tue Aug 5, 2003  11:41:18 AM America/New_York
To: general@incubator.apache.org
Subject: [PROPOSAL]  An Apache J2EE server project
Reply-To: general@incubator.apache.org

Proposal for an Apache J2EE server project
==========================================

05 Aug 2003 : Geir Magnusson Jr., James Strachan and Richard Monson-Haefel

Section 0 : Rationale
---------------------

The Java 2, Enterprise Edition (J2EE) platform is employed widely by
organizations implementing enterprise applications. It is commonly used in
business-to-consumer and most recently in Web service deployments.  Most of
the largest business organizations today have deployed applications on a
J2EE platform.

While the J2EE specification is implemented by a number of large and small
vendors, there is no open source J2EE container available with a BSD or
BSD-derived licence nor is there an open source project today that provides
a fully compliant implementation.  Verifiable compliance with the J2EE
specification is important to business because it ensures that applications
deployed by developers are portable and interoperable across J2EE providers.
As a result organizations large and small have felt compelled to pay
thousands of dollars to commercial vendors in order to deploy applications
based on J2EE compliant servers.

The Apache foundation supports several projects that implement pieces of the
J2EE platform such as Servlets, JSP, Tag Libraries, and a Web services
stack. However, Apache does not currently support a J2EE project.

The aim of the project is to produce a large and healthy community of J2EE
developers tasked with the development of an open source, certified J2EE
server which is ASF licensed and passes Sun's TCK reusing the best ASF/BSD
licensed code available today and adding new code to complete the J2EE
stack.


Section 0.1 : criteria
----------------------

We feel that this project has a good chance for success as the following
project aspects are carefully considered :

a) Meritocracy: The project will be meritocratic - the usual Apache
meritocracy rules would apply.

b) Community: The user community for this project is potentially massive.
The initial developer community for this project consists of developers from
Apache,  Castor, JBoss, mx4j, and OpenEJB projects. The aim is for this
community to grow considerably once this project goes public.

c) Core Developers: The initial developers are listed below and consist of
some existing Apache committers together with committers from Castor,
JBoss, mx4j  and OpenEJB.  We believe that as the project grows, the modular
nature of the J2EE stack will require steady expansion of the committer
group that is considered 'core' - thus providing a healthier, more robust
developer community.

d) Alignment: There is clear alignment with many existing Apache projects.
From Jakarta projects such as Tomcat, James and log4j initially as well as
possibly others along the way. J2EE now includes a web services stack and so
there will be some alignment with the WS project, Axis in particular, along
with the reuse of several XML projects. In addition the J2EE Server project
may reuse other ASF/BSD licensed code which is not currently hosted in
source form at Apache such as (at time of writing) mx4j, openjms and tyrex.

However we see the J2EE Server project as a separate project to existing
Apache projects, serving two primary roles

* integration of various existing and new code bases into a J2EE stack,
with those codebases existing both inside and outside of the project
* certification of the J2EE stack

Note that the J2EE server project can happily support competition within the
J2EE services stack (for example, offering choices for elements such as the
servlet engine like Tomcat or Jetty, or some new JTA implementation versus
Tyrex or some new JMS implementation versus OpenJMS etc).


Section 0.2 :  warning signs
----------------------------
We feel that this project has a good chance for success as the following
warning signs do not apply to the project we are proposing :

a) Orphaned products: This project is starting with a new code base together
with reusing lots of the currently available high quality J2EE open source
code out there which is ASF/BSD licensed.

b) Inexperience with open source: The initial community is made up of
existing Apache, Castor, JBoss, mx4j , and OpenEJB committers.

c) Homogeneous developers: The current list of committers represents
developers from various backgrounds and open source projects, employed by
various companies and based around the globe in the US, Europe, Asia and
Australia.  There will be no majority bloc, at least from the start.

d) Reliance on salaried developers: None of the initial developers are
currently paid to work on the J2EE project.

e) No ties to other Apache products: The J2EE Server project is
complementary to existing technologies at Apache. Indeed it will integrate
many of those technologies in an effort to provide a code base that can be
J2EE certified according to the JCP process.

f) A fascination with the Apache brand: The committers are interested in
developing a healthy open source community around an ASF/BSD licensed J2EE
certified server, whether Apache is the right place or not.  The aspects of
Apache that attract this effort are the experienced stewardship of open
source projects by the ASF, the non-profit status of the ASF for TCK
certification, and the existing Java community that has been a longstanding
part of the ASF.


Section 1 : scope of the project
--------------------------------

There are two main aspects to this Apache project :

* a complete J2EE certified server which is fully ASF/BSD licensed and
backed by a healthy open source community.

* to create a fully modular J2EE stack so that the Apache community can use
whichever parts of the J2EE stack they require separate from the J2EE server
project.


Section 2 : initial source from which the project is to be populated
--------------------------------------------------------------------

There are several potential initial contributions. Upon formation of the
project our first action will be an open, public call for contribution and
comment from the J2EE community.  Because of recent circumstances in the
J2EE OSS community, all code proposed for inclusion must be publicly
reviewed and open to public comment.


Section 3: identify the ASF resources to be created
----------------------------------------------------

Section 3.1 : mailing lists

* geronimo-dev
* geronimo-user


Section 3.2: CVS repositories

* geronimo


Section 3.3: Bugzilla

* geronimo

Though would there be an issue with using JIRA?


Section 4: identify the initial set of committers
-------------------------------------------------

The committers are listed below, along with the open source project(s) where
they also have commit privileges.

* Bruce Snyder (Castor JDO)
* Dain Sundstrom (JBoss)
* David Blevins (OpenEJB)
* David Jencks (JBoss)
* Geir Magnusson Jr. (Apache)
* Greg Wilkins (JBoss/Jetty)
* James Strachan (Apache)
* Jan Bartel (JBoss/Jetty)
* Jason Dillon (JBoss)
* Jeremy Boynes (JBoss)
* Jim Jagielski (Apache)
* Jules Golsnell (JBoss/Jetty)
* Richard Monson-Haefel (OpenEJB)
* Remigio Chirino  (JBoss)
* Simone Bordet (mx4j)


Section 5: identify apache sponsoring individual
------------------------------------------------

* Ceki Gülcü
* Geir Magnusson Jr.
* James Strachan
* Jim Jagielski


