Projects

A Project is a collaborative effort to produce a specific artifact, which may be a body of code, or documentation, or some other material. A Project must be sponsored by one or more Groups. A Project may have web content, one or more file repositories, and one or more mailing lists.

The Bylaws define several ways for the Community to expand via Projects. A step-by-step guide is provided here for the following common cases:

This page is a summary and interpretation of the Bylaws. If there is a conflict between this page and the Bylaws then the Bylaws are considered authoritative.

Becoming an Author

Any Contributor may request the Author role by contacting the relevant Project Lead. References to at least two sponsored contributions to the Project are required. An Author receives the following privileges above those of a Contributor:

An Author who is not a Committer still requires the assistance of a Committer to push changesets, but the Author role is nonetheless a step above being an unregistered Contributor.

Project Leads are encouraged to grant the Author role only to Contributors who appear likely to continue to contribute for some time so that they will eventually be nominated to the Committer role.

The following is the minimal message.

To: <OpenJDK Project Lead>
Subject: <project name> Author request for: <full name>

<contributor's e-mail>

<contributor's references>

Where the following substitutions are made in the message:

<OpenJDK Project lead>
The Project Lead as identified by the Census.
<project name>
The short name for the Project as listed on the left side-bar of the main OpenJDK page.
<full name>
The full name of the Contributor (not e-mail address, OpenJDK username, etc.).
<contributor's e-mail>
The Contributor's e-mail address.
<contributor's references>
A brief description of qualifications, including references to past contributions to the Project. The references should be in the form of URLs to specific Mercurial changesets containing the Contributor's e-mail address in the Contributed-by: line of the changeset comment. At least two references should be provided.

The new Author will receive an e-mail invitation to register in OpenJDK, at which time a user name will be assigned. Once the invitation has been accepted, the Census will be updated. This user name should be used as the Author name in all future Mercurial changesets.

Under normal circumstances, expect at most one week between the time the Project Lead is contacted and an invitation is received.

Appointing a Contributor to be an Author

The Project Lead may appoint any Contributor who has made at least two sponsored contributions to the Project to be a Author by notifying the registrar. The registrar will contact the new Author to obtain additional information, and will update the Census.

The following is the minimal message.

To: registrar at openjdk dot java dot net
Subject: New <project name> Author: <full name>

<author's e-mail>

<contributor's qualifications>

Where the following substitutions are made in the message:

<project name>
The short name for the Project as listed on the left side-bar of the main OpenJDK page.
<full name>
The full name of the nominated Contributor (not e-mail address, OpenJDK username, etc.).
<author's e-mail>
The e-mail address of the newly appointed Author.
<contributor's qualifications>
A brief description of qualifications, including references.

Under normal circumstances, expect at most one week between the time the registrar is contacted and an invitation is received.

Nominating a Contributor or Author to be a Committer

Any Committer may nominate a Contributor to be a new Committer. Becoming an Author may be helpful in establishing credibility to become a Committer, but it is not required.

As a rough guide, a Contributor should make at least eight significant contributions to that Project before being nominated.

Step 1: Nominate

Send a call-for-votes to the Project's OpenJDK mailing list. The voting method for approval is Lazy Consensus and only current Committers are eligible to vote.

To: <OpenJDK project mailing list>
Subject: CFV: New <project name> Committer: <full name>

I hereby nominate <full name> to <project name> Committer.

<contributor description>

Votes are due by <deadline>.

Only current <project name> Committers [1] are eligible to vote
on this nomination.  Votes must be cast in the open by replying 
to this mailing list.

For Lazy Consensus voting instructions, see [2].

<nominator>

[1] http://openjdk.java.net/census
[2] http://openjdk.java.net/projects/#committer-vote

Where the following substitutions are made in the message:

<OpenJDK project mailing list>
The primary OpenJDK mailing list for the project.
<full name>
The full name of the nominated Contributor (not e-mail address, OpenJDK username, etc.).
<project name>
The short name for the Project as listed on the left side-bar of the main OpenJDK page.
<contributor description>

Describe the Contributor's past contributions to the Project, and any relevant qualifications including references to past contributions. The references should be in the form of a list of URLs to specific Mercurial changesets or a Mercurial HTML query which produces the list. For example, the following is a query for OpenJDK user, iris to one of the OpenJDK 9 Project Master repositories:

http://hg.openjdk.java.net/jdk9/jdk9/jdk/search/?rev=iris&revcount=100
<deadline>
Insert a date and time, with time zone, two weeks after the call-for-votes is sent.
<nominator>
Nominating Committer's name.
Step 2: Vote

Committers vote by replying to the proposal with the first line of the message body in the following form:

Vote: <vote>

