Fix the types for NumElements variables, and add a comment
[oota-llvm.git] / docs / DeveloperPolicy.html
index 647e2b895f5d4f22d458f5a07111e63c944c089d..144c55ac0d8a3ca7b4e1981a461f45993355ff8e 100644 (file)
@@ -15,6 +15,7 @@
     <li><a href="#informed">Stay Informed</a></li>
     <li><a href="#patches">Making a Patch</a></li>
     <li><a href="#reviews">Code Reviews</a></li>
+    <li><a href="#owners">Code Owners</a></li>
     <li><a href="#testcases">Test Cases</a></li>
     <li><a href="#quality">Quality</a></li>
     <li><a href="#commitaccess">Obtaining Commit Access</a></li>
 
 </div>
 
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsection"> <a name="owners">Code Owners</a></div>
+<div class="doc_text">
+
+  <p>The LLVM Project relies on two features of its process to maintain rapid
+     development in addition to the high quality of its source base: the
+     combination of code review plus post-commit review for trusted maintainers.
+     Having both is a great way for the project to take advantage of the fact
+     that most people do the right thing most of the time, and only commit
+     patches without pre-commit review when they are confident they are
+     right.</p>
+     
+  <p>The trick to this is that the project has to guarantee that all patches 
+     that are committed are reviewed after they go in: you don't want everyone
+     to assume someone else will review it, allowing the patch to go unreviewed.
+     To solve this problem, we have a notion of an 'owner' for a piece of the
+     code.  The sole responsibility of a code owner is to ensure that a commit
+     to their area of the code is appropriately reviewed, either by themself or
+     by someone else.  The current code owners are:</p>
+  
+  <ol>
+    <li><b>Anton Korobeynikov</b>: Exception handling, debug information, and
+        Windows codegen.</li>
+    <li><b>Duncan Sands</b>: llvm-gcc 4.2.</li>
+    <li><b>Evan Cheng</b>: Code generator and all targets.</li>
+    <li><b>Chris Lattner</b>: Everything else.</li>
+  </ol>
+  
+  <p>Note that code ownership is completely different than reviewers: anyone can
+     review a piece of code, and we welcome code review from anyone who is
+     interested.  Code owners are the "last line of defense" to guarantee that
+     all patches that are committed are actually reviewed.</p>
+
+  <p>Being a code owner is a somewhat unglamorous position, but it is incredibly
+     important for the ongoing success of the project.  Because people get busy,
+     interests change, and unexpected things happen, code ownership is purely
+     opt-in, and anyone can choose to resign their "title" at any time. For now,
+     we do not have an official policy on how one gets elected to be a code 
+     owner.
+  </p>
+
+</div>
+
+
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsection"> <a name="testcases">Test Cases</a></div>
 <div class="doc_text">
@@ -372,28 +417,12 @@ Changes</a></div>
 <div class="doc_text">
   <p>We believe in correct attribution of contributions to 
   their contributors.  However, we do not want the source code to be littered
-  with random attributions (this is noisy/distracting and revision control
-  keeps a perfect history of this anyway).  As such, we follow these rules:</p>
-  <ol>
-    <li>Developers who originate new files in LLVM should place their name at
-    the top of the file per the 
-    <a href="CodingStandards.html#scf_commenting">Coding Standards</a>.</li>
-    <li>There should be only one name at the top of the file and it should be
-    the person who created the file.</li>
-    <li>Placing your name in the file does not imply <a
-        href="#clp">copyright</a>: it is only used to attribute the file to
-        its original author.</li>
-    <li>Developers should be aware that after some time has passed, the name at
-    the top of a file may become meaningless as maintenance/ownership of files
-    changes.  Despite this, once set, the attribution of a file never changes.
-    Revision control keeps an accurate history of contributions.</li>
-    <li>Developers should maintain their entry in the 
-    <a href="http://llvm.org/svn/llvm-project/llvm/trunk/CREDITS.TXT">CREDITS.txt</a> 
-    file to summarize their contributions.</li>
-    <li>Commit comments should contain correct attribution of the person who
-    submitted the patch if that person is not the committer (i.e. when a 
-    developer with commit privileges commits a patch for someone else).</li>
-  </ol>
+  with random attributions "this code written by J Random Guy" (this is noisy
+  and distracting.  In practice, the revision control system keeps a perfect
+  history of who change what, and the CREDITS.txt file describes higher-level
+  contributions.</p>
+
+  <p>Overall, please do not add contributor names to the source base.</p>
 </div>
 
 
@@ -429,7 +458,7 @@ Changes</a></div>
   
   <p>
   Although UIUC may eventually reassign the copyright of the software to another
-  entity (e.g. a dedicated non-profit "LLVM Organization", or something)
+  entity (e.g. a dedicated non-profit "LLVM Organization")
   the intent for the project is to always have a single entity hold the
   copyrights to LLVM at any given time.</p>
   
@@ -438,6 +467,7 @@ Changes</a></div>
   reduces the managerial burden for any kind of administrative or technical 
   decisions about LLVM.  The goal of the LLVM project is to always keep the code
   open and <a href="#license">licensed under a very liberal license</a>.</p>
+
 </div>
 
 <!-- _______________________________________________________________________ -->
@@ -451,7 +481,8 @@ Changes</a></div>
   <ul>
     <li>You can freely distribute LLVM.</li>
     <li>You must retain the copyright notice if you redistribute LLVM.</li>
-    <li>Binaries derived from LLVM must reproduce the copyright notice.</li>
+    <li>Binaries derived from LLVM must reproduce the copyright notice (e.g. 
+        in an included readme file).</li>
     <li>You can't use our names to promote your LLVM derived products.</li>
     <li>There's no warranty on LLVM at all.</li>
   </ul>
@@ -491,9 +522,11 @@ Changes</a></div>
    arbitrary purposes (including commercial use).</p>
    
 <p>When contributing code, we expect contributors to notify us of any potential
-   for patent-related trouble with their changes.  If you own the rights to a
+   for patent-related trouble with their changes.  If you or your employer
+   own the rights to a
    patent and would like to contribute code to LLVM that relies on it, we
-   require that you sign an agreement that allows any other user of LLVM to
+   require that
+   the copyright owner sign an agreement that allows any other user of LLVM to
    freely use your patent.  Please contact the <a 
    href="mailto:llvm-oversight@cs.uiuc.edu">oversight group</a> for more
    details.</p>
@@ -508,6 +541,11 @@ Changes</a></div>
   the entire software base can be managed by a single copyright holder.  This
   implies that any contributions can be licensed under the license that the
   project uses.</p>
+
+  <p>When contributing code, you also affirm that you are legally entitled to 
+  grant this copyright, personally or on behalf of your employer.  If the code
+  belongs to some other entity, please raise this issue with the oversight
+  group before the code is committed.</p>
 </div>
 
 <!-- *********************************************************************** -->