AProject is a collaborativeeffort to produce a specific artifact, which may be a body of code,or documentation, or some other material. A Project must besponsored by one or moreGroups. A Projectmay have web content, one or more file repositories, and one ormoremailing lists.
TheBylaws define several ways for theCommunity to expand via Projects. A step-by-step guide is providedhere for the following common cases:
This page is a summary and interpretation of theBylaws. If there is a conflict between this page andthe Bylaws then the Bylaws are considered authoritative.
AnyContributor may requesttheAuthor role by contacting therelevantProject Lead.References to at least twosponsored contributions to the Project arerequired. An Author receives the following privileges above thoseof a Contributor:
An OpenJDK username, which allows write access to thecode-review server and otherinfrastructure services, and
The ability to create Git pull requests (PRs) which areassociated with the Author's OpenJDK username.
An Author who is not a Committer still requires the assistanceof a Committer to push PRs, but the Author role is nonetheless astep above being an unregistered Contributor.
Project Leads are encouraged togrant the Author role only to Contributorswho appear likely to continue to contribute for some time so thatthey 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:
The new Author will receive an e-mail invitation to register inOpenJDK, at which time an OpenJDK username will be assigned. Oncethe invitation has been accepted, theCensuswill be updated. After you have an OpenJDK username, you mustassociate your GitHub username with your OpenJDK username.
Under normal circumstances, expect at most one week between thetime the Project Lead is contacted and an invitation isreceived.
TheProject Lead may appoint anyContributor who has made at least twosponsored contributions to the Projectto be a Author by notifying theregistrar. The registrarwill contact the new Author to obtain additional information, andwill update the Census.
The following is the minimal message.
To: registrar at openjdk dot orgSubject: New<project name> Author:<full name><author's e-mail><contributor's qualifications>
Where the following substitutions are made in the message:
Under normal circumstances, expect at most one week between thetime the registrar is contacted and an invitation is received.
AnyCommitter may nominate aContributor to be a newCommitter. Becoming an Author may be helpful in establishingcredibility to become a Committer, but it is not required.
As a rough guide, a Contributor should make at least eightsignificant contributions to that Project before beingnominated.
Send a call-for-votes to the Project's OpenJDKmailing list. The voting method forapproval isLazy Consensus andonly currentCommitters are eligible tovote.
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 voteon this nomination. Votes must be cast in the open by replyingto this mailing list.For Lazy Consensus voting instructions, see [2].<nominator>[1] https://openjdk.org/census[2] https://openjdk.org/projects/#committer-vote
Where the following substitutions are made in the message:
Describe the Contributor's past contributions to the Project,and any relevant qualifications including references to pastcontributions. The references should be in the form of a list ofURLs to specific PRs or an HTML query which produces the list. Forexample, the following is a query for a GitHub username,GHusername
to the JDK main-line dvelomentrepositories:
https://github.com/openjdk/jdk/commits?author=GHusername
Committers vote by replying to the proposal with the first lineof the message body in the following form:
Vote:<vote>
where<vote>
is one ofyes
,veto
, orabstain
. A justification for the vote may beprovided on subsequent lines, and is required in order for aveto
vote to be valid. Multiple votes areallowed but only the most recent vote will be counted. Votes mustbe cast in the open, on the mailing list to which thecall-for-votes was originally sent; votes sent as private replieswill 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
Once all Project Members have voted or the deadline has passedthen the result must be announced to the mailing list where thecall-for-votes and voting took place. If the announcement isapproval then it must also be sent to theregistrar. The registrarwill contact the new Committer to obtain additional information, ifnecessary, and will update the Census.
This is a typical announcement of approval:
To:<OpenJDK mailing list>CC: registrar at openjdk dot orgSubject: Result: New<project name> Committer:<full name>Voting for<full name> [1] is now closed.Yes:<number of "yes" votes>Veto: 0Abstain:<number of "abstain" votes>According to the Bylaws definition of Lazy Consensus, this issufficient to approve the nomination.<nominator>[1] https://mail.openjdk.org/<reference to original CFV>
Where the following substitutions are made in the message:
This role is relevant only to Projects that require formalchange review before a push. TheCensus noteswhich Projects have this requirement.
AnyProject Reviewer may nominateany of the Project's Committers to be a Project Reviewer of thesame Project. A Project Lead is automatically considered to be aReviewer, and remains a Reviewer after leaving the Project Leadrole.
As a rough guide, a Committer should author and push at least 32significant PRs to the Project before being nominated to be aReviewer.
Send a call-for-votes to the Project's OpenJDKmailing list. The voting method forapproval isThree-VoteConsensus and only currentReviewers areeligible 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 voteon this nomination. Votes must be cast in the open by replyingto this mailing list.For Three-Vote Consensus voting instructions, see [2].<nominator>[1] https://openjdk.org/census[2] https://openjdk.org/projects/#reviewer-vote
Where the following substitutions are made in the message:
Reviewers vote by replying to the proposal with the first lineof the message body in the following form:
Vote:<vote>
where<vote>
is one ofyes
,veto
, orabstain
. A justification for the vote may beprovided on subsequent lines, and is required in order for aveto
vote to be valid. Multiple votes areallowed but only the most recent vote will be counted. Votes mustbe cast in the open, on the mailing list to which thecall-for-votes was originally sent; votes sent as private replieswill 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
Once all Reviewers have voted or the deadline has passed thenthe result must be announced to the mailing list where thecall-for-votes and voting took place. If the announcement isapproval then it must also be sent to theregistrar. The registrarwill contact the new Reviewer to obtain additional information, ifnecessary, and will update the Census.
This is a typical announcement of approval:
To:<OpenJDK mailing list>CC: registrar at openjdk dot orgSubject: Result: New<project name> Reviewer:<full name>Voting for<full name> [1] is now closed.Yes:<number of "yes" votes>Veto: 0Abstain:<number of "abstain" votes>According to the Bylaws definition of Three-Vote Consensus, this issufficient to approve the nomination.<nominator>[1] https://mail.openjdk.org/<reference to original CFV>
Where the following substitutions are made in the message:
AnyContributor may proposethe creation of a new Project.
It is recommended that any proposal for a new Project bediscussed publicly before being proposed for a vote. Send an e-maildescribing the motivation, goals, and initial Lead of the proposedProject to thegeneraldiscussion list. Include any suggested initial Authors,Committers, and Reviewers, if known. (Reviewers are only relevantif the Project will require formal change review.) Describeexisting bodies of code, if any, that will be used as the Project'sstarting point. The proposing Contributor should be an activeparticipant in any subsequent discussion and should refine theproposal as necessary in response to comments.
The header for the Project proposal e-mail is as follows:
To: discuss at openjdk dot orgSubject: Call for Discussion: New Project:<project name>
Where<project name>
is the suggestedshort name of the Project as it would appear on the left side-barof the mainOpenJDK page.
At least oneGroup Lead mustdeclare that their Group is a sponsor of the proposed Project.
Send a combined motion for the creation of the Project and theappointment of its initial Lead to theannouncement list. Thee-mail should contain the Project name, description, initial Leadname and qualifications, sponsoring Groups, and suggested initialAuthors, Committers, Reviewers, if any. The voting method isLazy Consensus and onlycurrentOpenJDK Members are eligibleto vote.
The format for the call-for-votes e-mail is as follows:
To: announce at openjdk dot orgSubject: 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 sponsoringGroup(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 thismotion. Votes must be cast in the open on the discuss list.Replying to this message is sufficient if your mail programhonors the Reply-To header.For Lazy Consensus voting instructions, see [2].<nominator>[1] https://openjdk.org/census#members[2] https://openjdk.org/projects/#new-project-vote
Where the following substitutions are made in the message:
The Bylaws specify separate votes on the creation of a newProject, by the OpenJDK Members, and the appointment of its initialLead, by the Group Leads of the sponsoring Groups. Any such GroupLead may therefore request that the two motions be voted uponindependently, though this is not expected to be the commoncase.
Eligible voters cast their vote by sending e-mail to thegeneral discussionlist. Replying to the proposal will achieve this automaticallyfor those people whose mail programs honor theReply-To
header. The first line of the message bodyshould be in the following form:
Vote:<vote>
where<vote>
is one ofyes
,veto
, orabstain
. A justification for the vote may beprovided on subsequent lines, and is required in order for aveto
vote to be valid. Multiple votes areallowed but only the most recent vote will be counted. Votes mustbe cast in the open, on thegeneral discussion list;votes sent as private replies will not be counted.
The following is a minimum affirmative reply:
To: discuss at openjdk dot orgSubject: Re: CFV: New Project:<project name>Vote: yes
Once all OpenJDK Members have voted or the deadline has passed,the proposing Contributor must send the results to theannouncement list. If theannouncements are of approval then they must also be sent to theregistrar.
This is a typical announcement of approval:
To: announce at openjdk dot orgCC: registrar at openjdk dot orgSubject: 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: 0Abstain:<number of "abstain" votes>According to the Bylaws definition of Lazy Consensus, this issufficient to approve the new Project and its initial Lead.<nominator>[1] https://mail.openjdk.org/<reference to original CFV>
Where the following substitutions are made in the message:
The registrar will send an e-mail questionnaire to the newProject Lead to collect information necessary to launch the Projecton OpenJDK. In addition to information for web pages, filerepositories, and mailing list(s), the Lead will be asked to selectthe initial Authors, Committers, and Reviewers (if necessary). Theregistrar will issue registration invitations as appropriate andwill update the Census.