where <vote> is one of yes, veto, or abstain. A justification for the vote may be provided on subsequent lines, and is required in order for a veto vote to be valid. Multiple votes are allowed but only the most recent vote will be counted. Votes must be cast in the open, on the mailing list to which the call-for-votes was originally sent; votes sent as private replies will not be counted.

The following is a minimum affirmative reply.

To: <OpenJDK project mailing list>
Subject: Re: CFV: New <project name> Committer: <full name>

Vote: yes
Step 3: Announce Result

Once all Project Members have voted or the deadline has passed then the result must be announced to the mailing list where the call-for-votes and voting took place. If the announcement is approval then it must also be sent to the registrar. The registrar will contact the new Committer to obtain additional information, if necessary, and will update the Census.

This is a typical announcement of approval:

To: <OpenJDK mailing list>
CC: registrar at openjdk dot java dot net
Subject: Result: New <project name> Committer: <full name>

Voting for <full name> [1] is now closed.

Yes: <number of "yes" votes>
Veto: 0
Abstain: <number of "abstain" votes>

According to the Bylaws definition of Lazy Consensus, this is
sufficient to approve the nomination.

<nominator>

[1] http://mail.openjdk.java.net/<reference to original CFV>

Where the following substitutions are made in the message:

<reference to original CFV>
Find the original call-for-votes in the OpenJDK mail archives and provide a link to it.

Nominating a Committer to be a Reviewer

This role is relevant only to Projects that require formal change review before a Mercurial push. The Census notes which Projects have this requirement.

Any Project Reviewer may nominate any of the Project's Committers to be a Project Reviewer of the same Project. A Project Lead is automatically considered to be a Reviewer, and remains a Reviewer after leaving the Project Lead role.

As a rough guide, a Committer should author and push at least 32 significant changesets to the Project before being nominated to be a Reviewer.

Step 1: Nominate

Send a call-for-votes to the Project's OpenJDK mailing list. The voting method for approval is Three-Vote Consensus and only current Reviewers are eligible to vote.

To: <OpenJDK project mailing list>
Subject: CFV: New <project name> Reviewer: <full name>

I hereby nominate <full name> to <project name> Reviewer.

<committer description>

Votes are due by <deadline>.

Only current <project name> Reviewers [1] are eligible to vote
on this nomination.  Votes must be cast in the open by replying
to this mailing list.

For Three-Vote Consensus voting instructions, see [2].

<nominator>

[1] http://openjdk.java.net/census
[2] http://openjdk.java.net/projects/#reviewer-vote

Where the following substitutions are made in the message:

<OpenJDK project mailing list>
The primary OpenJDK mailing list for the project.
<full name>
The full name of the nominated Committer (not e-mail address, OpenJDK name, etc.).
<project name>
The short name for the Project as listed on the left side-bar of the main OpenJDK page.
<committer description>
Describe the Committer's past contributions to the Project, and any relevant qualifications including references.
<deadline>
Insert a date and time, with time zone, two weeks after the call-for-votes is sent.
<nominator>
Nominating Reviewer's name.
Step 2: Vote

Reviewers vote by replying to the proposal with the first line of the message body in the following form:

Vote: <vote>

where <vote> is one of yes, veto, or abstain. A justification for the vote may be provided on subsequent lines, and is required in order for a veto vote to be valid. Multiple votes are allowed but only the most recent vote will be counted. Votes must be cast in the open, on the mailing list to which the call-for-votes was originally sent; votes sent as private replies will not be counted.

The following is a minimum affirmative reply.

To: <OpenJDK project mailing list>
Subject: Re: CFV: New <project name> Reviewer: <full name>

Vote: yes
Step 3: Announce Result

Once all Reviewers have voted or the deadline has passed then the result must be announced to the mailing list where the call-for-votes and voting took place. If the announcement is approval then it must also be sent to the registrar. The registrar will contact the new Reviewer to obtain additional information, if necessary, and will update the Census.

This is a typical announcement of approval:

To: <OpenJDK mailing list>
CC: registrar at openjdk dot java dot net
Subject: Result: New <project name> Reviewer: <full name>

Voting for <full name> [1] is now closed.

Yes: <number of "yes" votes>
Veto: 0
Abstain: <number of "abstain" votes>

According to the Bylaws definition of Three-Vote Consensus, this is
sufficient to approve the nomination.

<nominator>

[1] http://mail.openjdk.java.net/<reference to original CFV>

Where the following substitutions are made in the message:

<reference to original CFV>
Find the original call-for-votes in the OpenJDK mail archives and provide a link to it.

Proposing a New Project

Any Contributor may propose the creation of a new Project.

Step 0: Discuss [optional]

