<?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 Apr 19, 2012 --> | |
<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 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="20120419" /> | |
<meta http-equiv="Content-Language" content="en" /> | |
<link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/> | |
<!-- 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-project-logo.gif"> | |
<img src="images/logos/james-project-logo.gif" alt="James Project" /> | |
</a> | |
<a href="http://www.apache.org/index.html" id="bannerRight"> | |
<img src="images/logos/asf-logo-reduced.gif" alt="The Apache Software Foundation" /> | |
</a> | |
<div class="clear"> | |
<hr/> | |
</div> | |
</div> | |
<div id="breadcrumbs"> | |
<div class="xleft"> | |
<span id="publishDate">Last Published: 2012-04-19</span> | |
</div> | |
<div class="xright"> <a href="index.html" title="Home">Home</a> | |
| | |
<a href="server/index.html" title="Server">Server</a> | |
| | |
<a href="hupa/index.html" title="Hupa">Hupa</a> | |
| | |
<a href="protocols/index.html" title="Protocols">Protocols</a> | |
| | |
<a href="mailet/index.html" title="Mailets">Mailets</a> | |
| | |
<a href="mailbox/index.html" title="Mailbox">Mailbox</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> | |
| | |
<a href="mpt/index.html" title="MPT">MPT</a> | |
| | |
<a href="postage/index.html" title="Postage">Postage</a> | |
</div> | |
<div class="clear"> | |
<hr/> | |
</div> | |
</div> | |
<div id="leftColumn"> | |
<div id="navcolumn"> | |
<h5>About James</h5> | |
<ul> | |
<li class="none"> | |
<a href="index.html" title="Overview">Overview</a> | |
</li> | |
<li class="none"> | |
<a href="newsarchive.html" title="News">News</a> | |
</li> | |
<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="http://wiki.apache.org/james" title="Wiki">Wiki</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> | |
</ul> | |
<h5>Download</h5> | |
<ul> | |
<li class="none"> | |
<a href="download.cgi" title="Releases">Releases</a> | |
</li> | |
<li class="none"> | |
<a href="https://repository.apache.org/content/repositories/snapshots/org/apache/james/" title=""></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"> | |
<!-- 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. --> | |
<div class="section"><h2>Apache James Project Guidelines<a name="Apache_James_Project_Guidelines"></a></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> | |
</div> | |
<div class="section"><h2>People, Places, and Things<a name="People_Places_and_Things"></a></h2> | |
<div class="section"><h3>Apache James Project Management Committee<a name="Apache_James_Project_Management_Committee"></a></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> | |
</div> | |
<div class="section"><h3>Apache James Committers<a name="Apache_James_Committers"></a></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> | |
</div> | |
<div class="section"><h3>Mailing list<a name="Mailing_list"></a></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> | |
</div> | |
<div class="section"><h3>Private list<a name="Private_list"></a></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> | |
</div> | |
<div class="section"><h3>SVN<a name="SVN"></a></h3> | |
<p> | |
All of the Apache James products are maintained in shared information | |
repositories using SVN on svn.apache.org. The Apache | |
committers have write access to these repositories; everyone | |
has read access via anonymous SVN. | |
</p> | |
</div> | |
</div> | |
<div class="section"><h2>Status<a name="Status"></a></h2> | |
<p> | |
Each of the Apache Project's active source code repositories contain a | |
file called "STATUS" which is used to keep track of the agenda | |
and plans for work within that repository. The STATUS file | |
includes information about release plans, a summary of code | |
changes committed since the last release, a list of proposed | |
changes that are under discussion, brief notes about items that | |
individual committers are working on or want discussion about, | |
and anything else that might be useful to help the group track | |
progress. The active STATUS files are automatically posted to | |
the mailing list each week. | |
</p> | |
<p> | |
Many issues will be encountered by the project, each resulting in zero | |
or more proposed action items. Issues should be raised on the | |
mailing list as soon as they are identified. Action items must | |
be raised on the mailing list and added to the relevant STATUS | |
file. All action items may be voted on, but not all of them will | |
require a formal vote. | |
</p> | |
</div> | |
<div class="section"><h2>Voting<a name="Voting"></a></h2> | |
<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 "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. | |
</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 tallied within the STATUS file, adjacent to the action item | |
under vote. All votes must be either sent to the mailing list or | |
added directly to the STATUS file entry for that 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> | |
</div> | |
<div class="section"><h2>Types of Action Items<a name="Types_of_Action_Items"></a></h2> | |
<div class="section"><h3>Long Term Plans<a name="Long_Term_Plans"></a></h3> | |
<p> | |
Long term plans are simply announcements that group members are working | |
on particular issues related to the Apache software. These are | |
not voted on, but group members who do not agree with a | |
particular plan, or think an alternate plan would be better, | |
are obligated to inform the group of their feelings. In | |
general, it is always better to hear about alternate plans | |
prior to spending time on less adequate solutions. | |
</p> | |
</div> | |
<div class="section"><h3>Short Term Plans<a name="Short_Term_Plans"></a></h3> | |
<p> | |
Short term plans are announcements that a developer is working on a | |
particular set of documentation or code files, with the | |
implication that other committers should avoid them or try to | |
coordinate their changes. This is a good way to proactively | |
avoid conflict and possible duplication of work. | |
</p> | |
</div> | |
<div class="section"><h3>Release Plan<a name="Release_Plan"></a></h3> | |
<p> | |
A release plan is used to keep all the committers aware of when a | |
release is desired, who will be the release manager, when the | |
repository will be frozen in order to create the release, and | |
assorted other trivia to keep us from tripping over ourselves | |
during the final moments. Lazy majority decides each issue in | |
the release plan. | |
</p> | |
</div> | |
<div class="section"><h3>Release Testing<a name="Release_Testing"></a></h3> | |
<p> | |
After a new release is built, colloquially termed a tarball, it must be | |
tested before being released to the public. Majority approval | |
is required before the tarball can be publically released. | |
</p> | |
</div> | |
<div class="section"><h3>Showstoppers<a name="Showstoppers"></a></h3> | |
<p> | |
Showstoppers are issues that require a fix be in place before the next public | |
release. They are listed in the STATUS file in order to focus | |
special attention on the problem. An issue becomes a | |
showstopper when it is listed as such in STATUS and remains so | |
by lazy consensus. | |
</p> | |
</div> | |
<div class="section"><h3>Product Changes<a name="Product_Changes"></a></h3> | |
<p> | |
Changes to the Apache James products, including code and documentation, | |
will appear as action items under several categories | |
corresponding to the change status: | |
</p> | |
</div> | |
<div class="section"><h3>Concept/Plan<a name="ConceptPlan"></a></h3> | |
<p> | |
An idea or plan for a change. These are usually only listed in STATUS | |
when the change is substantial, significantly impacts the API, | |
or is likely to be controversial. Votes are being requested | |
early so as to uncover conflicts before too much work is done. | |
</p> | |
</div> | |
<div class="section"><h3>Proposed Patch<a name="Proposed_Patch"></a></h3> | |
<p> | |
A specific set of changes to the current product in the form of | |
input to the patch command (a diff output). | |
</p> | |
</div> | |
<div class="section"><h3>Committed Change<a name="Committed_Change"></a></h3> | |
<p> | |
A one-line summary of a change that has been committed to the | |
repository since the last public release. | |
</p> | |
<p> | |
All product changes to the currently active repository are subject to | |
lazy consensus. All product changes to a prior-branch (old | |
version) repository require consensus before the change is | |
committed. | |
</p> | |
</div> | |
</div> | |
<div class="section"><h2>When to Commit a Change<a name="When_to_Commit_a_Change"></a></h2> | |
<p> | |
Ideas must be review-then-commit; patches can be commit-then-review. With | |
a commit-then-review process, we trust that the developer doing | |
the commit has a high degree of confidence in the change. | |
Doubtful changes, new features, and large-scale overhauls need | |
to be discussed before being committed to a repository. Any | |
change that affects the semantics of arguments to configurable | |
directives, significantly adds to the runtime size of the | |
program, or changes the semantics of an existing API function | |
must receive consensus approval on the mailing list before being | |
committed. | |
</p> | |
<p> | |
Each developer is responsible for notifying the mailing list and adding | |
an action item to STATUS when they have an idea for a new | |
feature or major change to propose for the product. The | |
distributed nature of the Apache project requires an advance | |
notice of 48 hours in order to properly review a major change -- | |
consensus approval of either the concept or a specific patch is | |
required before the change can be committed. Note that a member | |
might veto the concept (with an adequate explanation), but later | |
rescind that veto if a specific patch satisfies their | |
objections. No advance notice is required to commit singular bug | |
fixes. | |
</p> | |
<p> | |
Related changes should be committed as a group, or very closely together. | |
Half-completed projects should not be committed unless doing so | |
is necessary to pass the baton to another developer who has | |
agreed to complete the project in short order. All code changes | |
must be successfully compiled on the developer's platform before | |
being committed. | |
</p> | |
<p> | |
The current source code tree should be capable of complete compilation | |
at all times. However, it is sometimes impossible for a | |
developer on one platform to avoid breaking some other platform | |
when a change is committed, particularly when completing the | |
change requires access to a special development tool on that | |
other platform. If it is anticipated that a given change will | |
break some other platform, the committer must indicate that in | |
the commit log. | |
</p> | |
<p> | |
The committer is responsible for the quality of any third-party code or | |
documentation they commit to the repository. All software | |
committed to the repository must be covered by the Apache | |
LICENSE or contain a copyright and license that allows | |
redistribution under the same conditions as the Apache LICENSE. | |
</p> | |
<p> | |
A committed change must be reversed if it is vetoed by one of the | |
voting members and the veto conditions cannot be immediately | |
satisfied by the equivalent of a "bug fix" commit. The veto must | |
be rescinded before the change can be included in any public | |
release. | |
</p> | |
</div> | |
<div class="section"><h2>Patch Format<a name="Patch_Format"></a></h2> | |
<p> | |
When a specific change to the software is proposed for discussion or | |
voting on the mailing list, it should be presented in the form | |
of input to the patch command. When sent to the mailing list, | |
the message should contain a Subject beginning with [PATCH] and | |
a distinctive one-line summary corresponding to the action item | |
for that patch. Afterwords, the patch summary in the STATUS file | |
should be updated to point to the Message-ID of that message. | |
</p> | |
<p> | |
The patch should be created by using the diff -u command from the | |
original software file(s) to the modified software file(s). | |
E.g., | |
</p> | |
<div class="source"><pre> | |
diff -u James.java.orig James.java >> patchfile.txt | |
</pre></div> | |
<p> | |
All patches necessary to address an action item should be concatenated | |
within a single patch message. If later modification of the | |
patch proves necessary, the entire new patch should be posted | |
and not just the difference between two patches. The STATUS file | |
entry should then be updated to point to the new patch message. | |
</p> | |
<p> | |
The completed patchfile should produce no errors or prompts when the | |
command, | |
</p> | |
<div class="source"><pre> | |
patch -s < patchfile | |
</pre></div> | |
<p> | |
is issued in the target repository. | |
</p> | |
</div> | |
</div> | |
</div> | |
<div class="clear"> | |
<hr/> | |
</div> | |
<div id="footer"> | |
<div class="xright">Copyright © 2006-2012 | |
<a href="http://www.apache.org/">The Apache Software Foundation</a>. | |
All Rights Reserved. | |
</div> | |
<div class="clear"> | |
<hr/> | |
</div> | |
</div> | |
</body> | |
</html> |