]> projects.mako.cc - fspm_howto/blobdiff - FreeSoftwareProjectManagementHOWTO.sgml
I've removed the section on code cram because it doesn't seem
[fspm_howto] / FreeSoftwareProjectManagementHOWTO.sgml
index 8ff98a7e8e5d2efefce5a99ac566d75c0228b196..1ef34da105487a0d776c6d2e935023fe3ccd20ef 100644 (file)
@@ -1250,79 +1250,140 @@ pages for more information and options.
    <title>Delegating Work</title>
 
    <para>
-    By now, you've hypothetically followed me through the writing of a
-    piece of software, the creation of a website and a skeleton of
-    documentation and functionality and we've gone ahead and (as will
-    be discussed in <xref linkend="releasing">) released it to the
-    rest of the world. Times passes and people hopefully becoming
-    interested and people want to help and patches begin flowing in.
+    By now, you've hypothetically followed me through the early
+    writing of a piece of software, the creation of a website and
+    system of documentation and and we've gone ahead and (as will be
+    discussed in <xref linkend="releasing">) released it to the rest
+    of the world. Times passes, and if things go well, people become
+    interested and want to help. The patches begin flowing in.
    </para>
 
    <para>
-    Like the parent of any child who grows up, it's now time to wince
-    and smile and do most difficult thing in any parents life: It's
-    time to let go.
+    <emphasis>Like the parent of any child who grows up, it's now time
+    to wince and smile and do most difficult thing in any parents
+    life: It's time to let go.</emphasis>
    </para>
 
    <para>
     Delegation is the politcal way of describing this process of
-    <quote>letting go.</quote> It is the process of handing
-    responsibility, and power, over aspects of your project to other
-    reponsible developers. It is difficult for anyone who has invested
-    a large deal of time and energy into a project but it essential
-    for the growth of any free software project. One person can only
-    do so much.
+    <quote>letting go.</quote> It is the process of handing some of
+    the responsibility and power over your project to other reponsible
+    and involved developers. It is difficult for anyone who has
+    invested a large deal of time and energy into a project but it
+    essential for the growth of any free software project. One person
+    can only do so much. <emphasis>A free software project is nothing
+    without the involvement of a group of developers. A group of
+    developers can only be maintained through respectful and
+    responsible leadership and delegation.</emphasis>
    </para>
 
    <para>
-    As your project progresses, you will notice people who put
+    As your project progresses, you will notice people who are putting
     signfigant amounts of time and effort into your project. These
     will be the people submitting the most patches, posting most on
     the mailing lists, engaging in long email discussions. It is your
     responsiblity to contact these people and to try and shift some of
-    the power and responsiblity of project maintainer toward
-    them. There are several easy weays you can do this:
+    the power and responsiblity of your position as the project's
+    maintainer onto them (if they want it). There are several easy
+    weays you can do this:
    </para>
 
-   <para>   
-    <itemizedlist>
+   <sect3>
+    <title>How to delegate</title>
+    <para>
+     Like anything, its easier to see how others delegate than to do
+     it yourself. In a sentance: <emphasis>Keep an eye out for other
+     qualified developers who show an interest and sustained
+     involvement with your project and try and shift responsibility
+     towards them.</emphasis> The following ideas might be good places
+     to start or good sources of inspiriation:
+    </para>
+    <sect4>
+     <title>Allow a larger group of people write access to your CVS
+     reponsitory and make real efforts towards rule by a
+     committee</title>
 
-     <listitem>
-      <para>
-       <emphasis>Allow a larger group of people write access to your
-       CVS reponsitory and make real efforts towards rule by a
-       committee.</emphasis>
-      </para>
-     </listitem>
+     <para>
+      <ulink url="http://httpd.apache.org/">Apache</ulink> is an
+      example of a project that is run by small group of developers
+      who vote on major technical issues and the admission of new
+      members and all have write access to the main source
+      repository. Their process is detailed <ulink
+      url="http://httpd.apache.org/ABOUT_APACHE.html">online.</ulink>
+     </para>
 
