BeanValidation

Abstract

The BeanValidation project will deliver an implementation of the Bean Validation Specfication (JSR303)

Proposal

The initial BeanValidation codebase will use the Agimatec Validation source, which is an implementation of the Bean Validation Specfication (JSR303).

Although the destination of the podling is not fixed, the idea is that it will graduate to Apache Commons and replace the existing Validator 1.x component as a new 2.0 codebase.

Background

Agimatec Validation has been developed by Agimatec Gmbh and is about 85% complete towards implementing the JSR303 specification. The Agimatec-Validation project is currently hosted on Google Code and is ASL 2.0 licensed. Agimatec has no intention to complete or maintain the implementation but has given the lead developer permission to continue working on the project on his own time.

A number of existing Apache projects (Geronimo, OpenJPA, MyFaces, OpenEJB, Commons) are interested in an implementation of the Bean Validation specification and Donald Woods suggested adopting the Agimatec Validation code rather than starting from scratch.

Rationale

There is currently no Apache project focused on providing a JSR-303 implementation. The existing Commons Validator 1.x project codebase does not include support for Java 5 annotations and predates the JSR-303 specification effort. By using the Agimatec-Validation code, we can bootstrap the effort to create a Validator 2 release and focus on polishing/enhancing the code, certification activities and integration and support of other Apache projects.

Current Status

Agimatec Validation and is about 95% complete towards implementing the JSR303 specification.

An SGA for the Agimatec Validation has been received and on file from Agimatec Gmbh.

Meritocracy

As a majority of the initial project members are existing ASF committers, we recognize the desirability of running the project as a meritocracy. We are eager to engage other members of the community and operate to the standard of meritocracy that Apache emphasizes; we believe this is the most effective method of growing our community and enabling widespread adoption.

Community

Even though the reference implementation for the JSR-303 Bean Validation specification is licensed under ASL 2.0, it is not being developed with meritocracy in mind, as the release process is controlled by the JBoss division of Red Hat to meet their own product needs.

The project aims to build a community of developers interested in the definition and delivery of a JSR-303 compliant runtime, which can be reused as a common component by a number of different projects (like Geronimo, OpenJPA, MyFaces, ....) By maintaining independence of the target runtime, it is our intention to build the broadest possible community of developers.

Core Developers

The lead developer from the Agimatec Validation project will be joined by a number of committers from existing ASF projects.

Alignment

The purpose of the project is to develop a certified implementation of JSR-303. Some components may be developed and delivered by other Apache projects, like:

  • Bean Validation 1.0 spec API - Apache Geronimo Specs subproject
  • JSF2 integration - MyFaces ExtVal components

Known Risks

The current JSR-303 portions of the Agimatec-Validation code was developed by a single developer from Agimatec (Roman) with no available documents on the structure of the code.

Orphaned Products

The project will be implementing the JSR-303 Bean Validation specification, which is a required component for both the Web and Full profiles of Java EE 6. There is minimal risk of this work becoming non-strategic and the contributors are confident that a larger community will form within the project in a relatively short space of time.

Inexperience with Open Source

Many of the committers have experience working in one or more open source projects including Apache Commons, Geronimo, OpenJPA, OpenEJB, OpenWebBeans and MyFaces.

Homogeneous Developers

The list of initial committers are geographically distributed across the U.S., Europe and Africa with no one company being associated with a majority of the developers. Many of these initial developers are experienced Apache committers already and all are experienced with working in distributed development communities. It is our hope that, through the incubator, further contributors with a broad background of experience but common interest will become involved with this project.

Reliance on Salaried Developers

To the best of our knowledge, none of the initial committers are being paid to develop code for this project.

Relationships with Other Apache Products

A number of existing ASF projects require an implementation of JSR303 including Geronimo, OpenJPA and MyFaces. It is hoped that members of those projects will be interested in contributing to and adopting this implementation.

Apache Geronimo - Apache Geronimo is a server runtime framework and fully certified Java EE 5 application server runtime. It is interested in using this project, to provide the required JSR-303 implementation for the upcoming Geronimo 3.0 server, which will be a Java EE 6 certified release.

Apache OpenJPA - Apache OpenJPA is a JPA provider, who needs to integrate and test with a JSR-303 provider as part of JSR-317 JPA2 specification. In the future, we may decide to include the project artifacts in our distribution for Java SE users.

Apache MyFaces - Apache MyFaces is a JSF provider, who needs to integrate and test with a JSR-303 provider as part of the JSR-314 JSF2 specification. It is our hope, that the preferred Bean Validation provider will become this project instead of the Hibernate RI, after the project exits the incubator.

A Excessive Fascination with the Apache Brand

The Agimatec-Validation code is currently being hosted on Google Code. The developers (Agimatec Gmbh) did not approach Apache, but were instead approached by Donald Woods about moving the code to Apache in hopes to build a broader and more vibrant community around the code and as the eventual next generation Commons Validator codebase.

Documentation

JSR303 Bean Validation Specification:

Agimatec Validation Project:

Initial Source

The intiial source comprises code developed as as part of the agimatec-validation project on googlecode:

Source and Intellectual Property Submission Plan

SGA has been submitted. Source tarball has not been uploaded to SVN yet.

External Dependencies

  • Runtime
    • Apache Geronimo Bean Validation 1.0 Spec API
    • Apache Commons BeanUtils
    • Apache Commons Lang
    • Apache Commons Logging
    • Apache Commons Collections
    • XStream
  • Optional
    • org.freemarker - freemarker template to generate JSON output
  • Tests
    • JUnit
    • Log4J

Required Resources

Initial Committers

Names of initial committers with affiliation and current ASF status:

  • Roman Stumm [roman.stumm at agimatec.de] - (Agimatec GmbH, CLA filed)

  • Donald Woods [dwoods] - (IBM, ASF committer)

  • Niall Pemberton [niallp] - (EMC, ASF committer)

  • Mohammad Nour El-Din [mnour] - (Thebe Technology, ASF committer)

  • Simone Tripodi [simonetripodi] - (Asemantics S.r.l, ASF committer)

  • Jeremy Bauer [jrbauer] - (IBM, ASF committer)

  • Gerhard Petracek [gpetracek] - (IRIAN Solutions GmbH, ASF committer)

  • Mark Struberg [struberg] - (ASF committer)

Sponsors

Champion

  • Kevan Miller

Nominated Mentors

  • Kevan Miller
  • Niall Pemberton
  • Luciano Resende
  • Matthias Wessendorf

Sponsoring Entity

  • No labels