| = Apache James Project guidelines |
| :navtitle: Guidelines |
| |
| This document defines the guidelines for the Apache James Project. It includes definitions of how conflict is being |
| resolved by voting and who is able to vote. |
| |
| The objective here is to avoid unnecessary conflicts over changes and continue to produce a quality system in a timely |
| manner. Not all conflict can be avoided, but at least we can agree on the procedures for conflicts to be resolved. |
| |
| == People, Places, and Things |
| |
| === Apache James Project Management Committee |
| |
| The group of volunteers who are responsible for managing the Apache James Project. This includes deciding what is |
| distributed as products of the Apache James Project, maintaining the Project's shared resources, speaking on behalf of |
| the Project, resolving license disputes regarding Apache James products, nominating new PMC members or committers, |
| and establishing these guidelines. |
| |
| Membership in the Apache James PMC is by invitation only and must be approved by consensus of the active Apache James |
| PMC members. A PMC member is considered inactive by their own declaration or by not contributing in any form to the |
| project for over six months. An inactive member can become active again by reversing whichever condition made them |
| inactive (i.e., by reversing their earlier declaration or by once again contributing toward the project's work). |
| Membership can be revoked by a unanimous vote of all the active PMC members other than the member in question. |
| |
| === Apache James Committers |
| |
| The group of volunteers who are responsible for the technical aspects of the Apache James Project. This group has write |
| access to the appropriate source repositories and these volunteers may cast non-binding votes on any technical discussion. |
| |
| Membership as a Committer is by invitation only and must be approved by consensus of the active Apache James PMC members. |
| A Committer is considered inactive by their own declaration or by not contributing in any form to the project for over |
| six months. An inactive member can become active again by reversing whichever condition made them inactive (i.e., by |
| reversing their earlier declaration or by once again contributing toward the project's work). Membership can be revoked |
| by a unanimous vote of all the active PMC members (except the member in question if they are a PMC member). |
| |
| === Mailing list |
| |
| The Apache committers' primary mailing list for discussion of issues and changes related to the project |
| (xref:mailing-lists.adoc#_server_developer_list[server-dev@james.apache.org]). Subscription to the list is open, but |
| only subscribers can post directly to the list. |
| |
| === Private list |
| |
| The Apache James Project's private mailing list for discussion of issues that are inappropriate for public discussion, |
| such as legal, personal, or security issues prior to a published fix. Subscription to the list is only opened to Apache |
| James PMC members and Apache Software Foundation Members. |
| |
| Topics to be discussed on the private mailing list: |
| |
| - Discussion of board reports. PMC members need to report quarterly project activity to the Apache board of directors, |
| which is done through link:https://reporter.apache.org[reporter.apache.org]. Prior report submission, the draft should |
| be discussed on the private mailing list. |
| - Discussions of link:https://community.apache.org/newcommitter.html[new committers, new PMCs], including proposition discussions, votes and process follow up. |
| - Handling of xref:contributing.adoc#_reporting_security_vulnerabilities[security vulnerability reports], and CVE publication. |
| |
| Other topics should be discussed/voted on server-dev instead. |
| |
| === GIT |
| |
| All of the Apache James products are maintained in shared information repositories using GIT on git-wip-us.apache.org. |
| The Apache committers have write access to these repositories; everyone has read access via anonymous GIT. |
| |
| == Consensus |
| |
| As a community we are seeking link:https://community.apache.org/committers/decisionMaking.html[consensus] in our |
| decision making. |
| |
| We actively rely on link:https://community.apache.org/committers/lazyConsensus.html[lazy consensus] for most of our |
| decisions, be them validating xref:contributing.adoc#_how_to_contribute_some_code[code changes], enacting |
| xref:contributing.adoc#_idea_or_design_proposals[design decisions]. |
| |
| All code modifications should achieve lazy consensus under the form of GitHub pull requests. |
| |
| === Voting |
| |
| Some decisions might require to vote: |
| |
| - xref:release.adoc[releases] |
| - establishing a new sub-project |
| - retiring sub-projects |
| - taking a decision when lazy consensus failed. |
| |
| Note that we encourage discussing the issues prior to trigger a vote. That way bad surprises may be avoided ahead of time. |
| |
| Any of the Apache James Committers may vote on any issue or action item. However, the only binding votes are those cast |
| by active members of the Apache James PMC; if the vote is about a change to source code or documentation, the primary |
| author of what is being changed may also cast a binding vote on that issue. All other votes are non-binding. All |
| contributors are encouraged to participate in decisions, but the decision itself is made by those who have been long-time |
| contributors to the project. In other words, the Apache Project is a minimum-threshold meritocracy. |
| |
| The act of voting carries certain obligations -- voting members are not only stating their opinion, they are agreeing |
| to help do the work of the Apache Project. Since we are all volunteers, members often become inactive for periods of |
| time in order to take care of their "real jobs" or devote more time to other projects. It is therefore unlikely that the |
| entire group membership will vote on every issue. To account for this, all voting decisions are based on a minimum quorum. |
| |
| Each vote can be made in one of three flavors: |
| |
| *+1* |
| Yes, agree, or the action should be performed. On some issues, this vote is only binding if the voter has tested the |
| action on their own system(s). |
| |
| *+-0* |
| Abstain, no opinion, or I am happy to let the other group members decide this issue. An abstention may have detrimental |
| effects if too many people abstain. |
| |
| *-1* |
| No. On issues where consensus is required, this vote counts as a veto. All vetoes must include an explanation of why the |
| veto is appropriate. A veto with no explanation is void. No veto can be overruled. If you disagree with the veto, you |
| should lobby the person who casts the veto. Voters intending to veto an action item should make their opinions known to |
| the group immediately, so that the problem can be remedied as early as possible. |
| |
| An action item requiring consensus approval must receive at least 3 binding +1 votes and no vetoes. An action item |
| requiring majority approval must receive at least 3 binding +1 votes and more +1 votes than -1 votes (i.e., a majority |
| with a minimum quorum of three positive votes). All other action items are considered to have lazy approval until |
| someone votes -1, after which point they are decided by either consensus or a majority vote, depending upon the type |
| of action item. |
| |
| All votes must be either sent to the mailing list for that action item. |
| |
| Votes are to remain open for 72 hours after which the developer who put forth the vote should tabulate the result and |
| send this to the mailing list. A developer should be sensitive to holidays that could dampen participation in the vote. |
| |
| == Section for new committers |
| |
| First congratulation for your involvement! |
| |
| As part of the link:https://community.apache.org/newcommitter.html[process to become a committer], the following steps should have had been emailed to you: |
| |
| - Signing of link:https://www.apache.org/licenses/#clas[Contributor License Agreement] |
| - Establishing an Apache profile with the Apache secretary. |
| - Access will directly be granted on the link:https://issues.apache.org/jira/projects/JAMES[JIRA], |
| the ASF Git repository and the link:https://ci-builds.apache.org/job/james/job/ApacheJames/[ci]. |
| - Extra steps should be taken for xref:#_accessing_apache_github_as_a_committer[GitHub access]. |
| - A PMC should have had announced your nomination. If you have not already been doing it, we strongly |
| encourage you to write an email on public mailing list, presenting you, and your motivations toward |
| contributing on Apache James. A reply to the announcement would do the trick! |
| |
| === Accessing Apache GitHub as a Committer |
| |
| - Verify you have a GitHub ID enabled with link:https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/[2FA] |
| - Enter your GitHub ID into your link:https://id.apache.org/[Apache ID profile] |
| - Merge your Apache and GitHub accounts using link:https://gitbox.apache.org/setup/[GitBox] (Apache Account Linking utility). You should see 3 green checks in GitBox. |
| |
| Wait at least 30 minutes for an email inviting you to Apache GitHub Organization and accept invitation. |
| |
| - After accepting the GitHub Invitation verify that you are a member of the link:https://github.com/orgs/apache/teams/james-committers[GitHub Apache James team]. |