| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <head> |
| <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <meta content="Apache Forrest" name="Generator"> |
| <meta name="Forrest-version" content="0.8-dev"> |
| <meta name="Forrest-skin-name" content="pelt"> |
| <title>Apache Forrest project guidelines</title> |
| <link type="text/css" href="skin/basic.css" rel="stylesheet"> |
| <link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet"> |
| <link media="print" type="text/css" href="skin/print.css" rel="stylesheet"> |
| <link type="text/css" href="skin/profile.css" rel="stylesheet"> |
| <script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script> |
| <link rel="shortcut icon" href="favicon.ico"> |
| </head> |
| <body onload="init()"> |
| <script type="text/javascript">ndeSetTextSize();</script> |
| <div id="top"> |
| <!--+ |
| |breadtrail |
| +--> |
| <div class="breadtrail"> |
| <a href="http://www.apache.org/">apache</a> > <a href="http://forrest.apache.org/">forrest</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> |
| </div> |
| <!--+ |
| |header |
| +--> |
| <div class="header"> |
| <!--+ |
| |start group logo |
| +--> |
| <div class="grouplogo"> |
| <a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="images/apache-forrest.png" title="The Apache Software Foundation"></a> |
| </div> |
| <!--+ |
| |end group logo |
| +--> |
| <!--+ |
| |start Project Logo |
| +--> |
| <div class="projectlogo"> |
| <a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="images/project-logo.gif" title="Apache Forrest"></a> |
| </div> |
| <!--+ |
| |end Project Logo |
| +--> |
| <!--+ |
| |start Search |
| +--> |
| <div class="searchbox"> |
| <form action="http://www.google.com/search" method="get" class="roundtopsmall"> |
| <input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google"> |
| <input name="Search" value="Search" type="submit"> |
| </form> |
| </div> |
| <!--+ |
| |end search |
| +--> |
| <!--+ |
| |start Tabs |
| +--> |
| <ul id="tabs"> |
| <li> |
| <a class="unselected" href="index.html">Welcome</a> |
| </li> |
| <li class="current"> |
| <a class="selected" href="contrib.html">Developers</a> |
| </li> |
| <li> |
| <a class="unselected" href="versions/index.html">Versioned Docs</a> |
| </li> |
| <li> |
| <a class="unselected" href="pluginDocs/index.html">Plugins</a> |
| </li> |
| <li> |
| <a class="unselected" href="tools/index.html">Tools</a> |
| </li> |
| </ul> |
| <!--+ |
| |end Tabs |
| +--> |
| </div> |
| </div> |
| <div id="main"> |
| <div id="publishedStrip"> |
| <!--+ |
| |start Subtabs |
| +--> |
| <div id="level2tabs"></div> |
| <!--+ |
| |end Endtabs |
| +--> |
| <script type="text/javascript"><!-- |
| document.write("Last Published: " + document.lastModified); |
| // --></script> |
| </div> |
| <!--+ |
| |breadtrail |
| +--> |
| <div class="breadtrail"> |
| |
| |
| </div> |
| <!--+ |
| |start Menu, mainarea |
| +--> |
| <!--+ |
| |start Menu |
| +--> |
| <div id="menu"> |
| <div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Getting involved</div> |
| <div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> |
| <div class="menuitem"> |
| <a href="contrib.html" title="Everyone is a developer and has something to contribute">Contributing</a> |
| </div> |
| <div class="menuitem"> |
| <a href="mail-lists.html" title="Discussion mail lists are the heart of the project: dev, user, svn">Mail lists and discussion</a> |
| </div> |
| <div class="menuitem"> |
| <a href="issues.html" title="Issue tracker manages known issues and desired enhancements">Reporting bugs and issues</a> |
| </div> |
| <div class="menuitem"> |
| <a href="forrest-friday.html" title="ForrestFriday monthly get-together">ForrestFriday IRC</a> |
| </div> |
| <div class="menuitem"> |
| <a href="events.html" title="List of upcoming related conferences and meetings">Events</a> |
| </div> |
| <div onclick="SwitchMenu('menu_selected_1.1.6', 'skin/')" id="menu_selected_1.1.6Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Project</div> |
| <div id="menu_selected_1.1.6" class="selectedmenuitemgroup" style="display: block;"> |
| <div class="menupage"> |
| <div class="menupagetitle">Project guidelines</div> |
| </div> |
| <div class="menuitem"> |
| <a href="committed.html" title="Notes about contribution">Being committed</a> |
| </div> |
| <div class="menuitem"> |
| <a href="roles.html" title="Tasks to keep the project flowing">Project roles</a> |
| </div> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Resources and Infrastructure</div> |
| <div id="menu_1.2" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="asf-infrastructure.html" title="Explain the ASF infrastructure">Introduction</a> |
| </div> |
| <div class="menuitem"> |
| <a href="mail-lists.html" title="Discussion mail lists are the heart of the project: dev, user, svn">Mail lists</a> |
| </div> |
| <div class="menuitem"> |
| <a href="issues.html" title="Issue tracker manages known issues and desired enhancements">Issue management</a> |
| </div> |
| <div class="menuitem"> |
| <a href="svn.html" title="Access to the Subversion (SVN) version control system">Version control</a> |
| </div> |
| <div class="menuitem"> |
| <a href="http://forrest.zones.apache.org/" title="Demonstrations and testbed at forrest.zones.apache.org">Demonstrations</a> |
| </div> |
| <div class="menuitem"> |
| <a href="gump.html">Gump integration</a> |
| </div> |
| <div onclick="SwitchMenu('menu_1.2.7', 'skin/')" id="menu_1.2.7Title" class="menutitle">Planning notes</div> |
| <div id="menu_1.2.7" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="plan/index.html">Overview</a> |
| </div> |
| <div class="menuitem"> |
| <a href="plan/internal-xhtml.html">Internal XHTML</a> |
| </div> |
| </div> |
| <div class="menuitem"> |
| <a href="todo.html">Todo</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Best Practices and Procedures</div> |
| <div id="menu_1.3" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="howto-dev.html" title="Describes tips and procedures for efficiently developing with Forrest.">Development tips</a> |
| </div> |
| <div class="menuitem"> |
| <a href="subversion_bestpractices.html" title="Best practice notes for Subversion">Subversion</a> |
| </div> |
| <div class="menuitem"> |
| <a href="documentation_bestpractices.html" title="Best practice notes for documentation">Documentation</a> |
| </div> |
| <div class="menuitem"> |
| <a href="howto-howto.html" title="Instructions for writing a new howto-document">Write a How-to</a> |
| </div> |
| <div onclick="SwitchMenu('menu_1.3.5', 'skin/')" id="menu_1.3.5Title" class="menutitle">Committer notes</div> |
| <div id="menu_1.3.5" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="zone.html" title="Notes for committers to manage forrest.zones.apache.org">Zone management</a> |
| </div> |
| <div class="menuitem"> |
| <a href="procedures/release/How_to_release.html" title="Instructions on preparing and creating a new Forrest release.">How to release</a> |
| </div> |
| <div class="menuitem"> |
| <a href="procedures/How_to_publish_docs.html" title="Instructions on publishing the Forrest Website">Publishing Forrest documentation</a> |
| </div> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Proposals</div> |
| <div id="menu_1.4" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="proposal-asf-forrestbot.html">ASF Forrestbot</a> |
| </div> |
| </div> |
| <div id="credit"></div> |
| <div id="roundbottom"> |
| <img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> |
| <!--+ |
| |alternative credits |
| +--> |
| <div id="credit2"> |
| <a href="http://apachecon.com/2007/EU/"><img border="0" title="ApacheCon Europe 2007" alt="ApacheCon Europe 2007 - logo" src="http://apache.org/ads/ApacheCon/2007-europe-125x125.png" style="width: 125px;height: 125px;"></a><a href="http://people.apache.org/calendar.html#200711"><img border="0" title="ApacheCon US 2007" alt="ApacheCon US 2007 - logo" src="http://apache.org/ads/ApacheCon/2007-usa-125x125.png" style="width: 125px;height: 125px;"></a> |
| </div> |
| </div> |
| <!--+ |
| |end Menu |
| +--> |
| <!--+ |
| |start content |
| +--> |
| <div id="content"> |
| <div title="Portable Document Format" class="pdflink"> |
| <a class="dida" href="guidelines.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br> |
| PDF</a> |
| </div> |
| <div class="trail">Font size: |
| <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button"> |
| <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button"> |
| <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button"> |
| </div> |
| <h1>Apache Forrest project guidelines</h1> |
| <div id="minitoc-area"> |
| <ul class="minitoc"> |
| <li> |
| <a href="#mission">The mission of Apache Forrest</a> |
| </li> |
| <li> |
| <a href="#way">Open development</a> |
| </li> |
| <li> |
| <a href="#roles">Roles and responsibilities</a> |
| </li> |
| <li> |
| <a href="#pmc">Project Management Committee (PMC)</a> |
| <ul class="minitoc"> |
| <li> |
| <a href="#report">Quarterly reports to ASF Board</a> |
| </li> |
| <li> |
| <a href="#elect">Electing new committers and PMC members</a> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <a href="#decision">Decision making</a> |
| <ul class="minitoc"> |
| <li> |
| <a href="#voting">Voting</a> |
| </li> |
| <li> |
| <a href="#approvals">Types of approval</a> |
| </li> |
| <li> |
| <a href="#veto">Vetoes</a> |
| </li> |
| <li> |
| <a href="#actions">Actions</a> |
| </li> |
| <li> |
| <a href="#timeframe">Voting timeframes</a> |
| </li> |
| <li> |
| <a href="#procedure">Voting procedure</a> |
| </li> |
| <li> |
| <a href="#ultimatum">Ultimatum and breakdown</a> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <a href="#communication">Communication channels</a> |
| </li> |
| <li> |
| <a href="#code">Code management</a> |
| </li> |
| <li> |
| <a href="#contribution">Contribution and acknowledgement</a> |
| </li> |
| <li> |
| <a href="#develop">Development procedure</a> |
| </li> |
| </ul> |
| </div> |
| |
| <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 |
| (<a href="http://www.apache.org/foundation/">ASF</a>) which is a |
| non-profit corporation. 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> |
| |
| <a name="N10014"></a><a name="mission"></a> |
| <h2 class="underlined_10">The mission of Apache Forrest</h2> |
| <div class="section"> |
| <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> |
| </div> |
| |
| <a name="N1001E"></a><a name="way"></a> |
| <h2 class="underlined_10">Open development</h2> |
| <div class="section"> |
| <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 <a href="#contribution">contributor</a> 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 |
| <a href="http://www.apache.org/foundation/records/minutes/2004/board_minutes_2004_05_26.txt">resolution</a> |
| that formed its Project Management Committee |
| (<a href="#pmc">PMC</a>), 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 |
| <a href="#mission">mission</a>. |
| </p> |
| <p> |
| For more information about the way that Apache projects operate, please |
| refer to the <a href="http://www.apache.org/foundation/">ASF |
| foundation</a> and <a href="http://www.apache.org/dev/">ASF |
| developer</a> sections of the ASF website, including the |
| <a href="http://www.apache.org/foundation/bylaws.html">ASF |
| ByLaws</a> and the <a href="http://www.apache.org/foundation/how-it-works.html">How it works</a> |
| document, the |
| <a href="http://www.apache.org/foundation/faq.html">FAQs</a> about |
| the Foundation, and the |
| <a href="http://incubator.apache.org/">Incubator project</a>. |
| </p> |
| </div> |
| |
| <a name="N10056"></a><a name="roles"></a> |
| <h2 class="underlined_10">Roles and responsibilities</h2> |
| <div class="section"> |
| <p> |
| The meritocracy enables various roles as defined in the |
| <a href="http://www.apache.org/foundation/how-it-works.html">How it works</a> document. |
| </p> |
| <p> |
| |
| <a href="http://www.apache.org/foundation/how-it-works.html#users">user</a> |
| | |
| <a href="http://www.apache.org/foundation/how-it-works.html#developers">developer</a> |
| | |
| <a href="http://www.apache.org/foundation/how-it-works.html#committers">committer</a> |
| | |
| <a href="http://www.apache.org/foundation/how-it-works.html#pmc-members">PMC |
| member</a> | |
| <a href="http://www.apache.org/foundation/how-it-works.html#asf-members">ASF |
| member</a> |
| |
| </p> |
| <p> |
| The Apache Forrest committers and PMC members are |
| <a href="who.html">listed</a>. |
| </p> |
| </div> |
| |
| <a name="N10082"></a><a name="pmc"></a> |
| <h2 class="underlined_10">Project Management Committee (PMC)</h2> |
| <div class="section"> |
| <p> |
| The Apache Forrest project was established in January 2002 and became a |
| top-level project in May 2004. The Project Management Committee (PMC) |
| was created by a |
| <a href="http://www.apache.org/foundation/records/minutes/2004/board_minutes_2004_05_26.txt">resolution</a> |
| of the board of the Apache Software Foundation. See explanation of the |
| role of the PMC in that resolution and also the |
| <a href="http://www.apache.org/foundation/bylaws.html">ASF |
| Bylaws</a> and |
| <a href="http://www.apache.org/foundation/how-it-works.html#pmc">How-it-works</a> |
| and this |
| <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200311.mbox/%3C7025D8A1-1D0F-11D8-8AF4-000393753936@apache.org%3E">mail |
| thread</a>. |
| </p> |
| <a name="pmc-committers"></a> |
| <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 <a href="#elect">below</a>. See the |
| "<a href="who.html">who we are</a>" 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 <a href="#way">open development</a> 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 |
| "<a href="who.html">who we are</a>" page. |
| </p> |
| <a name="emeritus"></a> |
| <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 request acknowledgement of the Board. 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 |
| <a href="http://www.apache.org/foundation/bylaws.html">ASF |
| Bylaws</a> and the |
| <a href="http://www.apache.org/dev/pmc.html#chair">PMC FAQ</a> |
| |
| </p> |
| <a name="N100F1"></a><a name="report"></a> |
| <h3 class="underlined_5">Quarterly reports to ASF Board</h3> |
| <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 |
| <a href="http://www.apache.org/foundation/board/calendar.html"> |
| board meeting</a>. Our reporting schedule is: Feb, May, Aug, Nov. |
| </p> |
| <a name="N10102"></a><a name="elect"></a> |
| <h3 class="underlined_5">Electing new committers and PMC members</h3> |
| <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 <a href="committed.html">qualities</a> 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 |
| <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200311.mbox/%3C7025D8A1-1D0F-11D8-8AF4-000393753936@apache.org%3E">indemnification</a>. |
| 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 |
| <a href="http://wiki.apache.org/general/SummerOfCode">GSoC</a>). |
| This will be resolved during the discussion and vote. |
| </p> |
| <p> |
| PMC members can also see further |
| <a href="https://svn.apache.org/repos/private/pmc/forrest/pmc-member-vote.txt">notes</a> |
| about the process of electing new people. |
| </p> |
| </div> |
| |
| <a name="N10126"></a><a name="decision"></a> |
| <h2 class="underlined_10">Decision making</h2> |
| <div class="section"> |
| <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> |
| <a name="N10132"></a><a name="voting"></a> |
| <h3 class="underlined_5">Voting</h3> |
| <p> |
| Certain actions and decisions regarding the project are made by votes |
| on the project development mailing list. Where necessary, 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 |
| <a href="#procedure">voting procedure</a> below. Votes are |
| expressed using one of the following symbols: |
| </p> |
| <table class="ForrestTable" cellspacing="1" cellpadding="4"> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>+1</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| "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 colspan="1" rowspan="1"><strong>+0</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| 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 colspan="1" rowspan="1"><strong>-0</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| 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 colspan="1" rowspan="1"><strong>-1</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| This is a negative vote. On issues where consensus is required, |
| this vote counts as a <a href="#veto">veto</a>. |
| 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 colspan="1" rowspan="1"><strong>abstain</strong> |
| </td> |
| <td colspan="1" rowspan="1">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> |
| <a name="N1019B"></a><a name="approvals"></a> |
| <h3 class="underlined_5">Types of approval</h3> |
| <p> |
| Different actions require different types of approval: |
| </p> |
| <table class="ForrestTable" cellspacing="1" cellpadding="4"> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Consensus approval</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| Consensus approval requires 3 binding +1 votes and no binding vetoes. |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Lazy majority</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| A lazy majority vote requires 3 binding +1 votes and more binding +1 |
| votes than -1 votes. |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Lazy approval</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| 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 colspan="1" rowspan="1"><strong>2/3 majority</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| 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 colspan="1" rowspan="1"><strong>Unanimous consensus</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| All of the votes that are cast are to be +1 and there |
| can be no binding vetoes (-1). |
| </td> |
| |
| </tr> |
| |
| </table> |
| <a name="N101F3"></a><a name="veto"></a> |
| <h3 class="underlined_5">Vetoes</h3> |
| <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> |
| <a name="N10206"></a><a name="actions"></a> |
| <h3 class="underlined_5">Actions</h3> |
| <p> |
| This section describes the various actions which are undertaken within |
| the project, the corresponding approval required for that action, and |
| those who have binding votes over the action. |
| </p> |
| <table class="ForrestTable" cellspacing="1" cellpadding="4"> |
| |
| <tr> |
| |
| <th colspan="1" rowspan="1">Action</th> |
| <th colspan="1" rowspan="1">Description</th> |
| <th colspan="1" rowspan="1">Approval</th> |
| <th colspan="1" rowspan="1">Binding Votes</th> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Code change</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| A change made to a codebase of the project by a committer. |
| This includes source code, documentation, website content, etc. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Lazy approval |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Release plan</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| Defines the timetable and actions for a release. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Lazy majority |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Product release</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| 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. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Lazy majority |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Adoption of new codebase</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| 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 colspan="1" rowspan="1"> |
| 2/3 majority |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>New committer</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| When a new committer is proposed for the project. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Consensus approval |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>New PMC member</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| When a new member is proposed for the PMC. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Consensus approval |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Reinstate emeritus member</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| An emeritus PMC member can be reinstated. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Consensus approval |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members (excluding the member in question) |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Committer removal</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| When removal of commit privileges is sought. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Unanimous consensus |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members (excluding the committer in question if a |
| member of the PMC) |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>PMC member removal</strong> |
| </td> |
| <td colspan="1" rowspan="1"> |
| 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 colspan="1" rowspan="1"> |
| Unanimous consensus |
| </td> |
| <td colspan="1" rowspan="1"> |
| PMC members (excluding the member in question) |
| </td> |
| |
| </tr> |
| |
| </table> |
| <a name="N1030B"></a><a name="timeframe"></a> |
| <h3 class="underlined_5">Voting timeframes</h3> |
| <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> |
| <a name="N10318"></a><a name="procedure"></a> |
| <h3 class="underlined_5">Voting procedure</h3> |
| <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 |
| <a href="#voting">voting symbols</a> 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> |
| <a name="N1032C"></a><a name="ultimatum"></a> |
| <h3 class="underlined_5">Ultimatum and breakdown</h3> |
| <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> |
| </div> |
| |
| <a name="N10337"></a><a name="communication"></a> |
| <h2 class="underlined_10">Communication channels</h2> |
| <div class="section"> |
| <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> |
| </div> |
| |
| <a name="N1034D"></a><a name="code"></a> |
| <h2 class="underlined_10">Code management</h2> |
| <div class="section"> |
| <p> |
| The term "patch" has two meanings: Developers provide a set of changes |
| via our <a href="issues.html">Issue Tracker</a> 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 |
| <a href="http://www.apache.org/foundation/glossary.html#CommitThenReview">Commit-then-review</a> |
| 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> |
| 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 <a href="http://www.apache.org/licenses/">Apache |
| License</a>. 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. |
| </p> |
| </div> |
| |
| <a name="N10372"></a><a name="contribution"></a> |
| <h2 class="underlined_10">Contribution and acknowledgement</h2> |
| <div class="section"> |
| <p> |
| Some <a href="#way">principles</a> 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 |
| <a href="http://www.apache.org/foundation/how-it-works.html#meritocracy">meritocracy</a> |
| and other sections of the |
| <a href="http://www.apache.org/foundation/how-it-works.html">How the |
| ASF works</a> 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 |
| <a href="issues.html">issue tracker</a>. 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 <a href="docs_0_70/changes.html">changes</a> 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 |
| <a href="#elect">invites</a> them to become new committers/PMC members. See the |
| <a href="committed.html">notes</a> about this topic. |
| </li> |
| |
| <li> |
| Committers/PMC members are |
| <a href="who.html">listed</a>. |
| </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 |
| <a href="docs_0_80/changes.html">changes</a> page; use 'svn log' and 'svn |
| blame'. |
| </p> |
| </div> |
| |
| <a name="N103C4"></a><a name="develop"></a> |
| <h2 class="underlined_10">Development procedure</h2> |
| <div class="section"> |
| <div class="note"> |
| <div class="label">Note</div> |
| <div class="content"> |
| 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. |
| </div> |
| </div> |
| <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> |
| <div class="fixme"> |
| <div class="label">Fixme (open)</div> |
| <div class="content"> |
| The following issues still need to be added above. There are also some |
| relevant email threads, from which we need to extract info. |
| </div> |
| </div> |
| <pre class="code"> |
| * 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&m=111968323717620 |
| http://marc.theaimsgroup.com/?l=forrest-dev&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&m=113521408020541 |
| when to make a release of a branch |
| http://marc.theaimsgroup.com/?l=forrest-dev&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 |
| </pre> |
| </div> |
| <!-- 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? |
| |
| ================== |
| |
| --> |
| |
| </div> |
| <!--+ |
| |end content |
| +--> |
| <div class="clearboth"> </div> |
| </div> |
| <div id="footer"> |
| <!--+ |
| |start bottomstrip |
| +--> |
| <div class="lastmodified"> |
| <script type="text/javascript"><!-- |
| document.write("Last Published: " + document.lastModified); |
| // --></script> |
| </div> |
| <div class="copyright"> |
| Copyright © |
| 2002-2007 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a> |
| </div> |
| <!--+ |
| |end bottomstrip |
| +--> |
| </div> |
| </body> |
| </html> |