It is recommended that any proposal for a new Project be discussed publicly before being proposed for a vote. Send an e-mail describing the motivation, goals, and initial Lead of the proposed Project to the general discussion list. Include any suggested initial Authors, Committers, and Reviewers, if known. (Reviewers are only relevant if the Project will require formal change review.) Describe existing bodies of code, if any, that will be used as the Project's starting point. The proposing Contributor should be an active participant in any subsequent discussion and should refine the proposal as necessary in response to comments.

The header for the Project proposal e-mail is as follows:

To: discuss at openjdk dot java dot net
Subject: Project Proposal: <project name>

Where <project name> is the suggested short name of the Project as it would appear on the left side-bar of the main OpenJDK page.

At least one Group Lead must declare that their Group is a sponsor of the proposed Project. (Unlike the interim guidelines which required Group Members to vote for sponsorship, a Group's Lead has the authority to declare that the Group is a sponsor of the Project.)

Step 1: Propose

Send a combined motion for the creation of the Project and the appointment of its initial Lead to the announcement list. The e-mail should contain the Project name, description, initial Lead name and qualifications, sponsoring Groups, and suggested initial Authors, Committers, Reviewers, if any. The voting method is Lazy Consensus and only current OpenJDK Members are eligible to vote.

The format for the call-for-votes e-mail is as follows:

To: announce at openjdk dot java dot net
Subject: CFV: New Project: <project name>

I hereby propose the creation of the <project name> Project with
<lead name> as the Lead and <group list> as the sponsoring 
Group(s).

<project description>

<lead description>

<list of suggested initial authors, committers, and reviewers>

Votes are due by <deadline>.

Only current OpenJDK Members [1] are eligible to vote on this 
motion.  Votes must be cast in the open on the discuss list.
Replying to this message is sufficient if your mail program
honors the Reply-To header.

For Lazy Consensus voting instructions, see [2].

<nominator>

[1] http://openjdk.java.net/census#members
[2] http://openjdk.java.net/projects/#new-project-vote

Where the following substitutions are made in the message:

<project name>
The name of the proposed Project as it would appear on the left side-bar of the main OpenJDK page.
<project description>
Describe the Project's deliverable.
<lead name>
The full name of the proposed Project Lead (not e-mail address, OpenJDK name, etc.)
<lead description>
Describe the proposed Lead's relevant qualifications.
<group list>
A comma-separated list containing at least one Group whose Lead has agreed to sponsor the Project.
<list of suggested initial authors, committers, and reviewers>
Provide the full names (not e-mail address, OpenJDK name, etc.) of people which the prospective Project Lead may choose to appoint as initial Authors, Committers, and Reviewers (if necessary).
<deadline>
Insert a date and time, with time zone, two weeks after the call-for-votes is sent.
<nominator>
The proposing Contributor's name.

The Bylaws specify separate votes on the creation of a new Project, by the OpenJDK Members, and the appointment of its initial Lead, by the Group Leads of the sponsoring Groups. Any such Group Lead may therefore request that the two motions be voted upon independently, though this is not expected to be the common case.

Step 2: Vote

Eligible voters cast their vote by sending e-mail to the general discussion list. Replying to the proposal will achieve this automatically for those people whose mail programs honor the Reply-To header. The first line of the message body should be in the following form:

Vote: <vote>

where <vote> is one of yes, veto, or abstain. A justification for the vote may be provided on subsequent lines, and is required in order for a veto vote to be valid. Multiple votes are allowed but only the most recent vote will be counted. Votes must be cast in the open, on the mailing list to which the call-for-votes was originally sent; votes sent as private replies will not be counted.

The following is a minimum affirmative reply:

To: discuss at openjdk dot java dot net
Subject: Re: CFV: New Project: <project name>

Vote: yes
Step 3: Announce Results

Once all OpenJDK Members have voted or the deadline has passed, the proposing Contributor must send the results to the announcement list. If the announcements are of approval then they must also be sent to the registrar.

This is a typical announcement of approval:

To: announce at openjdk dot java dot net
CC: registrar at openjdk dot java dot net
Subject: Result: New Project: <project name>

Voting on the <project name> Project with initial Lead
<lead name> [1] is now closed.

Yes: <number of "yes" votes>
Veto: 0
Abstain: <number of "abstain" votes>

According to the Bylaws definition of Lazy Consensus, this is 
sufficient to approve the new Project and its initial Lead.

<nominator>

[1] http://mail.openjdk.java.net/<reference to original CFV>

Where the following substitutions are made in the message:

<reference to original CFV>
Find the original call-for-votes in the OpenJDK mail archives and provide a link to it.
Step 4: Appoint

The registrar will send an e-mail questionnaire to the new Project Lead to collect information necessary to launch the Project on OpenJDK. In addition to information for web pages, file repositories, and mailing list(s), the Lead will be asked to select the initial Authors, Committers, and Reviewers (if necessary). The registrar will issue registration invitations as appropriate and will update the Census.