blob: 056ee499a371bc28225fca010320a5fc3d12c31c [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="Date-Revision-yyyymmdd" content="20140918"/>
<meta http-equiv="Content-Language" content="en"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Project Management Committee Charter</title>
<link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
<link href="/css/main.css" rel="stylesheet">
<link href="/css/custom.css" rel="stylesheet">
<link href="/highlighter/github-theme.css" rel="stylesheet">
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="/js/community.js"></script>
</head>
<body>
<a href="http://github.com/apache/struts" class="github-ribbon">
<img style="position: absolute; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>
<header>
<nav>
<div role="navigation" class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
Menu
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
</div>
<div id="struts-menu" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Home<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/index.html">Welcome</a></li>
<li><a href="/download.cgi">Download</a></li>
<li><a href="/releases.html">Releases</a></li>
<li><a href="/announce.html">Announcements</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Support<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/mail.html">User Mailing List</a></li>
<li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
<li><a href="/security.html">Reporting Security Issues</a></li>
<li class="divider"></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
<li class="divider"></li>
<li><a href="/maven/project-info.html">Maven Project Info</a></li>
<li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
<li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Documentation<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/birdseye.html">Birds Eye</a></li>
<li><a href="/primer.html">Key Technologies</a></li>
<li><a href="/kickstart.html">Kickstart FAQ</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
<li class="divider"></li>
<li><a href="/getting-started/">Getting Started</a></li>
<li><a href="/security/">Security Guide</a></li>
<li><a href="/core-developers/">Core Developers Guide</a></li>
<li><a href="/tag-developers/">Tag Developers Guide</a></li>
<li><a href="/maven-archetypes/">Maven Archetypes</a></li>
<li><a href="/plugins/">Plugins</a></li>
<li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
<li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
<li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">
Contributing<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="/youatstruts.html">You at Struts</a></li>
<li><a href="/helping.html">How to Help FAQ</a></li>
<li><a href="/dev-mail.html">Development Lists</a></li>
<li><a href="/contributors/">Contributors Guide</a></li>
<li class="divider"></li>
<li><a href="/submitting-patches.html">Submitting patches</a></li>
<li><a href="/builds.html">Source Code and Builds</a></li>
<li><a href="/coding-standards.html">Coding standards</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/WW/Contributors+Guide">Contributors Guide</a></li>
<li class="divider"></li>
<li><a href="/release-guidelines.html">Release Guidelines</a></li>
<li><a href="/bylaws.html">PMC Charter</a></li>
<li><a href="/volunteers.html">Volunteers</a></li>
<li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
<li><a href="/updating-website.html">Updating the website</a></li>
</ul>
</li>
<li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
</ul>
</div>
</div>
</div>
</nav>
</header>
<article class="container">
<section class="col-md-12">
<a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/bylaws.md" title="Edit this page on GitHub">Edit on GitHub</a>
<h1 class="no_toc" id="project-management-committee-charter">Project Management Committee Charter</h1>
<ul id="markdown-toc">
<li><a href="#apache-struts-pmc-charter" id="markdown-toc-apache-struts-pmc-charter">Apache Struts PMC Charter</a></li>
<li><a href="#roles-and-responsibilities" id="markdown-toc-roles-and-responsibilities">Roles and Responsibilities</a></li>
<li><a href="#users" id="markdown-toc-users">Users</a></li>
<li><a href="#contributors" id="markdown-toc-contributors">Contributors</a></li>
<li><a href="#committers" id="markdown-toc-committers">Committers</a></li>
<li><a href="#project-management-committee-pmc" id="markdown-toc-project-management-committee-pmc">Project Management Committee (PMC)</a> <ul>
<li><a href="#management" id="markdown-toc-management">Management</a></li>
<li><a href="#pmc-duties" id="markdown-toc-pmc-duties">PMC Duties</a></li>
<li><a href="#subprojects" id="markdown-toc-subprojects">Subprojects</a></li>
</ul>
</li>
<li><a href="#decision-making" id="markdown-toc-decision-making">Decision Making</a> <ul>
<li><a href="#voting" id="markdown-toc-voting">Voting</a></li>
</ul>
</li>
<li><a href="#action-items" id="markdown-toc-action-items">Action Items</a> <ul>
<li><a href="#long-term-plans" id="markdown-toc-long-term-plans">Long Term Plans</a></li>
<li><a href="#short-term-plan" id="markdown-toc-short-term-plan">Short Term Plan</a></li>
<li><a href="#product-changes" id="markdown-toc-product-changes">Product Changes</a></li>
<li><a href="#showstoppers" id="markdown-toc-showstoppers">Showstoppers</a></li>
<li><a href="#release-plan" id="markdown-toc-release-plan">Release Plan</a></li>
<li><a href="#release-grade" id="markdown-toc-release-grade">Release Grade</a></li>
</ul>
</li>
<li><a href="#sandbox" id="markdown-toc-sandbox">Sandbox</a></li>
</ul>
<h2 id="apache-struts-pmc-charter">Apache Struts PMC Charter</h2>
<p>Struts is a Project of the <a href="https://www.apache.org/foundation">Apache Software Foundation</a> (ASF), formed by a resolution
of the <a href="https://www.apache.org/foundation/board/">ASF Board of Directors</a>. As an ASF Project, Struts is subject to the
<a href="https://www.apache.org/foundation/bylaws.html">ASF Bylaws</a> and the direction of the ASF Board.</p>
<p>The Project Charter incorporates by reference the current version
of <a href="https://www.apache.org/foundation/how-it-works.html">How the ASF works</a>, with the additional guidelines
and clarifications found herein.</p>
<h2 id="roles-and-responsibilities">Roles and Responsibilities</h2>
<p>The roles and responsibilities that people can assume in the project are based on merit.
Everybody can help no matter what their role. Those who have been long term or valuable contributors to
the project can earn the right to commit directly to the source repository and to cast binding votes during
the decision-making process.</p>
<h2 id="users">Users</h2>
<p>Users are the people who use the products of the Project. People in this role aren’t contributing code,
but they are using the products, reporting bugs, making feature requests, and such. This is by far
the most important category of people as, without users, there is no reason for the Project.
When a user starts to contribute code or documentation patches, they become a Contributor.</p>
<h2 id="contributors">Contributors</h2>
<p>Contributors are the people who write code or documentation patches or contribute positively to the project
in other ways. When a volunteer’s patch is applied, the contribution is recognized in the version control log.</p>
<h2 id="committers">Committers</h2>
<p>Contributors who give frequent and valuable contributions to a subproject of the Project can have their status
promoted to that of a “<em>Committer</em>” for that subproject. A Committer has write access to the source code repository.
Committer status is granted by the Project Management Committee by majority vote.</p>
<h2 id="project-management-committee-pmc">Project Management Committee (PMC)</h2>
<p>Committers and other volunteers who frequently participate with valuable contributions may have their status promoted
to that of a “<em>Project Management Committee Member</em>”. The PMC is responsible for the day-to-day management
of the Project.</p>
<h3 id="management">Management</h3>
<p>The Vice President is appointed by the ASF Board. The Vice President is assisted by the Project Management Committee
(PMC) and also serves as the PMC chair. The PMC may nominate new members. Nominees may then be approved
with a 3/4 majority vote of the PMC. Membership can be revoked by a unanimous vote of all the active PMC members
other than the member in question. The list of active PMC members can be found on our <a href="volunteers.html">Volunteers page</a>.</p>
<h3 id="pmc-duties">PMC Duties</h3>
<p>The PMC is responsible for the day-to-day management of the Struts Project. The PMC oversees all changes
made to the codebase. The PMC must ensure that all code under a Apache Struts repository is the lawful property
of the Foundation and may be distributed under the <a href="https://www.apache.org/licenses/">Apache Software License</a>.
All releases of a Struts subproject must be sanctioned by the Project Management Committee.</p>
<h3 id="subprojects">Subprojects</h3>
<p>Subprojects are the Project’s unit of release. Each subproject should represent an implementation of a Struts framework
or a related component. Each subproject should focus on creating, maintaining, and releasing a single software
product or “deliverable”.</p>
<p>All PMC Members have voting rights in all subprojects. Members not familiar with a subproject codebase may abstain
from any given vote. All Committers have write access to all subprojects. Subprojects are units of release, not
units of work.</p>
<p>PMC members may propose the creation of new subprojects. Proposals are to contain the scope of the project,
identify the initial source from which the project is to be populated, identify any mailing lists or
repositories, if any, which are to be created. Creation of a new subproject requires approval by a 3/4 majority
vote of the PMC.</p>
<h2 id="decision-making">Decision Making</h2>
<p>All <a href="https://www.apache.org/foundation/how-it-works.html#roles">Volunteers</a> (Users, Developers, Committers, PMC Members)
are encouraged to participate in the decision-making process, but binding decisions are made only
by the Project Management Committee.</p>
<h3 id="voting">Voting</h3>
<p>Any subscriber to the list may <a href="https://www.apache.org/foundation/voting.html">vote</a> on any issue or action item.
Votes from Developers and Committers are especially welcome. However, the only binding votes are those cast by a PMC
Member.</p>
<p>The act of voting carries certain obligations. Voters are not only stating their opinion, they are also agreeing
to help do the work.</p>
<p>Each vote can be made in one of three flavors:</p>
<table class="bodyTable">
<tr class="a">
<td>
<strong>+1</strong>
</td>
<td>
"Yes" "Agree," or "the action should be performed".
On some issues this is only binding if the voter has tested the action on their own system(s).
</td>
</tr>
<tr class="b">
<td>
<strong>+/-0</strong>
</td>
<td>
"Abstain", "no opinion".
An abstention may have detrimental effects if too many people abstain.
</td>
</tr>
<tr class="a">
<td>
<strong>-1</strong>
</td>
<td>
"No".
On issues where consensus is required, this vote counts as a **veto**.
All vetos must contain an explanation of why the veto is appropriate. Vetos with no explanation are void.
A veto cannot be overruled. If you disagree with the veto, you should lobby the person who
cast the veto. Voters intending to veto an action item should make their opinions known to the group
immediately so that the problem can be remedied as early as possible.
If a Committer tries to "override" a veto by restoring a vetoed change, the PMC may ask the infrastructure
group to revoke that Committer's write privileges.
</td>
</tr>
</table>
<p>An action requiring consensus approval must receive at least <strong>3 binding +1</strong> votes and <strong>no binding vetoes</strong>.
An action requiring majority approval must receive at least <strong>3 binding +1</strong> votes and more <strong>+1</strong> votes than
<strong>-1</strong> votes. All other action items are considered to have lazy approval until somebody votes<strong>-1</strong>, after which
point they are decided by either consensus or majority vote, depending on the type of action item.</p>
<p>Voting represent consensus and votes are never final. Circumstances change, and so may votes. A veto may be converted
to a +1 after discussion, and likewise a +1 may be converted to a -1. By convention, Committers should allow a vote
to circulate for 72 hours before taking action.</p>
<h2 id="action-items">Action Items</h2>
<p>All decisions revolve around “<em>Action Items</em>”. Action Items consist of the following:</p>
<ul>
<li>Long Term Plans</li>
<li>Short Term Plans</li>
<li>Product Changes</li>
<li>Showstoppers (or “blockers”)</li>
<li>Release Plan</li>
<li>Release Grade</li>
</ul>
<h3 id="long-term-plans">Long Term Plans</h3>
<p>Long term plans are simply announcements that group members are working on particular issues related to the Project.
These items are not voted on, but Committers and PMC Members who do not agree with a particular plan, or think that
an alternative plan would be better, are obligated to inform the group of their feelings.</p>
<h3 id="short-term-plan">Short Term Plan</h3>
<p>Short term plans are announcements that a volunteer is working on a particular set of documentation or code files
with the implication that other volunteers should avoid them or try to coordinate their changes.</p>
<h3 id="product-changes">Product Changes</h3>
<p>All product changes to the repository are subject to lazy consensus.</p>
<h3 id="showstoppers">Showstoppers</h3>
<p>Showstoppers are issues that require a fix be in place before the next public release. They are designated as “blockers”
in the issue tracker in order to focus special attention on these problems. An issue becomes a showstopper when it is
designated as such in the issue tracker by a PMC member and remains so by lazy consensus.</p>
<h3 id="release-plan">Release Plan</h3>
<p>A release plan must be used to keep all volunteers aware of when a release is desired, whether it will be a major,
minor, or milestone release, who will be the release manager, when the repository will be tagged to create
the distribution, and other assorted information to keep volunteers from tripping over each other. A release
plan must be incorporated into the product documentation, or otherwise announced to the DEV list.
Lazy majority decides each issue in a release plan.</p>
<h3 id="release-grade">Release Grade</h3>
<p>After a proposed release is built, it must be tested and classified before being released to the general public.
The proposed release may be assigned “Alpha”, “Beta” or “General Availability” classifications by majority vote.
Once a release is classified by the PMC Members, it may be distributed to the general public on behalf of the Foundation.
Distributions may be reclassified or withdrawn by majority vote, but the release number may not be reused by another distribution.</p>
<h2 id="sandbox">Sandbox</h2>
<p>Pursuant to the <a href="http://incubator.apache.org/learn/rules-for-revolutionaries.html">“Rules for Revolutionaries”</a>,
any committer may submit experimental material to the Sandbox area of the repository at his or her own discretion.</p>
<p>Material must be moved from the sandbox to the main repository before it can be released. If a sandbox whiteboard
becomes dormant for six or more months, it may be moved to the archive section of the repository.</p>
<p>Experimental material that is outside the scope of the Struts project may also be submitted to the
<a href="http://labs.apache.org/">Apache Labs</a></p>
<p>Next: <a href="volunteers.html">Volunteers</a></p>
</section>
</article>
<footer class="container">
<div class="col-md-12">
Copyright &copy; 2000-2018 <a href="http://www.apache.org/">The Apache Software Foundation </a>.
All Rights Reserved.
</div>
<div class="col-md-12">
Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
trademarks of The Apache Software Foundation.
</div>
<div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>
<script>!function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = "//platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
}
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>
<div id="fb-root"></div>
<script>(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
</body>
</html>