blob: cacc85efb96ed45ab4e9516a64dc81317b6ce30e [file] [log] [blame]
<!doctype html>
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
<html lang="en" prefix="og:">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Decision Making</title> <!-- Below Meta Tags Generated via -->
<!-- If you don't care about social media then remove this section -->
<!-- Values are set in -->
<!-- HTML Meta Tags -->
<meta name="description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta name="keywords" content="">
<!-- Facebook Meta Tags -->
<meta property="og:url" content="">
<meta property="og:type" content="website">
<meta property="og:title" content="Apache OpenOffice">
<meta property="og:description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta property="og:image" content="">
<!-- Twitter Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta property="twitter:domain" content="">
<meta property="twitter:url" content="">
<meta name="twitter:title" content="Apache OpenOffice">
<meta name="twitter:description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta name="twitter:image" content="">
<!-- Above Meta Tags Generated via -->
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body id="index" class="home">
<div id="banner">
<div id="bannerleft"><a alt="Apache OpenOffice" href="/">
<img id="logo" alt="Apache OpenOffice" src="/images/AOO4_website_logo.png" height="60" width="161"/></a></div>
<div id="bannercenter">The Free and Open Productivity Suite</div>
<div id="clear"></div>
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
<button class="navbar-toggler" type="button"
data-toggle="collapse" data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
<!-- General menu -->
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="generalDropdown" role="button" data-toggle="dropdown" aria-expanded="false">General</a>
<ul class="dropdown-menu" aria-labelledby="generalDropdown">
<li><a class="dropdown-item" href="/index.html">About</a></li>
<li><a class="dropdown-item" href="/downloads.html">Downloads</a></li>
<li><a class="dropdown-item" href="/license.html">License</a></li>
<li><a class="dropdown-item" href="/mission.html">Mission</a></li>
<li><a class="dropdown-item" href="/trademarks.html">Trademarks</a></li>
<li><a class="dropdown-item" href="/press.html">Press</a></li>
<li><a class="dropdown-item" href=""></a></li>
<!-- Community menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="communityDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Community</a>
<ul class="dropdown-menu" aria-labelledby="communityDropdown">
<li><a class="dropdown-item" href="/get-involved.html">Get Involved</a></li>
<li><a class="dropdown-item" href="/orientation/index.html">Orientation</a></li>
<li><a class="dropdown-item" href="/mailing-lists.html">Mailing Lists</a></li>
<li><a class="dropdown-item" href="/social.html">Social Networking</a></li>
<li><a class="dropdown-item" href="/events.html">Events</a></li>
<li><a class="dropdown-item" href="">Support</a></li>
<li><a class="dropdown-item" href="/native-lang.html">Native Language</a></li>
<li><a class="dropdown-item" href="">Planning Wiki</a></li>
<li><a class="dropdown-item" href="/people.html">People</a></li>
<li><a class="dropdown-item" href="/community-faqs.html">Community FAQs</a></li>
<!-- Development menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="developmentDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Development</a>
<ul class="dropdown-menu" aria-labelledby="developmentDropdown">
<li><a class="dropdown-item" href="/source.html">Source Code</a></li>
<li><a class="dropdown-item" href="/bug-tracking.html">Bug Tracking</a></li>
<li><a class="dropdown-item" href="/qa.html">Quality Assurance</a></li>
<li><a class="dropdown-item" href="/translate.html">Translation</a></li>
<li><a class="dropdown-item" href="/website-local.html">Website</a></li>
<li><a class="dropdown-item" href="/security.html">Security Reports</a></li>
<li><a class="dropdown-item" href="/contributing-code.html">Contributing Code</a></li>
<li><a class="dropdown-item" href="/developer-faqs.html">Developer FAQs</a></li>
<!-- Project menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="projectDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Project</a>
<ul class="dropdown-menu" aria-labelledby="projectDropdown">
<li><a class="dropdown-item" href="/blogpage.html">Project Blog</a></li>
<li><a class="dropdown-item" href="/pmc-faqs.html">PMC FAQs</a></li>
<!-- The ASF menu -->
<div class="navbar-nav" style="padding-top: 0.5rem;">
<div class="nav-item dropdown dropdown-menu-right active">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src=""
width="32" height="32" class="d-inline-block align-top"
alt="Apache Feather">
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="">Website</a>
<a class="dropdown-item" href="">License</a>
<a class="dropdown-item" href="">Security</a>
<a class="dropdown-item" href="">Events</a>
<a class="dropdown-item" href="">Donations</a>
<a class="dropdown-item" href="">Sponsorship</a>
<a class="dropdown-item" href="">Thanks</a>
</div> </nav>
<div id="contenta">
<p>In this Orientation Module you will learn about Decision Making within the project. As with the previous Level 1 Module, if you have prior experience with an open source software project, especially one at Apache, then much of this material will already be familiar to you.</p>
<p>In the previous Module we read about collaboration on the mailings lists, how to do it efficiently and how to avoid the most common pitfalls. We use the mailing lists for many things, for asking questions, for sharing information or the like. But one of the most important uses of the mailing list is for decision making. It is important to understand how decisions are made in an Apache community. Here are a few general principles that you should keep in mind:</p>
<p>Commit-Then-Review (CTR) and Review-Then-Commit (RTC).</p>
<p>The two primary ways of managing product changes go by the names Commit-Then-Review (CTR) and Review-Then-Commit (RTC). For most cases we operate in a CTR mode, meaning that our <a href="">Committers</a> are able to check in changes as they desire, with no advance approval or review.</p>
<p>We trust our Committers to do the right thing. By default Committers don't ask permission before acting. They avoid unnecessary discussion and email traffic. This is not because they are anti-social. This is because they realize that in a project of this size it is impossible to discuss every small change in advance. Discussing too much is both
unnecessary and unproductive. We have a "time machine" called Subversion that allows us to undo any changes to the product or website. So if a Committer believes that a change would be uncontroversial, and the change is reversible, then the default approach is to go ahead make the change.</p>
<p>Terms that you might need to know related to the above are: <a href="">JFDI</a> and <a href="">"assuming lazy consensus"</a>.</p>
<p>When is RTC, Review-Then-Commit Used?</p>
<p>There are times where CTR is not appropriate and RTC is used. This happens, for example, at the end of a release cycle, when we want to carefully review changes made to the product, in order to control the final quality before the release. When we're in RTC mode, no changes are made to the code unless first discussed and approved on the mailing list.</p>
<p>Other situations when RTC is used instead of CTR might include:</p>
<p>A Committer is unsure of the technical merits of what they want to do. They want
an extra pair of eyes to review the proposal point out weaknesses, alternatives, etc.</p>
<p>A change is a job for more than one person or requires coordination across several
subgroups within the project.</p>
<p>A change to one of our websites that impacts terms and conditions, license,
copyright, branding, etc. So not a technical change, but a substantive change to
content in these areas. These require PMC review.</p>
<p>A technical change that breaks backwards compatibility of the product.</p>
<p>Changes that break things. Sometimes this is unavoidable. But it should be
proposed and coordinated like #2 above.</p>
<p>Changes that cannot easily be reversed. Code changes and most website changes are
in SVN and can be reverted. But some changes, like administrative bulk actions in
BZ, cannot be easily undone.</p>
<p>Public statements in behalf of the project, e.g., some blog posts and
announcements, press releases, etc.</p>
<p>In all of the above cases, a Proposal detailing the change is sent to the development
<p>The convention is to send all proposals in their own new thread. (Don't hide a proposal 10 posts deep in an existing thread). Put "[PROPOSAL]" in the subject line or make it obvious that you are making a proposal.</p>
<p>Because the Volunteers are spread out all across the globe, in various time zones, and many have day jobs or other commitments, the convention is to wait <em>at least</em> 72 hours for feedback on a proposal.</p>
<p>In cases where the proposer wants to act on their proposal, if there are no objections, they should state this in the proposal. For example, "If there are no objections voiced within 72 hours, I'll go ahead and make these changes". This is called "stating lazy consensus". You can read more about lazy consensus <a href="/docs/governance/lazyConsensus.html">here</a>.</p>
<p>Voting, Consensus, and Vetoes</p>
<p>In Apache projects it is common to use a shorthand way of responding to proposals, where +1 indicates approval, 0 indicates indifference and -1 indicates disapproval.</p>
<p>In most cases proposals are decided by consensus, based on community discussions. Only in rare cases, and in a small number of pre-defined administrative questions, do we resort to a formal counting of votes. The places where we require voting are: voting to release, voting in a new Committer or PMC Member, Voting in a new PMC Chair. That's it. Generally speaking, voting on any other topic is avoided in favor of consensus building. With voting there are winners and losers. With consensus everyone wins.</p>
<p>Another aspect of decision making in an Apache project is the "veto". Every Committer has the ability to "veto" a change, for technical reasons, provided they explain the technical reasons for the veto, describes an alternative approach, and offers to help implement the alternative approach. Vetos are quite rare.</p>
<p>There is one disorder of community decision making that is common enough to warrant a colorful name: <a href="">bikeshedding</a>. Follow the link and read more about this topic.</p>
<p>To apply the above skills, be sure you are subscribed to the project's <a href="/mailing-lists.html#development-mailing-list-public">main mailing list</a>. Keep your eye out for terms like "proposal", "lazy consensus", "vote" or "veto" and see how they are used in practice. Compare actual practice to the above descriptions. No, we're not perfect. But we work best and have the most fun when we follow the above guidelines. And so will you when you apply then in your own list communications!</p>
<p>Congratulations, you have completed this Module!</p>
<p>If you have any questions or feedback on this module, please send a note to <a href=""></a>.</p>
<footer class="navbar-expand-lg navbar-light bg-light">
<div class="footer" id="footer">
<div class="container-fluid">
Copyright &copy; 2011-2024 The Apache Software Foundation,
Licensed under the
<a href="">Apache License, Version 2.0.</a> | <a href="/contact.html">Contact Us</a> | <a href="/terms.html">Terms of Use</a> | <a href="">Privacy</a>
Apache, OpenOffice, and the seagull logo are registered trademarks of The Apache Software Foundation.
The Apache feather logo is a trademark of The Apache Software Foundation.
Other names appearing on the site may be trademarks of their respective owners.
</div><!-- #container-fluid -->
<div class="row container-fluid">
<div class="col-sm">
<a href="">
<img src="" alt="The Apache Software Foundation" style="border: 0; margin-top: 2px" width="200" height="82">
<div class="col-sm center-align">
<a href="">
<img src="" alt="Support The ASF" height="80" width="80">
<div class="col-sm right-align">
<a class="acevent" data-format="wide" data-mode="light" data-event="random"></a>
<!-- Start load of stylesheets (will need to upgrade periodically) -->
<link href="/theme/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="/theme/css/github-markdown.min.css" rel="stylesheet" type="text/css">
<link href="/theme/css/openoffice.css" rel="stylesheet" type="text/css">
<!-- End stylesheets -->
<!-- Start the loading of javascript frameworks (will need to upgrade periodically) -->
<script src=""></script>
<script src="/theme/js/jquery.slim.min.js"></script>
<script src="/theme/js/popper.min.js"></script>
<script src="/theme/js/bootstrap.min.js"></script>
<!-- End the loading of javascript frameworks -->
<!-- Source: pages/orientation/; Template: page; Url: pages/orientation/decision-making.html --></body>