| <!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 Lenya 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://lenya.apache.org/">lenya</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=""><img class="logoImage" alt="Lenya" src="images/apache-lenya-light.png" title=""></a> |
| </div> |
| <!--+ |
| |end group logo |
| +--> |
| <!--+ |
| |start Project Logo |
| +--> |
| <div class="projectlogo"> |
| <a href=""></a> |
| </div> |
| <!--+ |
| |end Project Logo |
| +--> |
| <!--+ |
| |start Search |
| +--> |
| <div class="searchbox"> |
| <form action="http://www.google.com/search" method="get" class="roundtopsmall"> |
| <input value="lenya.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with ');" size="25" name="q" id="query" type="text" value="Search the site with "> |
| <input name="Search" value="Search" type="submit"> |
| </form> |
| </div> |
| <!--+ |
| |end search |
| +--> |
| <!--+ |
| |start Tabs |
| +--> |
| <ul id="tabs"> |
| <li class="current"> |
| <a class="selected" href="index.html">Project</a> |
| </li> |
| <li> |
| <a class="unselected" href="docs/index.html">Documentation</a> |
| </li> |
| <li> |
| <a class="unselected" href="docs/1_4/index.html">Version 1.4</a> |
| </li> |
| <li> |
| <a class="unselected" href="docs/1_2_x/index.html">Version 1.2</a> |
| </li> |
| <li> |
| <a class="unselected" href="community/index.html">Community</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');">Project</div> |
| <div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> |
| <div class="menuitem"> |
| <a href="index.html">About</a> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.2', 'skin/')" id="menu_1.1.2Title" class="menutitle">Changes</div> |
| <div id="menu_1.1.2" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="tlp-HEAD.svn-revision.xml">current revision number</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-HEAD.svn-sh.xml">create svn log shell</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-HEAD.svn.html">log HEAD</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2007-04.svn.html">log 2007-04</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2007-03.svn.html">log 2007-03</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2007-02.svn.html">log 2007-02</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2007-01.svn.html">log 2007-01</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-12.svn.html">log 2006-12</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-11.svn.html">log 2006-11</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-10.svn.html">log 2006-10</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-09.svn.html">log 2006-09</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-08.svn.html">log 2006-08</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-07.svn.html">log 2006-07</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-06.svn.html">log 2006-06</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-05.svn.html">log 2006-05</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-04.svn.html">log 2006-04</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-03.svn.html">log 2006-03</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-02.svn.html">log 2006-02</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2006-01.svn.html">log 2006-01</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-12.svn.html">log 2005-12</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-11.svn.html">log 2005-11</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-10.svn.html">log 2005-10</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-09.svn.html">log 2005-09</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-08.svn.html">log 2005-08</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-07.svn.html">log 2005-07</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-06.svn.html">log 2005-06</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-05.svn.html">log 2005-05</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-04.svn.html">log 2005-04</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-03.svn.html">log 2005-03</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-02.svn.html">log 2005-02</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2005-01.svn.html">log 2005-01</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2004-12.svn.html">log 2004-12</a> |
| </div> |
| <div class="menuitem"> |
| <a href="tlp-2004-11.svn.html">log 2004-11</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2004-07-10.svn.html">inc-2004-07-10</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2004-04-06.svn.html">inc-2004-04-06</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2004-01-03.svn.html">inc-2004-01-03</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-11-12.svn.html">inc-2003-11-12</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-10.svn.html">inc-2003-10</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-09.svn.html">inc-2003-09</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-08.svn.html">inc-2003-08</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-07.svn.html">inc-2003-07</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-06.svn.html">inc-2003-06</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-05.svn.html">inc-2003-05</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-04.svn.html">inc-2003-04</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-03.svn.html">inc-2003-03</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2003-01-02.svn.html">inc-2003-01-02</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2002-10-12.svn.html">inc-2002-10-12</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2002-08-09.svn.html">inc-2002-08-09</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2002-05-07.svn.html">inc-2002-05-07</a> |
| </div> |
| <div class="menuitem"> |
| <a href="incubator-2002-01-04.svn.html">inc-2002-01-04</a> |
| </div> |
| </div> |
| <div class="menuitem"> |
| <a href="charter.html">Charter</a> |
| </div> |
| <div class="menupage"> |
| <div class="menupagetitle">Project guidelines</div> |
| <div class="menupageitemgroup"> |
| <div class="menupageitem"> |
| <a title="The mission of Apache Lenya" href="#mission">The mission of Apac...</a> |
| </div> |
| <div class="menupageitem"> |
| <a title="Open development" href="#way">Open development...</a> |
| </div> |
| <div class="menupageitem"> |
| <a title="Roles and responsibilities" href="#roles">Roles and responsib...</a> |
| </div> |
| <div class="menupageitem"> |
| <a title="Project Management Committee (PMC)" href="#pmc">Project Management ...</a> |
| </div> |
| <div class="menupageitem"> |
| <a href="#decision">Decision making</a> |
| </div> |
| <div class="menupageitem"> |
| <a title="Communication channels" href="#communication">Communication chann...</a> |
| </div> |
| <div class="menupageitem"> |
| <a href="#code">Code management</a> |
| </div> |
| <div class="menupageitem"> |
| <a title="Contribution and acknowledgement" href="#contribution">Contribution and ac...</a> |
| </div> |
| <div class="menupageitem"> |
| <a title="Development procedure" href="#develop">Development procedu...</a> |
| </div> |
| </div> |
| </div> |
| <div class="menuitem"> |
| <a href="who.html" title="Explain who is involved">Who we are</a> |
| </div> |
| <div class="menuitem"> |
| <a href="history.html">History</a> |
| </div> |
| <div class="menuitem"> |
| <a href="screenshots.html">Screenshots</a> |
| </div> |
| <div class="menuitem"> |
| <a href="roadmap.html">Roadmap</a> |
| </div> |
| <div class="menuitem"> |
| <a href="license.html">License</a> |
| </div> |
| <div class="menuitem"> |
| <a href="resolution.html">Resolution</a> |
| </div> |
| <div class="menuitem"> |
| <a href="related-projects.html">Related Projects</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> |
| <h1>Apache Lenya project guidelines</h1> |
| |
| <p> |
| This document provides the guidelines under which the Apache Lenya |
| project operates. It defines the roles and responsibilities, who may vote, |
| how voting works, how conflicts are resolved, etc. |
| Apache Lenya 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="h3">The mission of Apache Lenya</h2> |
| <div class="section"> |
| <p> |
| The generation of open source content management solutions, |
| maintaining a separation of content and presentation. |
| </p> |
| </div> |
| |
| |
| <a name="N1001E"></a><a name="way"></a> |
| <h2 class="h3">Open development</h2> |
| <div class="section"> |
| <p> |
| Lenya 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="h3">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 current Apache Lenya committers and PMC members are |
| <a href="who.html">listed</a>. The Lenya PMC has additionally granted commit access |
| to committers from its sister projects Apache Cocoon and Apache Forrest. |
| </p> |
| </div> |
| |
| |
| <a name="N10082"></a><a name="pmc"></a> |
| <h2 class="h3">Project Management Committee (PMC)</h2> |
| <div class="section"> |
| <p>The Apache Lenya project was established in spring 2003 and became a |
| top-level project in September 2004. |
| The Project Management Committee (PMC) was created by a |
| <a href="http://www.apache.org/foundation/records/minutes/2004/board_minutes_2004_09_22.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>. |
| </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.</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 active PMC members. |
| </p> |
| <p> |
| A PMC member is considered |
| "emeritus" by their own declaration or by not contributing in |
| any form to the project for over six months. An emeritus member may |
| request reinstatement to the PMC. Such reinstatement is subject to |
| consensus approval of the active PMC members. Membership of the PMC can be |
| revoked by unanimous consensus of all active 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="N100CF"></a><a name="report"></a> |
| <h3 class="h4">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="N100E0"></a><a name="elect"></a> |
| <h3 class="h4">Electing new committers and PMC members</h3> |
| <p> |
| We conduct the vote on the private PMC mailing list to enable a frank |
| discussion. |
| 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. However, there may be extraordinary cases where we want |
| limited work-related commit access (not also a PMC member). |
| This will be resolved during the discussion and vote. |
| Notes about this process are in the "committers" svn in the |
| pmc/lenya/ directory. |
| </p> |
| </div> |
| |
| |
| <a name="N100EB"></a><a name="decision"></a> |
| <h2 class="h3">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="N100F7"></a><a name="voting"></a> |
| <h3 class="h4">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="N1015B"></a><a name="approvals"></a> |
| <h3 class="h4">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 active 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 |
| binding vote holders to vote +1 |
| </td> |
| |
| </tr> |
| |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Unanimous consensus</strong></td> |
| <td colspan="1" rowspan="1"> |
| All voters with binding votes must vote and there |
| can be no binding vetoes (-1). |
| </td> |
| |
| </tr> |
| |
| </table> |
| <a name="N101AE"></a><a name="veto"></a> |
| <h3 class="h4">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="N101C1"></a><a name="actions"></a> |
| <h3 class="h4">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 for trunk, lazy majority for the release branch. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Active PMC members |
| </td> |
| |
| </tr> |
| |
| <tr> |
| |
| <td colspan="1" rowspan="1"><strong>Opening / Closing a branch</strong></td> |
| <td colspan="1" rowspan="1"> |
| When a commiter wants to open a new branch in SVN, or close an existing branch, a vote |
| is required. |
| </td> |
| <td colspan="1" rowspan="1"> |
| Lazy majority |
| </td> |
| <td colspan="1" rowspan="1"> |
| Active 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"> |
| Active 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"> |
| Active 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"> |
| Active 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"> |
| Active 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"> |
| Active 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"> |
| Active 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"> |
| Active 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"> |
| Active PMC members (excluding the member in question) |
| </td> |
| |
| </tr> |
| |
| </table> |
| <a name="N102D5"></a><a name="timeframe"></a> |
| <h3 class="h4">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, |
| 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> |
| <a name="N102DF"></a><a name="procedure"></a> |
| <h3 class="h4">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. |
| </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="N102F3"></a><a name="ultimatum"></a> |
| <h3 class="h4">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="N102FE"></a><a name="communication"></a> |
| <h2 class="h3">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="N10314"></a><a name="code"></a> |
| <h2 class="h3">Code management</h2> |
| <div class="section"> |
| <p>Development on the Lenya codebase happens on the trunk, unless a vote to create a branch |
| has passed. Experimental code not immediately intended for merging into trunk may |
| be commited to the sandbox. In order to prevent a code graveyard, sandbox contents will |
| be reviewed every 6 months and either merged into trunk, promoted to their own top-level directory, |
| or deleted. At any one time, the Lenya project maintains one release branch. At appropriate |
| times, the Lenya project may cut a new release branch from trunk, and retire the previous one. |
| Old release branches are kept in SVN, but are clearly marked as unmaintained both in SVN and on the web site. |
| </p> |
| <p> |
| The term "patch" has two meanings: Developers provide a set of changes |
| via our <a href="community/index.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 by commiters on trunk, and <a href="http://www.apache.org/foundation/glossary.html#ReviewThenCommit">Review-then-Commit</a> |
| on the release branch. 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. |
| Patches from non-commiters are applied according to the same rules by a commiter. |
| </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="N10340"></a><a name="contribution"></a> |
| <h2 class="h3">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 Lenya, 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 Lenya 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="community/index.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. Plus, it reduces the risk of bit rot, |
| ie, patches that no longer cleanly apply due to unrelated code changes. |
| </li> |
| |
| <li> |
| Committers write descriptive commit messages, which are then aggregated into |
| a top-level changes document. This enables linkage |
| to the relevant issue and shows the contributor's name. It also shows |
| the name of the committer who did the work to add the patch. |
| </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="http://forrest.apache.org/committed.html">forrest 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 |
| changes pages; use 'svn log' and 'svn blame'. |
| </p> |
| </div> |
| |
| |
| <a name="N10387"></a><a name="develop"></a> |
| <h2 class="h3">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. If a commiter determines a need for a new branch, |
| he discusses the rationale on the developer list, and the decision is made by a vote.</p> |
| </div> |
| |
| <!-- FIXME: |
| |
| 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-2005 <a href="http://www.apache.org/licenses/LICENSE-2.0">The Apache Software Foundation.</a> |
| </div> |
| <div id="feedback"> |
| Send feedback about the website to: |
| <a id="feedbackto" href="mailto:dev@lenya.apache.org?subject=Feedback%C2%A0for%C2%A0guidelines.html">dev@lenya.apache.org</a> |
| </div> |
| <!--+ |
| |end bottomstrip |
| +--> |
| </div> |
| </body> |
| </html> |