| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| <link rel="stylesheet" href="../style/bootstrap-1-3-0-min.css" type="text/css" /> |
| <link rel="stylesheet" href="../style/style.css" type="text/css" /> |
| <title>Apache Archive: Rules for Revolutionaries - Apache Incubator</title> |
| |
| </head> |
| <body> |
| <div class="container"> |
| <div class="row"> |
| <div class="span12"> |
| <a href="http://www.apache.org/"><img src="http://incubator.apache.org/images/asf_logo_wide_small.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" width="62%"/></a> |
| </div> |
| <div class="span4"> |
| <a href="http://incubator.apache.org/"><img src="../images/egg-logo2.png" alt="Apache Incubator" border="0"/></a> |
| </div> |
| </div> |
| <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div> |
| |
| <div class="row"> |
| <div class="span4"> |
| <form action="http://www.google.com/search" method="get"> |
| <input value="incubator.apache.org" name="sitesearch" type="hidden"/> |
| <input size="20" name="q" id="query" type="text" value="search..." |
| onclick="if(this.value == 'search...') {this.value = ''}"/> |
| <input name="Search" value="Go" type="submit"/> |
| </form> |
| <div class="menuheader">General</div> |
| <menu compact="compact"> |
| <li><a href="../index.html">Welcome</a></li> |
| <li><a href="../incubation/Process_Description.html">Incubation Overview</a></li> |
| <li><a href="../incubation/Incubation_Policy.html">Incubation Policy</a></li> |
| <li><a href="../guides/index.html">Incubation Guides</a></li> |
| <li><a href="../incubation/Roles_and_Responsibilities.html">Roles and Responsibilities</a></li> |
| <li><a href="../faq.html">General FAQ</a></li> |
| <li><a href="http://wiki.apache.org/incubator">Incubator Wiki</a></li> |
| <li><a href="../whoweare.html">Who We Are</a></li> |
| <li><a href="../sitemap.html">Site Map</a></li> |
| </menu> |
| <div class="menuheader">Status</div> |
| <menu compact="compact"> |
| <li><a href="../projects/index.html">Project List</a></li> |
| <li><a href="../clutch.html">Clutch Report</a></li> |
| <li><a href="../ip-clearance/index.html">IP Clearance</a></li> |
| <li><a href="../history/index.html">Incubator History</a></li> |
| </menu> |
| <div class="menuheader">Entry Guides</div> |
| <menu compact="compact"> |
| <li><a href="../guides/proposal.html">Proposal Guide</a></li> |
| </menu> |
| <div class="menuheader">Podling Guides</div> |
| <menu compact="compact"> |
| <li><a href="../guides/committer.html">Podling Committers</a></li> |
| <li><a href="../guides/ppmc.html">Podling PMC (PPMC)</a></li> |
| <li><a href="../guides/mentor.html">Podling Mentor</a></li> |
| <li><a href="../guides/releasemanagement.html">Podling Releases</a></li> |
| <li><a href="../guides/branding.html">Podling Branding/Publicity</a></li> |
| <li><a href="../guides/sites.html">Podling Websites</a></li> |
| <li><a href="../guides/graduation.html">Graduation</a></li> |
| <li><a href="../guides/retirement.html">Retirement</a></li> |
| </menu> |
| <div class="menuheader">Other Guides</div> |
| <menu compact="compact"> |
| <li><a href="../guides/participation.html">Participation</a></li> |
| <li><a href="../faq.html">General FAQ</a></li> |
| <li><a href="../guides/pmc.html">Incubator PMC (IPMC)</a></li> |
| <li><a href="../guides/chair.html">IPMC Chair</a></li> |
| <li><a href="../guides/lists.html">Mailing Lists</a></li> |
| <li><a href="../guides/website.html">Incubator Website</a></li> |
| </menu> |
| <div class="menuheader">ASF</div> |
| <menu compact="compact"> |
| <li><a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li> |
| <li><a href="http://www.apache.org/dev/">Developer Documentation</a></li> |
| <li><a href="http://www.apache.org/foundation/">Foundation</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| </menu> |
| <!-- start Ads Server --> |
| <iframe src="http://www.apache.org/ads/buttonbar.html" |
| style="border-width:0; float: left" frameborder="0" scrolling="no" |
| width="135" height="265"></iframe> |
| <!-- end Ads Server --> |
| </div> |
| |
| <div class="span12"> |
| <h2 id='rules+for+revolutionaries'><img src="../images/redarrow.gif" />rules for revolutionaries</h2> |
| <div class="section-content"> |
| <div class="note"> |
| <note> |
| <strong>As Sent on 13 Jan 2000.</strong>© 1995-2002, James Duncan Davidson. |
| <br /> |
| <em>Note: This message was written at a specific place and time in |
| response to a specific situtation. It does not address several |
| important issues like what happens when revolutions do not totally |
| succeed. It also doesn't address the issues of responsiblity. The |
| Apache Jakarta PMC (and PMCs in general) have responsiblities that |
| aren't detailed here. With that said...</em> |
| </note> |
| </div> |
| <ul> |
| <li><strong>Date: </strong>Thu, 13 Jan 2000 15:46:41 -0800</li> |
| <li><strong>Subject: </strong>RESET: Proposal for Revolutionaries and Evolutionaries</li> |
| <li><strong>From: </strong>James Duncan Davidson</li> |
| <li><strong>To: </strong><general@jakarta.apache.org></li> |
| <li><strong>Cc: </strong><tomcat-dev@jakarta.apache.org></li> |
| <li><a href="http://mail-archives.apache.org/mod_mbox/jakarta-general/200001.mbox/%3cB4A3A3E0.C73%25james.davidson@eng.sun.com%3e">Link to this message in mod_mbox archive</a></li> |
| </ul> |
| <pre>Ok, the logical place for this is general@jakarta, but I'm including |
| tomcat-dev@jakarta so that the people who are there and not on general can see |
| it. Please do not discuss on tomcat-dev, please only discuss on general. |
| |
| In a closed source project where you've got a set team, you make decisions |
| about where the entire team goes and somebody takes the lead of deciding what |
| gets done when. In the discussions about Craig's long term plan, this metric |
| was applied by several of us in thoughts about where to go next. |
| |
| After pondering this for a while, it's (re)become obvious to me that there's no |
| way that anybody can expect an open source organization to work the same way |
| that a team in a corporate setting can. Ok, so this is pretty freaking obvious, |
| but I've been watching people that are not from Sun and who have been doing |
| open source for a while talking and proposing things that come from this line |
| of thought as well. Its not just people from Sun or people from any particular |
| entity. |
| |
| So -- in any software development project there is a natural tension between |
| revolution and evolution. In a closed source environment, you make the call at |
| any particular time on whether you are in revolutionary mode or evolutionary |
| mode. For example, JSDK was in evolutionary mode for years. Then in Nov 98, We |
| made a decision to go revolutionary. Of course, at the time the project team |
| was composed of 1 person -- me, so it was an easy decision. After that |
| revolution was over in Jan 99, Tomcat was in evolutionary mode getting JSP |
| bolted in and working with J2EE. We (Sun folks) could do that because that was |
| what suited the goals best at the time. |
| |
| However, Open source is chaotic. With its special magic comes a different |
| reality. This is: |
| |
| 1) People work on their own time (even people paid by a company |
| can be considered to be working on their own time in this |
| situtation as each company is going to have different cycles |
| and things they want) |
| |
| 2) People work on what they want to. If you are working on your |
| own time, you are going to do what you want or you do something |
| else. |
| |
| 3) Some people are evolutionaries, other are revolutionaries, and |
| some are both at different times. |
| |
| 4) Both approaches are important and need to be cultured. |
| |
| 5) You really can't afford to alienate any part of your developer |
| community. Innovation can come from anywhere. |
| |
| To allow this to happen, to allow revolutionaries to co-exist with |
| evolutionaries, I'm proposing the following as official Jakarta policy: |
| |
| 1) Any committer has the right to go start a revolution. They can establish a |
| branch or seperate whiteboard directory in which to go experiment with new code |
| seperate from the main trunk. The only responsibility a committer has when they |
| do this is to inform the developer group what their intent is, to keep the |
| group updated on their progress, and allowing others who want to help out to do |
| so. The committer, and the group of people who he/she has a attracted are free |
| to take any approaches they want to free of interference. |
| |
| 2) When a revolution is ready for prime time, the committer proposes a merge to |
| the -dev list. At that time, the overall community evaluates whether or not the |
| code is ready to become part of, or to potentially replace the, trunk. |
| Suggestions may be made, changes may be required. Once all issues have been |
| taken care of and the merge is approved, the new code becomes the trunk. |
| |
| 3) A revolution branch is unversioned. It doesn't have any official version |
| standing. This allows several parallel tracks of development to occur with the |
| final authority of what eventually ends up on the trunk laying with the entire |
| community of committers. |
| |
| 4) The trunk is the official versioned line of the project. All evolutionary |
| minded people are welcome to work on it to improve it. Evolutionary work is |
| important and should not stop as it is always unclear when any particular |
| revolution will be ready for prime time or whether it will be officially |
| accepted. |
| |
| What does this mean? |
| |
| In practice, this means that Craig and Hans and anybody else that wants to run |
| with that revolution is welcome to do so. The only change is that it's not |
| called Tomcat.next -- it's the RED branch or GOOGLE branch or whatever they |
| want to call it. |
| |
| Whenever Craig (or anybody else working on that codebase) wants to bring stuff |
| into the trunk, they propose it here and we evaluate it on it's merits. |
| |
| If somebody disagrees with Craig's approach (for the sake of argument here), |
| they are free to create a BLUE whiteboard and work out what they think is a |
| good solution. At that point, the community will have to evaluate both |
| approaches. But since this is a populist society, with such a structure it is |
| hoped that it becomes clear which is the preferred approach by the community by |
| their participation and voting. Or maybe the best solution is something in the |
| middle and the two parties work together to merge. Irregardless, the point is |
| to allow solutions to happen without being stalled out in the formative stages. |
| |
| An important point is that no one revolution is declared to be the official |
| .next until it's ready to be accepted for that. |
| |
| There is the side effect that we could potentially end up with too many |
| revolutions happening, but I'd rather rely upon the natural inclination of |
| developers to gravitate towards one solution to control this than to try to |
| control it through any policy statement. |
| |
| When would this be official? |
| |
| Well, if this is well recieved, we'd want to word it up and make it a bylaw |
| (with approval by the PMC -- this is one of the areas in which the PMC has |
| authority). Hopefully soon. |
| |
| Comments? Suggestions? |
| |
| James Davidson ... |
| Java + XML / Portable Code + Portable Data !try; do() |
| </pre> |
| </div> |
| </div> |
| </div> |
| |
| <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div> |
| <div class="row"> |
| <div class="span16 footer"> |
| Copyright © 2009-2016 The Apache Software Foundation<br /> |
| Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/> |
| Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation. |
| |
| |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |