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:
- Becoming an Author
- Nominating Contributors to new Project Committer
- Nominating Project Committers to new Project Reviewer
- Proposing a New Project
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 Project Author role by contacting the relevant Project Lead. An e-mail request should be sent directly to the Project Lead and contain a short description of the Contributor's qualifications, including past contributions to the Project.
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.
An Author receives the following privileges above those of a Contributor:
-
An OpenJDK username, which allows write access to the code-review server and (eventually) other infrastructure services, and
-
The ability to create Mercurial changesets directly, with the Author's OpenJDK username recorded as the author of the Mercurial changeset. This is a more efficient process than the indirect one, where a patch must be sent to an existing Committer and the changeset comment lists the Contributor's e-mail address in the "Contributed-by:" line.
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.
Nominating Contributors to new Project Committer
Any Project Committer may nominate a Contributor to be a new Project Committer. Becoming an Author may be helpful in establishing credibility to become a Committer, but it is not required.
As a rough guide, for any given Project, a Contributor should make at least eight significant contributions 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 Project 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. 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.
- <deadline>
- Insert a date and time, with time zone, two weeks after the call-for-votes is sent.
- <nominator>
- Nominating Project Committer's name.
- Step 2: Vote
-
Project 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 ofyes
,veto
, orabstain
. A justification for the vote may be provided on subsequent lines, and is required in order for aveto
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 Project Committers to new Project 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 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 Lazy Consensus and only current Project 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. For Lazy 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.
- <deadline>
- Insert a date and time, with time zone, two weeks after the call-for-votes is sent.
- <nominator>
- Nominating Project Reviewer's name.
- Step 2: Vote
-
Project 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 ofyes
,veto
, orabstain
. A justification for the vote may be provided on subsequent lines, and is required in order for aveto
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 Project 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> 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.
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. 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 replying to the proposal with the first line of the message body in the following form:
Vote: <vote>
where
<vote>
is one ofyes
,veto
, orabstain
. A justification for the vote may be provided on subsequent lines, and is required in order for aveto
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.