blob: 1a9c774fbd189bc64dee8247bd86183dae1fb5cd [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 document PUBLIC "-//APACHE//DTD Documentation V1.3//EN" "http://forrest.apache.org/dtd/document-v13.dtd">
<document>
<header>
<title>Apache Forrest project guidelines</title>
</header>
<body>
<p>
This document provides the guidelines under which the Apache Forrest
project operates. It defines the roles and responsibilities, who may vote,
how voting works, how conflicts are resolved, etc. Apache Forrest is a
project of The Apache Software Foundation
(<link href="http://www.apache.org/foundation/">ASF</link>) which is a
US 501(c)(3) charitable organisation. As with all such organisations there are some
procedures to be followed. The ASF website explains the operation and
background of the ASF. These project guidelines supplement that ASF
documentation. Normally these guidelines are not needed - the project just
gets on with its day-to-day operation - but they enable all people to
understand how the project operates.
</p>
<section id="mission">
<title>The mission of Apache Forrest</title>
<p>
The creation and maintenance of open-source software for distribution at
no charge to the public, with the purpose of generation of aggregated
multi-channel documentation maintaining a separation of content and
presentation.
</p>
</section>
<section id="way">
<title>Open development</title>
<p>
Forrest is typical of Apache projects, in that it operates under a set
of principles that encourage open development. There is no clear
definition (perhaps that is part of it) and it is ever-evolving. Each
ASF project is different in its own way - there is healthy diversity
rather than uniformity across all projects. The main principles are to
facilitate open collaborative development, with respect for others; to
ensure that there is a healthy community (even to give community issues
higher priority than code issues); to use a consensus-based approach; to
ensure that each <link href="#contribution">contributor</link> is
recognised and feels a productive part of the community; to encourage
diversity; to make the project a nice place to be.
</p>
<p>
Each project, as part of the
<link href="http://www.apache.org/foundation/records/minutes/2004/board_minutes_2004_05_26.txt">resolution</link>
that formed its Project Management Committee
(<link href="#pmc">PMC</link>), creates its set of project guidelines
intended to encourage open development and increased participation.
These facilitate the project to conduct its main charge, which is the
creation and maintenance of open-source software for distribution at no
charge to the public with the purpose of its
<link href="#mission">mission</link>.
</p>
<p>
For more information about the way that Apache projects operate, please
refer to the <link href="http://www.apache.org/foundation/">ASF
foundation</link> and <link href="http://www.apache.org/dev/">ASF
developer</link> sections of the ASF website, including the
<link href="http://www.apache.org/foundation/bylaws.html">ASF
ByLaws</link> and the <link href="ext:how-it-works">How it works</link>
document, the
<link href="http://www.apache.org/foundation/faq.html">FAQs</link> about
the Foundation, and the
<link href="http://incubator.apache.org/">Incubator project</link>.
</p>
</section>
<section id="roles">
<title>Roles and responsibilities</title>
<p>
The meritocracy enables various roles as defined in the
<link href="ext:how-it-works">How it works</link> document.
</p>
<p>
<link href="http://www.apache.org/foundation/how-it-works.html#users">user</link>
|
<link href="http://www.apache.org/foundation/how-it-works.html#developers">developer</link>
|
<link href="http://www.apache.org/foundation/how-it-works.html#committers">committer</link>
|
<link href="http://www.apache.org/foundation/how-it-works.html#pmc-members">PMC
member</link> |
<link href="http://www.apache.org/foundation/how-it-works.html#asf-members">ASF
member</link>
</p>
<p>
The Apache Forrest committers and PMC members are
<link href="site:who">listed</link>.
</p>
</section>
<section id="pmc">
<title>Project Management Committee (PMC)</title>
<p>
The Apache Forrest project was
<link href="index.html#status">established</link>
in January 2002 and became a
top-level project in May 2004. The Project Management Committee (PMC)
was created by a
<link href="http://www.apache.org/foundation/records/minutes/2004/board_minutes_2004_05_26.txt">resolution</link>
of the board of the Apache Software Foundation. See explanation of the
role of the PMC in that resolution and also the
<link href="http://www.apache.org/foundation/bylaws.html">ASF
Bylaws</link> and
<link href="http://www.apache.org/foundation/how-it-works.html#pmc">How-it-works</link>
and this
<link href="http://mail-archives.apache.org/mod_mbox/incubator-general/200311.mbox/%3C7025D8A1-1D0F-11D8-8AF4-000393753936@apache.org%3E">mail
thread</link>.
</p>
<p id="pmc-committers">
At Forrest, the group of PMC members essentially equates to the group of
committers. We encourage all committers to be PMC members. See
explanation <link href="#elect">below</link>. See the
"<link href="site:who">who we are</link>" page for explanation of why
some committers from the old project are not PMC members.
</p>
<p>
PMC members can be as active as they choose, with no pressure from the
project. People can be quiet and speak up occasionally when they see a
topic that motivates them enough to contribute to the discussion or to
cast a vote. Individual PMC members do not need to be involved in every
aspect of the project. As a group, the PMC will maintain sufficient
oversight.
</p>
<p>
The responsibilities of the PMC include:
</p>
<ul>
<li>Be familiar with these project guidelines, and the
ASF Bylaws, and with the ASF documentation and procedures
in general.</li>
<li>Keep oversight of the commit log messages and ensure that
the codebase does not have copyright and license issues, and that the
project is heading in the desired direction.</li>
<li>Keep oversight of the mailing lists and community to ensure that
the <link href="#way">open development</link> ideals are upheld.</li>
<li>Resolve license disputes regarding products of the project,
including other supporting software that is re-distributed.</li>
<li>Decide what is distributed as products of the project.
In particular all releases must be approved by the PMC.</li>
<li>Guide the direction of the project.</li>
<li>Strive for and help to facilitate a harmonious productive community.</li>
<li>Nominate new PMC members and committers.</li>
<li>Maintain the project's shared resources, including the
codebase repository, mailing lists, websites.</li>
<li>Speak on behalf of the project.</li>
<li>Maintain these and other guidelines of the project.</li>
</ul>
<p>
The PMC does have a private mailing list on which it can discuss certain
issues. However this list is rarely used and every effort is made to
conduct all discussion on the public mailing lists.
</p>
<p>
Membership of the PMC is by invitation only and must receive consensus
approval of the PMC members.
</p>
<p>
The actual list of PMC members is in the SVN "committers" repository at
/board/committee-info.txt and is reflected at the
"<link href="site:who">who we are</link>" page.
</p>
<p id="emeritus">
A PMC member is considered "emeritus" by their own declaration, e.g.
perhaps personal reasons. Please send a note to the PMC private mail
list and we will follow up to
<link href="https://www.apache.org/dev/pmc.html#emeritus">adjust</link>
the roster. An
emeritus member may request reinstatement to the PMC. Such reinstatement
is subject to consensus approval of the PMC members. Membership of the
PMC can be revoked by unanimous consensus of PMC members (other than the
member in question).
</p>
<p>
The chair of the PMC is appointed by the Board and is an officer of the
ASF (Vice President). The chair has primary responsibility to the Board,
and has the power to establish rules and procedures for the day-to-day
management of the communities for which the PMC is responsible,
including the composition of the PMC itself. The chair reports to the
board every three months about the status of the project. The PMC may
consider the position of PMC chair annually and may recommend a new
chair to the board. Ultimately, however, it is the board's
responsibility who it chooses to appoint as the PMC chair. See further
explanation of the role of the chair in the
<link href="http://www.apache.org/foundation/how-it-works.html#pmc">How-it-works</link> document and the
<link href="http://www.apache.org/foundation/bylaws.html">ASF
Bylaws</link> (section 6.3) and the
<link href="http://www.apache.org/dev/pmc.html#chair">PMC FAQ</link>
</p>
<section id="report">
<title>Quarterly reports to ASF Board</title>
<p>
Every three months, it is the responsibility of our PMC chair to send
a report to the ASF Board. This is mainly concerned with the status of
our community, but can also include the technical progress. Further
details are in the "committers" SVN in the /board/ directory.
</p>
<p>
The minutes are available for each
<link href="http://www.apache.org/foundation/board/calendar.html">
board meeting</link>. Our reporting schedule is: Feb, May, Aug, Nov.
</p>
</section>
<section id="elect">
<title>Electing new committers and PMC members</title>
<p>
When we see new people who are committed and consistent, we will
discuss each case to ensure that the PMC is in agreement. See the list
of <link href="site:committed">qualities</link> that we look for. We
conduct the vote on the private PMC mailing list to enable a frank
discussion and so that we do not conduct public discussions about
people.
</p>
<p>
In most cases we will be inviting people to go straight from developer
to PMC member, i.e. they simultaneously become committer and PMC
member. We always want new committers to also be PMC members.
Otherwise they do not have a binding vote and so we would create
classes of committers. Another issue is
<link href="http://mail-archives.apache.org/mod_mbox/incubator-general/200311.mbox/%3C7025D8A1-1D0F-11D8-8AF4-000393753936@apache.org%3E">indemnification</link>.
However, when we invite a new committer we do let them choose not to
be on the PMC, though we do not encourage that.
</p>
<p>
However, there may be extraordinary cases where we want limited
work-related commit access and so the committer is not also a PMC
member (e.g. perhaps temporary access for
<link href="http://wiki.apache.org/general/SummerOfCode">GSoC</link>).
This will be resolved during the discussion and vote.
</p>
<p>
PMC members can also see further
<link href="https://svn.apache.org/repos/private/pmc/forrest/pmc-member-vote.txt">notes</link>
about the process of electing new people.
</p>
</section>
</section>
<section id="decision">
<title>Decision making</title>
<p>
Different types of decisions require different forms of approval. For
example, the previous section describes several decisions which require
"consensus approval". This section defines how voting is performed, the
types of approval, and which types of decision require which type of
approval.
</p>
<p>
Most day-to-day operations do not require explicit voting - just get on
and do the work. See the "Lazy approval" type described below.
</p>
<section id="voting">
<title>Voting</title>
<p>
Certain actions and decisions regarding the project are made by votes
on the project development mailing list. Where necessary (e.g. discussion and vote
<link href="#elect">about</link> specific people to be new committers) PMC voting
may take place on the private PMC mailing list.
</p>
<p>
Votes are clearly indicated by subject line starting with [VOTE].
Discussion and proposal should have happened prior to the vote. Voting
is carried out by replying to the vote mail. See
<link href="#procedure">voting procedure</link> below. Votes are
expressed using one of the following symbols:
</p>
<table>
<tr>
<td><strong>+1</strong>
</td>
<td>
"Yes," "Agree," or "the action should be
performed." In general, this vote also indicates a willingness
on the behalf of the voter to assist with "making it happen".
</td>
</tr>
<tr>
<td><strong>+0</strong>
</td>
<td>
This vote indicates a willingness for the action under
consideration to go ahead. The voter, however will not be able
to help.
</td>
</tr>
<tr>
<td><strong>-0</strong>
</td>
<td>
This vote indicates that the voter does not, in general, agree with
the proposed action but is not concerned enough to prevent the
action going ahead.
</td>
</tr>
<tr>
<td><strong>-1</strong>
</td>
<td>
This is a negative vote. On issues where consensus is required,
this vote counts as a <link href="#veto">veto</link>.
All vetoes must
contain an explanation of why the veto is appropriate. Vetoes with
no explanation are void. It may also be appropriate for a -1 vote
to include an alternative course of action.
</td>
</tr>
<tr>
<td><strong>abstain</strong>
</td>
<td>People can abstain from voting. They can either remain
silent or express their reason.
</td>
</tr>
</table>
<p>
All participants in the project are encouraged to show their
preference for a particular action by voting. When the votes are
tallied, only the votes of PMC members are binding. Non-binding votes
are still useful to enable everyone to understand the perception of an
action by the wider community.
</p>
<p>
Voting can also be applied to changes made to the project codebase.
These typically take the form of a veto (-1) in reply to the commit
message sent when the commit is made.
</p>
</section>
<section id="approvals">
<title>Types of approval</title>
<p>
Different actions require different types of approval:
</p>
<table>
<tr>
<td><strong>Consensus approval</strong>
</td>
<td>
Consensus approval requires 3 binding +1 votes and no binding vetoes.
</td>
</tr>
<tr>
<td><strong>Lazy majority (majority consensus)</strong>
</td>
<td>
A lazy majority vote requires 3 binding +1 votes and more binding +1
votes than -1 votes.
</td>
</tr>
<tr>
<td><strong>Lazy approval</strong>
</td>
<td>
An action with lazy approval is implicitly allowed unless a -1 vote
is received, at which time, depending on the type of action, either
lazy majority or consensus approval must be obtained.
</td>
</tr>
<tr>
<td><strong>2/3 majority</strong>
</td>
<td>
Some actions require a 2/3 majority of PMC members.
Such actions typically affect the foundation
of the project (e.g. adopting a new codebase to replace an existing
product). The higher threshold is designed to ensure such changes
are strongly supported. To pass this vote requires at least 2/3 of
the votes that are cast to be +1.
</td>
</tr>
<tr>
<td><strong>Unanimous consensus</strong>
</td>
<td>
All of the votes that are cast are to be +1 and there
can be no binding vetoes (-1).
</td>
</tr>
</table>
</section>
<section id="veto">
<title>Vetoes</title>
<p>
A valid veto cannot be over-ruled, it can only be withdrawn by its
issuer. Any veto must be accompanied by reasoning and be prepared to
defend it.
</p>
<p>
The validity of a veto, if challenged, can be confirmed by anyone who
has a binding vote. This does not necessarily signify agreement with
the veto - merely that the veto is valid. In case of disputes about
whether a veto is valid, then opinion of the PMC chair is final.
</p>
<p>
If you disagree with a valid veto, then you must engage the person
casting the veto to further discuss the issues. The vetoer is obliged
to vote early and to then work with the community to resolve the
matter.
</p>
<p>
If a veto is not withdrawn, the action that has been vetoed must be
reversed in a timely manner.
</p>
</section>
<section id="actions">
<title>Actions</title>
<p>
This section describes the various actions which are undertaken within
the project, the corresponding
<link href="#approvals">approval</link> required for that action, and
those who have binding votes over the action.
</p>
<table>
<tr>
<th>Action</th>
<th>Description</th>
<th>Approval</th>
<th>Binding Votes</th>
</tr>
<tr>
<td><strong>Code change</strong>
</td>
<td>
A change made to a codebase of the project by a committer.
This includes source code, documentation, website content, etc.
</td>
<td>
Lazy approval
</td>
<td>
PMC members
</td>
</tr>
<tr>
<td><strong>Release plan</strong>
</td>
<td>
Defines the timetable and actions for a release.
A release plan cannot be vetoed (hence lazy majority).
</td>
<td>
Lazy majority
</td>
<td>
PMC members
</td>
</tr>
<tr>
<td><strong>Product release</strong>
</td>
<td>
When a release of one of the project's products is ready, a vote is
required to accept the release as an official release of the
project.
A release cannot be vetoed (hence lazy majority).
A <link href="site:howToRelease/ReleaseManager">Release Manager</link>
might choose to get an issue resolved or re-schedule, but that is
their <link href="site:howToRelease/decisionRM">decision</link>.
</td>
<td>
Lazy majority
</td>
<td>
PMC members
</td>
</tr>
<tr>
<td><strong>Adoption of new codebase</strong>
</td>
<td>
When the codebase for an existing, released product is to be
replaced with an alternative codebase. If such a vote fails to
gain approval, the existing code base will continue.
This also covers the creation of new sub-projects
within the project.
</td>
<td>
2/3 majority
</td>
<td>
PMC members
</td>
</tr>
<tr>
<td><strong>New committer</strong>
</td>
<td>
When a new committer is proposed for the project.
</td>
<td>
Consensus approval
</td>
<td>
PMC members
</td>
</tr>
<tr>
<td><strong>New PMC member</strong>
</td>
<td>
When a new member is proposed for the PMC.
</td>
<td>
Consensus approval
</td>
<td>
PMC members
</td>
</tr>
<tr>
<td><strong>Reinstate emeritus member</strong>
</td>
<td>
An emeritus PMC member can be reinstated.
</td>
<td>
Consensus approval
</td>
<td>
PMC members (excluding the member in question)
</td>
</tr>
<tr>
<td><strong>Committer removal</strong>
</td>
<td>
When removal of commit privileges is sought.
</td>
<td>
Unanimous consensus
</td>
<td>
PMC members (excluding the committer in question if a
member of the PMC)
</td>
</tr>
<tr>
<td><strong>PMC member removal</strong>
</td>
<td>
When removal of a PMC member is sought.
See also section 6.5 of the ASF Bylaws whereby the ASF Board may
remove a PMC member.
</td>
<td>
Unanimous consensus
</td>
<td>
PMC members (excluding the member in question)
</td>
</tr>
</table>
</section>
<section id="timeframe">
<title>Voting timeframes</title>
<p>
Votes are normally open for a period of one week to allow all active
voters time to consider the vote. If the vote has not achieved a
quorum (the chair decides if sufficient people have voted), then it
can be extended for another week. If still no quorum, then the vote
fails, and would need to be raised again later. Votes relating to code
changes are not subject to a strict timetable, but should be made as
timely as possible.
</p>
<p>
Be careful about holidays when calling a vote. This is hard when we do
not know customs in every part of the world. So if someone knows that
there is a problem with the vote timing, then please say so.
</p>
</section>
<section id="procedure">
<title>Voting procedure</title>
<p>
Discussion about the topic would have already happened in a [Proposal]
email thread to express the issues and opinions. The [Vote] thread is
to ratify the proposal if that is felt to be necessary.
</p>
<p>
The instigator sends the Vote email to the dev mailing list. Describe
the issue with no ambiguity and in a positive sense. Define the date
and time for the end of the vote period.
</p>
<p>
Votes are expressed by replying email using the
<link href="#voting">voting symbols</link> defined above. Voters can
change their vote during the timeframe. At the end of the vote period,
the instigator tallies the number of final votes and reports the
results.
</p>
</section>
<section id="ultimatum">
<title>Ultimatum and breakdown</title>
<p>
For breakdown situations and those requiring unanimous consensus, if
this consensus cannot be reached within the extended timeframe, then
the Board expects the chair to act as the officer of the Foundation
and make the ultimate decision.
</p>
</section>
</section>
<section id="communication">
<title>Communication channels</title>
<p>
The primary mechanism for communication is the mailing lists. Anyone can
participate, no matter what their time zone. A reliable searchable
archive of past discussion is built. Oversight is enabled. Many eyes
ensures that the project evolves in a consistent direction.
</p>
<p>
All decisions are made on the "dev" mailing list.
</p>
<p>
The main channel for user support is the "user" mailing list. As is
usual with mailing lists, be prepared to wait for an answer.
</p>
<p>
Occasionally we will use other communication channels such as IRC. These
are used only for a specific purpose and are not permanently available.
This policy ensures that solutions are available in the mailing list
archives and enables people to respond at whatever time that they
choose. Permanent IRC channels are poor from a community-building
point-of-view, as they tend to create time-zone based cliques. So we
don't.
</p>
<p>
Similarly, private discussions are discouraged. The rest of the
community would not benefit from the understanding that is developed.
Off-list discussions put too much load on overworked volunteers.
</p>
</section>
<section id="code">
<title>Code management</title>
<p>
The term "patch" has two meanings: Developers provide a set of changes
via our <link href="site:bugs">Issue Tracker</link> marked for
inclusion, which will be applied by a committer. Committers apply their
own work directly, but it is still essentially a patch.
</p>
<p>
We use the
<link href="http://www.apache.org/foundation/glossary.html#CommitThenReview">Commit-then-review</link>
method for decision-making about code changes. Please refer to that
glossary definition. Note that it does not preclude the committer from
making changes to patches prior to their commit, nor mean that the
committer can be careless. Rather it is a policy for decision-making.
</p>
<p id="manage-licenses">
There is an important issue where both developers and committers need to
pay special attention: "licenses". We must not introduce licensing
conditions that go beyond the terms of the <link href="ext:asl">Apache
License</link>. (See also ASF <link href="ext:asf-legal">legal</link>.)
If such issues do creep in to our repository, then we
must work as quickly as possible to address it and definitely before the
next release.
</p>
<p>
There are some other problem areas: What should a committer do if the
patch is sloppy, containing inconsistent whitespace and other code
formatting, which mean that actual changes are not easily visible in the
svn diff messages. What if there is poorly constructed (yet working) xml
or java code? What if the new functionality is beyond the scope of the
project? What if there is a better way to do the task? What if the patch
will break the build, thereby preventing other developers from working
and causing an unstable trunk?
</p>
<p>
The committer has various options: ask the developer to resubmit the
patch; change the patch to fix the problems prior to committing; discuss
the issues on the dev list; commit it and then draw attention to the
issues so that the rest of the community can review and fix it. A
combination of these options would appear to be the best approach.
Please aim to not break the build, or introduce license problems, or
make noisy changes that obscure the real differences.
</p>
<p>
Committers should not be afraid to add changes that still need
attention. This enables prompt patch application and eases the load on
the individual committer. An interesting side-effect is that it
encourages community growth. See this <link href="http://marc.info/?t=118117187100001">discussion</link>
and its previous threads for an excellent view regarding this topic.
</p>
</section>
<section id="contribution">
<title>Contribution and acknowledgement</title>
<p>
Some <link href="#way">principles</link> of open development at ASF are
to ensure that each contributor is recognised and feels a productive
part of the community, and to encourage diversity, respect, and
equality. Key to this is the recognition of contributions from
individuals in a manner that also recognises the community effort that
made it all possible. It is important to remember that there is no
concept of individual leadership. See the discussion of
<link href="http://www.apache.org/foundation/how-it-works.html#meritocracy">meritocracy</link>
and other sections of the
<link href="http://www.apache.org/foundation/how-it-works.html">How the
ASF works</link> document.
</p>
<p>
In an Open Source Project, or more importantly, a project developed
using an open process, such as Apache Forrest, most contributions of
actual code are supported by, or at least *should* be supported by,
design discussion, oversight, testing, documentation, bug fixes and much
more. No code contribution is an independent unit of work (or should not
be). It is therefore impossible to credit individual contributors, it is
simply unmanageable, even if it is possible to identify each part of a
contribution.
</p>
<p>
At Apache Forrest we use the following method to provide recognition:
</p>
<ul>
<li>
All developers encourage other developers to participate on the
mailing lists, treat each other with respect, and openly collaborate.
This enables the contributors to feel a part of the project and shows
that their discussion and ideas are valuable. These replies enhance
the presence of their name in the email archives and search engines.
</li>
<li>
Encourage contributors to add patches via the
<link href="site:bugs">issue tracker</link>. This also enables clear
tracking of the issue and by default specifically shows who was the
contributor.
</li>
<li>
When committers apply the patch, they refer to the issue number
and the contributor's name. This enables linkage between the issue
tracker and the Subversion history. It adds the contributor's name
to the mail archives.
</li>
<li>
Committers apply patches as soon as possible. This keeps the contributor
enthused and shows them that their work is valuable.
</li>
<li>
Committers add an entry for each significant contribution to the
top-level <link href="site:changes">changes</link> document (site-author/status.xml)
and detailed entries to the relevant plugin's changes document. This enables linkage
to the relevant issue and shows the contributor's name. It also shows
the initials of the committer who did the work to add the patch.
</li>
<li>
When committers are adding their own work, they similarly add entries
to the "changes" documents. Their initials are added to the entry.
</li>
<li>
The existing PMC will notice new contributors who are committed. It eventually
<link href="#elect">invites</link> them to become new committers/PMC members. See the
<link href="site:committed">notes</link> about this topic.
</li>
<li>
Committers/PMC members are
<link href="site:who">listed</link>.
</li>
</ul>
<p>
As discussed above, there is no specific documentation which lists each
contributor and their work. For those who are interested there are
various mechanisms: Use general internet search services; use search
services provided by various third-party mail archives; search the "svn"
mailing list using committer IDs and using contributor names; browse the
<link href="site:changes">changes</link> page; use 'svn log' and 'svn
blame'.
</p>
</section>
<section id="develop">
<title>Development procedure</title>
<note>
This section is still under development. The issues have been discussed
on the mailing list. Decisions need to be put into words, so that we do
not need to revisit the topic.
</note>
<p>
Development work is done on the trunk of SVN. Wherever possible,
functionality is contained in "plugins". There are "release branches" of
SVN, e.g. forrest_07_branch.
</p>
<fixme author="open">
The following issues still need to be added above. There are also some
relevant email threads, from which we need to extract info.
</fixme>
<source>
* Define our policy for adding changes to release branch.
* Define the purpose of the "whiteboard/incubator".
* Declare that we only really maintain the current release branch
(although contributed patches will be applied).
* When to create a temporary branch for development and when/how to merge.
Some of the many relevant threads in no particular order ...
http://marc.theaimsgroup.com/?t=113344003500003
Whiteboard usage - rename it to incubator
http://marc.theaimsgroup.com/?t=112798856400001
Starting a 1.0 development (Re: [Proposal] rollback)
http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=111968323717620
http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=111983663526246
http://marc.theaimsgroup.com/?t=111970529900001
Project participation and hackability (was: [VOTE] merge locationmap
http://marc.theaimsgroup.com/?t=112507381300001
use of whiteboard in forrest
http://marc.theaimsgroup.com/?t=112504310100005
[Proposal] Development process and a stable trunk
http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=113521408020541
when to make a release of a branch
http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=112643002807899
How to apply an update to 0.7
http://marc.theaimsgroup.com/?t=113616009300002
[RT] "Last known working snapshot" of Forrest head
http://marc.theaimsgroup.com/?t=113830245600001
[Proposal] code freeze on dispatcher related resources
http://marc.theaimsgroup.com/?t=114667400800004
[Proposal] Refining our Development Process
Document our use of Branches for development
http://issues.apache.org/jira/browse/FOR-631
http://marc.info/?t=117858638000084
Re: fixing bugs in trunk or branch
and see prior discussion in response to r535593
</source>
</section>
<!-- FIXME:
The default is lazy consensus. So just get on with the job
unless someone asks to stop, review, perhaps revert.
==================
> We should make mention somewhere of our relationship to other projects
> Cocoon committers are Forrest committers; something with xml-commons
==================
Mention the "Contributer License Agreement".
Who needs to send it? ... is it committers plus major contributers?
==================
-->
</body>
</document>