Fork me on GitHub

Contributing to the Oracle Coherence Incubator

The following sections outline the requirements for making contributions to the Oracle Coherence Incubator.

Overview

Developing code and documentation for the Oracle Coherence Incubator is a big deal.

While it may seemingly be a place to develop and possibly experiment with patterns or solutions, the fact of the matter is that the Coherence Community frequently adopts the styles, approaches and implementations provided by the Oracle Coherence Incubator, whether in total or in part, for use in production scenarios.

Consequently every effort has to be made to ensure that projects are somewhat stable, not too experimental and offer a high-degree of reliability, scalability and stability, something that people can trust if they decide to branch or become inspired by said projects on their own.

Foremostly the Oracle Coherence Incubator is not designed to be a "holding zone" for individually or corporately developed utilities based on Coherence. While these may be of interest to individuals, we carefully investigate utility of these solutions before considering them for inclusion. In most cases we instead encourage developers to define their own "common" projects.

Becoming a Contributor

Contributing to the Oracle Coherence Incubator can be done in various ways, each of which is valuable to the Coherence Community as a whole. Contributions may include helping out by answering questions on the forums, isolating and submitting defects resolution requests, proposing or submitting defect resolutions (fixes), suggesting or building enhancements, introducing new features and improving tests and documentation.

For all contributions that involve making a change to the source tree and thus releasing a new build of the Oracle Coherence Incubator, those primarily being a defect fix, enhancement, new feature or documentation improvement, all non-Oracle contributors must complete and sign the Oracle Contributors Agreement.

To do this, simply print out the form, fill in the necessary details, scan it in and return via email to: oracle-ca_us [at] oracle [dot] com.

Note 1: For the "Project Name:" please write "Oracle Coherence Incubator".

Note 2: This is the same agreement used for making contributions to GlassFish and Java itself. If you already have executed this agreement then you're ready to contribute to the Oracle Coherence Incubator.

Should you have any questions regarding this agreement, you should consult the Oracle Contributors Agreement FAQ

Roles and Responsibilities

As mentioned above, there are quite a few ways to participate on projects that are part of the Oracle Coherence Incubator, and not all of them involve contributing source code! Simply using the software, participating on mailing lists or forums, filing bug reports or enhancement requests are an incredibly valuable form of participation.

If one were to break down the forms of participation for the Oracle Coherence Incubator into a set of roles, the result would look something like this:

Users, Contributors, Committers, Maintainers, and Project Leads.

Users:

Users are the people who use the software. Users are using the software, reporting bugs, making feature requests and suggestions. This is by far the most important category of people. Without users, there is no reason for the project.

How to become one: Download the software and use it to build an application.

Contributors:

Contributors are individuals who contribute to an Oracle Coherence Incubator project, but do not have write access to the source tree. Contributions can be in the form of source code patches, new code, or bug reports, but could also include web site content like articles, FAQs, or screenshots.

A contributor who has sent in solid, useful source code patches on a project can be elevated to Committer status by a Maintainer.

Integration of a Contributor submissions done at the discretion of a Maintainer, but this is an iterative, communicative process. Note that for code to be integrated, a completed Oracle Contribution Agreement is required from each contributor.

How to become one: Contribute in any of the ways described above: either code, examples, web site updates, tests, bugs, and patches. If you're interested in becoming a Committer to the source base, get the sources to the project, make an improvement or fix a bug, and send that code to the developers mailing list or attach it to the bug report in the project issue tracking system.

Committers:

Committers have write access to the source tree, either for the individual modules they are working on, or in some cases global write permissions everywhere in the source code management system.

A Committer must first become a Contributor before they can be granted access to commit to the source tree.

Rules for how to commit, once you have commit access, will vary by project and module. Be sure to ask before you start making changes!

How to become one: Submit some patches via email, and ask the Maintainer of the code you've patched for commit access. The Maintainer will seek consensus before granting Committer access, but their decisions are final.

Maintainers:

Each module has one Maintainer, who has check-in permissions (either for that m odule or globally), and "manages" a group of Committers. They are responsible for merging contributed patches, bug fixes, and new code from the development branch of the source tree into the stable branch. Maintainers are responsible for making sure that these contributions do not break the build.

The Maintainer is also responsible for checking that everyone who contributes code has submitted an Oracle Contribution Agreement.

A Maintainer is responsible for their module, and for granting check-in privileges to Contributors. They also act as the "police force" of the module, helping to ensure quality across the build.

How to become one:

  • Start a module (you need to have written some working code on your project to do this, you'll also need to talk to the Project Lead).

  • Have responsibility for that module handed over to you from the current Maintainer.

  • Take over an abandoned project--sometimes someone starts something, but for one reason or another can't continue to work on it. If it's interesting to you, volunteer!

Project Lead:

Each project in the Oracle Coherence Incubator has an overall Project Lead. The Project Leads are currently appointed by Oracle. They are responsible for managing the entire project, helping to create policies by consensus that ensure global quality.

Making a Contribution

All contributors are required to be a Committer in order to commit contributions to the Oracle Coherence Incubator, including documentation.

To become a Committer you must first clearly demonstrate both skill as a developer and be capable of strictly adhering to the quality and architectural requirements of the Oracle Coherence Incubator. In order to demonstrate these abilities, it's best to get started by submitting patches or improvements via email and then asking the Maintainer or Project Lead to review said changes, after which they may be accepted and submitted (either by the Maintainer or Project Lead).

Like all large projects, the Oracle Coherence Incubator employs strict coding guidelines. For the most part these are easily automated using the preferred tool called JIndent. A JIndent style-template for the Oracle Coherence Incubator is located in the documents folder of the source tree.

Note: Oracle does not supply licenses for JIndent.