Proposal for new project Beehive
17 May 2004, Cliff Schmidt (cliff.schmidt at bea dot com) (updated 14 July 2004 with latest resource requests)
Beehive is an extensible Java application framework with an integrated metadata-driven programming model for web services, web applications, and resource access. The framework leverages the latest innovations in the forthcoming JDK 1.5, particularly JSR 175 metadata annotations. It currently builds on key Apache projects such as Tomcat, Struts, and Axis; we are also looking at integration with projects such as Maven and Portals.
There is a strong need for a cohesive, easy-to-use programming model for building J2EE applications. Developers new to Java are forced to learn a myriad of APIs just to build simple applications; advanced J2EE developers are forced to write tedious plumbing code; and tools authors are limited in what they can do to simplify the experience due to the underlying complexity.
The Beehive project will provide a consistent, abstract, and easily toolable programming model, providing a way for developers to more productively build applications leveraging the latest technology provided by JDK 1.5. We expect this project will attract new users to a simpler way to build enterprise Java applications, while also attracting experienced J2EE programmers with a model that saves them from writing the same J2EE plumbing code over and over again. BEA's WebLogic Workshop developer community (see the "Community" section below) will provide a base for the Beehive community. We are also hoping the innovative nature of this project will attract a strong developer community within Apache.
We believe the optimal structure for this work would be a Top Level Project with three subprojects. While this proposal focuses on a framework consisting of these three subprojects, it is expected that the Apache community will come up with additional innovative ideas that will evolve into future subprojects. The currently planned components include:
Controls -- The Control architecture is a lightweight component framework based upon annotated JavaBeans, exposing a simple and consistent client model for accessing a variety of J2EE resource types. The framework provides a variety of functions including: JavaBean-based client access, configuration through JSR-175 metadata and external configuration data, automatic resource management, context services, and an extensible authoring model for creating new Control types.
NetUI - NetUI Page Flow is a web application framework based on Apache Struts with an easy to use, single-file programming model based on JSR-175 metadata. It builds on the core Struts separation of model/view/controller elements, and adds features such as automatic state management and first-class integration with Controls, XMLBeans, and JavaServer Faces.
Metadata for Java Web Services This component is an implementation of the JSR-181 specification and is a key piece of the Beehive framework. JSR 181 uses JSR-175 metadata annotations in Java methods and classes to easily build Web services.
We plan to do everything possible to encourage an environment that supports a meritocracy. One of the lessons that the XMLBeans committers 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.
BEA has been building a community around predecessors to this framework for the last two years. There is currently an active newsgroup that should help us build a new community at Apache. Several of our committers (including non-BEA people) are already actively involved with this user community. Its success has also been enabled by solid documentation and sample code (see http://edocs.bea.com/workshop/docs81/doc/en/workshop/guide/netui/guide/navGuidetoBuildingWebApplications.html), including code samples provided by the user community (see http://dev2dev.bea.com/code/wlw.jsp). While this isn't quite the same as running an open source community, we believe it gives us a strong base to build upon.
Half of the initial committers are key members of BEA's development, test, and project management team. The rest are non-BEA 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. Five of them have been committers on other Apache projects.
The initial code base is targeted to run within Tomcat, but the goal is to allow the framework to run on any compliant Servlet or J2EE container. The Web services component, based on JSR-181, will leverage Axis. The NetUI component builds on top of Struts. The underlying Controls component framework uses Velocity. There are other projects that we will need to work with, such as the Portals and Maven projects.
(0.2) warning signs
The framework being proposed is an evolution of BEA's WebLogic Workshop framework, which has been getting very positive press and customer feedback, including several recent industry awards (including awards from PC Magazine, CRN Test Center, and Java Development Journal's "Best J2EE Application Development Framework" award). Based on this feedback, BEA only wishes to invest further in the development and support of this technology.
Inexperience with open source:
Many of the committers have experience working on open source projects. Five 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., Europe, and Asia. They are experienced with working in a distributed environment.
Reliance on salaried developers:
Approximately 2/3 of the developers are paid by their employers to contribute to this project; however, this includes four independent employers. The remaining 1/3 of the developers are individual volunteers.
No ties to other Apache products:
As described in the Alignment section, this framework already has ties to many Apache products. The framework is also already license-compatible with Apache products; in fact, it is currently licensed under the Apache License 2.0.
A fascination with the Apache brand:
The committers are intent on developing a strong open source community around the Beehive framework 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. BEA is committed to supporting the future open source development of Beehive and to distributing the result of that development in future releases of its Weblogic product line.
(1) scope of the subprojects
See detailed information provided at:
(2) identify the initial source from which the subproject is to be populated
All code is already licensed under the Apache License 2.0.
(3) identify the ASF resources to be created
(3.1) mailing list(s)
- beehive-ppmc (with moderated subscriptions)
(3.2) Subversion or CVS repositories
- Beehive (BEEHIVE)
(4) identify the initial set of committers
- Changshin Lee, Tmax Soft (Axis committer)
- Chris Judson, E2E Consulting
- Cliff Schmidt, BEA (XMLBeans committer)
- Craig Crutcher
- Daryl Olander, BEA
- Davanum Srinivas (Axis committer)
- David Bau (XMLBeans committer)
- David Karr (Struts committer)
- David Read, BEA
- Eddie O'Neil, BEA
- Heather Stephens, BEA
- James Song, BEA
- Jongjin Choi, Tmax Soft
- Ken Tam, BEA
- Kevin O'Connor, Documentum
- Kyle Marvin, BEA
Michael Clark, SandCherry
- Michael Merz, BEA
- Rich Feit, BEA
Rotan Hanrahan, MobileAware
- Steve Hanson, BEA
- Scott Ryan
- Steve Tocco, BEA
- Vince Salvato, E2E Consulting
(5) identify apache sponsoring individual
Craig McClanahan, Champion and Mentor for the project, (as defined in http://incubator.apache.org/incubation/Roles_and_Responsibilities.html)