Title: JPA 2.1 Development Process
# JPA 2.1 Development Process
## JPA 2.1 Roadmap
The OpenJPA roadmap and iteration detail for developing JPA 2.1
functionality is documented [here](jpa-2.1-roadmap.html)
. The process to be used for this development effort will be documented on
this Development Process page.
## Overview
JPA 2.1 has been defined by the Java Community Process under
[JSR-338](http://jcp.org/en/jsr/detail?id=338). The final specification is dated
04/02/2013. OpenJPA needs to branch off is current JPA 2.0 efforts from trunk and is targeting its next
release, OpenJPA 2.4, to be fully spec compliant with JPA 2.1.
## JPA 2.1 Highlights
The latest JPA 2.1 specification includes many updates to JPA,
from minor updates to major functional enhancements. Some of these updates
and enhancements include:
* Formal Stored Procedure support
* SynchronizationType to control when to enlist with transaction
* CDI support for Entity Listeners
* Type Conversions (similar to OpenJPA's Externalizer)
* Further explanation of how to return managed and unmanaged data from NativeQueries
* JPQL updates
* Support for TREAT (downcasting)
* Criteria API refactoring (hopefully just internal impacts)
* Allow use of packaged scripts: ddl-create-script, ddl-drop-script, ddl-load-script
* Schema generation (similar to OpenJPA's capability)
* Annotation updates: @Converter, @ForeignKey, @Index
## Contributions
The JPA 2.1 Development release needs contributions in the areas of development,
testing, and documentation. If you are simply interested in trying out new
capabilities of JPA 2.1, contributing to the test suite is a great way to
do that; while making a significant contribution to the project.
## Process
* All new features, spec related or other improvements must have an
corresponding JIRA. Large items should be broken down into manageable
sub-tasks. The JIRA should include design details, decision rationality,
and testing information.
* Use [test driven development](http://en.wikipedia.org/wiki/Test-driven_development)
(write tests before code). Test driven development can be extremely
beneficial for gaining an initial understanding the requirements of the
feature and will help ensure that the feature is adequately tested. Too
often, tests are the last thing to be written so they can end up incomplete
or worse yet, forgotten.
.
* Documentation updates/additions, when necessary, must accompany new
function.
* JPA 2.1 development will be based on two week
iterations (or sprints). Each iteration will include a set of new features
and enhancements. Features must have accompanying tests and documentation
and go through a code review. A feature must fit within the iteration
period. Larger and/or complex tasks may need to be broken down such that
they can be contributed as individual, consumable features.
* A call for participation will be posted prior to the start of each
iteration. An iteration plan will be composed based on who can participate
and what they plan to contribute.
* Code reviews will be conducted using the standard Commit-Then-Review
(CTR) process (for OpenJPA committers), unless a pre-commit code review is
specifically requested. Artifacts submitted by non-committers must be
reviewed before they are committed.