blob: a27e6183dcc272392bc55f1ae6d64ff88b35e873 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at 2024-03-14 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache James Project &#x2013; Apache James Project Guidelines</title>
<style type="text/css" media="all">
@import url("./css/james.css");
@import url("./css/maven-base.css");
@import url("./css/maven-theme.css");
@import url("./css/site.css");
@import url("./js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
@import url("./js/jquery/css/print.css");
@import url("./js/fancybox/jquery.fancybox-1.3.4.css");
</style>
<script type="text/javascript" src="./js/jquery/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="./js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<meta name="author" content="James Project Web Team" />
<meta name="Date-Revision-yyyymmdd" content="20240314" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1384591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body class="composite">
<div id="banner">
<a href="index.html" id="bannerLeft" title="james-logo.png">
<img src="images/logos/james-logo.png" alt="James Project" />
</a>
<a href="https://www.apache.org/index.html" id="bannerRight">
<img src="images/logos/asf_logo_small.png" alt="The Apache Software Foundation" />
</a>
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
<div class="xleft">
<span id="publishDate">Last Published: 2024-03-14</span>
</div>
<div class="xright"> <a href="index.html" title="Home">Home</a>
|
<a href="documentation.html" title="James">James</a>
|
<a href="mime4j/index.html" title="Mime4J">Mime4J</a>
|
<a href="jsieve/index.html" title="jSieve">jSieve</a>
|
<a href="jspf/index.html" title="jSPF">jSPF</a>
|
<a href="jdkim/index.html" title="jDKIM">jDKIM</a>
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
<h5>James components</h5>
<ul>
<li class="expanded">
<a href="documentation.html" title="About James">About James</a>
<ul>
<li class="none">
<a href="mail.html" title="Mailing Lists">Mailing Lists</a>
</li>
<li class="none">
<a href="contribute.html" title="Contributing">Contributing</a>
</li>
<li class="none">
<strong>Guidelines</strong>
</li>
<li class="none">
<a href="https://issues.apache.org/jira/browse/JAMES" title="Issue tracker">Issue tracker</a>
</li>
<li class="none">
<a href="team-list.html" title="Who We Are">Who We Are</a>
</li>
<li class="none">
<a href="license.html" title="License">License</a>
</li>
<li class="none">
<a href="thanks.html" title="Thanks">Thanks</a>
</li>
<li class="none">
<a href="support.html" title="Professional support">Professional support</a>
</li>
<li class="none">
<a href="download.cgi" title="Download releases">Download releases</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="server/index.html" title="Server">Server</a>
</li>
<li class="collapsed">
<a href="mailet/index.html" title="Mailets">Mailets</a>
</li>
<li class="collapsed">
<a href="mailbox/index.html" title="Mailbox">Mailbox</a>
</li>
<li class="collapsed">
<a href="protocols/index.html" title="Protocols">Protocols</a>
</li>
<li class="collapsed">
<a href="mpt/index.html" title="MPT">MPT</a>
</li>
</ul>
<h5>Apache Software Foundation</h5>
<ul>
<li>
<strong>
<a title="ASF" href="http://www.apache.org/">ASF</a>
</strong>
</li>
<li>
<a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
</li>
<li>
<a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li>
<a title="License" href="http://www.apache.org/licenses/" >License</a>
</li>
<li>
<a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a title="Security" href="http://www.apache.org/security/">Security</a>
</li>
</ul>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
<img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
</a>
</div>
</div>
<div id="bodyColumn">
<div id="contentBox">
<section>
<h2><a name="Apache_James_Project_Guidelines"></a>Apache James Project Guidelines</h2>
<p>
This document defines the guidelines for the Apache James Project. It
includes definitions of how conflict is resolved by voting, who
is able to vote, and the procedures to follow for proposing and
making changes to the Apache James products.
</p>
<p>
The objective here is to avoid unnecessary conflict 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 conflict to be resolved.
</p>
</section>
<section>
<h2><a name="People.2C_Places.2C_and_Things"></a>People, Places, and Things</h2>
<section>
<h3><a name="Apache_James_Project_Management_Committee"></a>Apache James Project Management Committee</h3>
<p>
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.
</p>
<p>
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.
</p>
</section>
<section>
<h3><a name="Apache_James_Committers"></a>Apache James Committers</h3>
<p>
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.
</p>
<p>
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).
</p>
</section>
<section>
<h3><a name="Mailing_list"></a>Mailing list</h3>
<p>
The Apache committers' primary mailing list for discussion of issues
and changes related to the project
(server-dev@james.apache.org). Subscription to the list is
open, but only subscribers can post directly to the list.
</p>
</section>
<section>
<h3><a name="Private_list"></a>Private list</h3>
<p>
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 open to Apache James PMC
members and Apache Software Foundation Members.
</p>
<ul>Topics to be discussed on the private mailing list:
<li>Discussion of board reports. PMC members need to report quaterly project activity to the Apache board of directors,
which is done through <a class="externalLink" href="https://reporter.apache.org">reporter.apache.org</a>. Prior report submission, the draft should
be discussed on the private mailing list</li>
<li>Discussions of <a class="externalLink" href="https://community.apache.org/newcommitter.html">new committers, new PMCs</a>, including proposition
discussions, votes and process follow up.</li>
<li>Handling of <a href="contribute.html#reporting_security_vulnerabilities">security vulnerability reports</a>, and CVE publication.</li>
</ul>
<p>Other topics should be discussed/voted on server-dev instead.</p>
</section>
<section>
<h3><a name="GIT"></a>GIT</h3>
<p>
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.
</p>
</section>
</section>
<section>
<h2><a name="Consensus"></a>Consensus</h2>
<p>
As a community we are seeking <a class="externalLink" href="https://community.apache.org/committers/decisionMaking.html">consensus</a> in our
decision making.
</p>
<p>
We actively rely on <a class="externalLink" href="https://community.apache.org/committers/lazyConsensus.html">lazy consensus</a> for most of our
decisions, be them validating xref:contributing.adoc#_how_to_contribute_some_code[code changes], enacting
<a href="contributing.html#a_idea_or_design_proposals">design decisions</a>.
</p>
</section>
<section>
<h2><a name="Voting"></a>Voting</h2>
<ul>Some decisions might require to vote:
<li>releases</li>
<li>establishing a new sub-project</li>
<li>retiring sub-projects</li>
<li>taking a decision when lazy consensus failed.</li>
</ul>
<p>Note that we encourage discussing the issues prior to trigger a vote. That way bad surprises may be avoided ahead of time.</p>
<p>
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 committers 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.
</p>
<p>
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 &quot;real jobs&quot; 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.
</p>
<p>
Each vote can be made in one of three flavors:
</p>
<p>
<b>+1</b>
<br />
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).
</p>
<p>
<b>+-0</b>
<br />
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.
</p>
<p>
<b>-1</b>
<br />
No. On issues where consensus is required, this vote counts as a
veto. All vetos 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 cast 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.
</p>
<p>
An action item requiring consensus approval must receive at least 3
binding +1 votes and no vetos. 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.
</p>
<p>
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.
</p>
</section>
<section>
<h2><a name="Section_for_new_committers"></a>Section for new committers</h2>
<p>First congratulation for your involvement!</p>
As part of the <a class="externalLink" href="https://community.apache.org/newcommitter.html">process to become a committer</a>, the following steps should have had been emailed to you:
<ul>
<li>Signing of <a class="externalLink" href="https://www.apache.org/licenses/#clas">Contributor License Agreement</a></li>
<li>Establishing an Apache profile with the Apache secretary.</li>
<li>Access will directly be granted on the<a class="externalLink" href="https://issues.apache.org/jira/projects/JAMES">JIRA</a>,
the ASF Git repository and the <a class="externalLink" href="https://ci-builds.apache.org/job/james/job/ApacheJames/">ci</a>.</li>
<li>Extra steps should be taken for GitHub access (see below).</li>
<li>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 announce would do the trick!</li>
</ul>
<section>
<h3><a name="Accessing_Apache_GitHub_as_a_Committer"></a>Accessing Apache GitHub as a Committer</h3>
<ul>
<li>Verify you have a GitHub ID enabled with <a class="externalLink" href="https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/">2FA</a></li>
<li>Enter your GitHub ID into your <a class="externalLink" href="https://id.apache.org/">Apache ID profile</a></li>
<li>Merge your Apache and GitHub accounts using <a class="externalLink" href="https://gitbox.apache.org/setup/">GitBox</a> (Apache Account Linking utility). You should see 3 green checks in GitBox.</li>
</ul>
<p>Wait at least 30 minutes for an email inviting you to Apache GitHub Organization and accept invitation.</p>
<p>After accepting the GitHub Invitation verify that you are a member of the <a class="externalLink" href="https://github.com/orgs/apache/teams/james-committers">GitHub Apache James team</a>.</p>
</section></section>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">Copyright &#169; 2006-2024
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>