-     <listitem>
-      <para>
-       <emphasis>Publicly appoint someone as the release manager for a
-       specific release.</emphasis> A relase manager is usually
-       responsible for coordinating testing, encforcing a code freeze,
-       being responsible for stability and quality control, packaging
-       up the software, and placing it in the approrpriate places to
-       be downloaded.
-      </para>
+     <para>
+      The <ulink url="http://www.debian.org/"> Debian Project</ulink>
+      is an extreme example of rule by committee. At current count,
+      more than 700 developers have full responsibility for certain
+      aspects of the projects. All these developers can upload into
+      the main ftp servers, and vote on major issues. Direction for
+      the project is determined by the project <ulink
+      url="http://www.debian.org/social_contract">social
+      contract</ulink> and a <ulink
+      url="http://www.debian.org/devel/constitution">constitution</ulink>. To
+      facilitate this system, there are special teams (i.e. the
+      install team, the Japanese language team) and a technical
+      committee and a project lead. There is a project lead as well
+      but the lead's main responsiblity is to, <quote>Appoint
+      Delegates or delegate decisions to the Technical
+      Committee.</quote>
+     </para>
 
-      <para>
-       This use of the release manager is a good way to give yourself
-       a break and to shift the responsibility for accepting and
-       rejecting patches to somenoe else. It is a good way of very
-       clearly defining a chunk of work on the project as belonging to
-       a certain person and its a great way of giving yourself a break.
-      </para>
-     </listitem>
+     <para>
+      While both of these projects operate on a scale that your
+      project will not (at least initially), their example is
+      helpful. Debian's idea of a project who lead who can do
+      <emphasis>nothing</emphasis> but delegate can serve as a
+      charicature of how a project can involve and empower a huge
+      number of developers and grow to a huge size.
+     </para>
 
-     <listitem>
-      <para>
-       <emphasis>Delegating control of an entire branch.</emphasis>
-      </para>
-     </listitem>
+    </sect4>
 
-    </itemizedlist>
-   </para>
+    <sect4>
+     <title>Publicly appoint someone as the release manager for a
+       specific release.</title>
+
+     <para>
+      A relase manager is usually responsible for coordinating
+      testing, encforcing a code freeze, being responsible for
+      stability and quality control, packaging up the software, and
+      placing it in the approrpriate places to be downloaded.
+     </para>
+
+     <para>
+      This use of the release manager is a good way to give yourself a
+      break and to shift the responsibility for accepting and
+      rejecting patches to somenoe else. It is a good way of very
+      clearly defining a chunk of work on the project as belonging to
+      a certain person and its a great way of giving yourself a break.
+     </para>
+    </sect4>
+
+    <sect4>
+     <title>Delegate control of an entire branch.</title>
+     <para>
+      If your project chooses to have branches (as described in <xref
+      linkend="branches">), it might be a good idea to appoint someone
+      else to be the the head of a branch. If you like focusing your
+      energy on development releases and the implementation of new
+      features, had total control over the stable releases to a
+      well-suiteded developer.
+     </para>
 
+     <para>
+      The author of linux, Linus Torvalds, came out and crowned Alan
+      Cox as <quote>the man for stable kernels.</quote> All patches
+      for stable kernels go to Alan and, if Linus were to be taken
+      away from work on linux for any reason, Alan Cox would be more
+      than suited to fill his role as the acknowledged heir to the
+      linux maintainership.
+     </para>
+    </sect4>
+   </sect3> 
   </sect2>
 
 <!-- Section2: patching -->
@@ -1340,19 +1401,14 @@ pages for more information and options.
    <para></para>
   </sect2>
 
-<!-- Section2: freezing -->
+<!-- Section2: otherdev -->
 
-  <sect2 id="freezing">
-   <title>Freezing</title>
+  <sect2 id="otherdev">
+   <title>Other Development issues</title>
    <para></para>
   </sect2>
 
-<!-- Section2: codecram -->
 
-  <sect2 id="codecram">
-   <title>Avoiding the Code Cram Effect</title>
-   <para></para>
-  </sect2>
  </sect1>
 
 <!-- Section1: users -->

Benjamin Mako Hill || Want to submit a patch?