converted file over to the new latex template
authorBenjamin Mako Hill <mako@atdot.cc>
Fri, 12 Jul 2013 23:30:20 +0000 (19:30 -0400)
committerBenjamin Mako Hill <mako@atdot.cc>
Fri, 12 Jul 2013 23:30:20 +0000 (19:30 -0400)
to_fork_or_not_to_fork.tmpl

index 7c3e8b4..290b36b 100644 (file)
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="generator" content=
-"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
-<meta http-equiv="Content-Type" content=
-"text/html; charset=us-ascii">
-<title>To Fork or Not To Fork</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084"
-alink="#0000FF">
-<div class="article">
-<div class="titlepage">
-<div>
-<div>
-<h2 class="title"><a name="paper-11194" id="paper-11194"></a>To
-Fork or Not To Fork</h2>
-</div>
-<div>
-<h3 class="subtitle"><i>Lessons From Ubuntu and Debian</i></h3>
-</div>
-<div>
-<div class="author">
-<h3 class="author"><span class="firstname">Benjamin</span>
-<span class="othername">Mako</span> <span class=
-"surname">Hill</span></h3>
-<div class="affiliation"><span class="orgname">Canonical
-Limited<br></span></div>
-<div class="affiliation"><span class="orgname">The Debian GNU/Linux
-Project<br></span></div>
-<div class="affiliation"><span class="orgname">Software in the
-Public Interest, Inc.<br></span></div>
-</div>
-</div>
-<div>
-<p class="copyright">Copyright &Acirc;&copy; 2005 Benjamin Mako
-Hill</p>
-</div>
-<div>
-<div class="legalnotice"><a name="idp27154528" id=
-"idp27154528"></a>
-<p>This material is licensed under the <a class="ulink" href=
-"http://creativecommons.org/licenses/by-sa/2.0/" target=
-"_top">Creative Commons Attribution-Sharealike 2.0 License</a>.</p>
-<p>The canonical location for the most recent version of this
-document is <a class="ulink" href="http://mako.cc/" target=
-"_top">at the author's website</a>.</p>
-</div>
-</div>
-<div>
-<div class="revhistory">
-<table style="border-style:solid; width:100%;" summary=
-"Revision History">
-<tr>
-<th align="left" valign="top" colspan="2"><b>Revision
-History</b></th>
-</tr>
-<tr>
-<td align="left">Revision 0.2</td>
-<td align="left">August 7, 2005</td>
-</tr>
-<tr>
-<td align="left" colspan="2">Correction and improvements.</td>
-</tr>
-<tr>
-<td align="left">Revision 0.1</td>
-<td align="left">May 15, 2005</td>
-</tr>
-<tr>
-<td align="left" colspan="2">
-<p>The first version of this paper was written to an accepted talk
-given at Linuxtag 2005 given in Karlsruhe, Germany.</p>
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-<hr></div>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl class="toc">
-<dt><span class="section"><a href=
-"#idp27161152">Introduction</a></span></dt>
-<dt><span class="section"><a href="#idp27077936">"Fork" Is A Four
-Letter Word</a></span></dt>
-<dt><span class="section"><a href="#idp27089792">Case
-Study</a></span></dt>
-<dd>
-<dl>
-<dt><span class="section"><a href="#idp26985776">The Debian
-Project</a></span></dt>
-<dt><span class="section"><a href=
-"#idp26996864">Ubuntu</a></span></dt>
-<dt><span class="section"><a href=
-"#idp32030512">Applicability</a></span></dt>
-</dl>
-</dd>
-<dt><span class="section"><a href="#idp26879744">Balancing Forking
-With Collaboration</a></span></dt>
-<dd>
-<dl>
-<dt><span class="section"><a href="#idp26880432">Derivation and
-Problem Analysis</a></span></dt>
-<dt><span class="section"><a href="#idp32061728">Distributed Source
-Control</a></span></dt>
-<dt><span class="section"><a href="#idp32075664">Problem Specific
-Tools</a></span></dt>
-<dt><span class="section"><a href="#idp32079568">Social
-Solutions</a></span></dt>
-</dl>
-</dd>
-<dt><span class="section"><a href=
-"#idp32092080">Conclusions</a></span></dt>
-</dl>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h2 class="title" style="clear: both"><a name="idp27161152" id=
-"idp27161152"></a>Introduction</h2>
-</div>
-</div>
-</div>
+{% extends 'latex-like-layout.tmpl' %}
+{% set page_title = 'To Fork or Not To Fork: Lessons From Ubuntu and Debian' %}
+
+{% block content_box %}
+
+<h2 class="date">May 15 2005; Revised August 7, 2005</h2>
+
+<blockquote>
+  <p><em>Translated into  <a href="http://science.webhostinggeeks.com/fork">Serbo-Croatian (Srpskohrvatski)</a> by Anja Skrba.</em></p>
+
+  <p><em>The first version of this paper was written to an accepted talk given at Linuxtag 2005 given in Karlsruhe, Germany.</em></p>
+</blockquote>
+
+<h2>Introduction</h2>
+
 <p>The explosive growth of free and open source software over the
 last decade has been mirrored by an equally explosive growth in the
 ambitiousness of free software projects in choosing and tackling
@@ -137,8 +26,8 @@ programmers &mdash; both volunteer and paid &mdash; and are
 producing millions of lines of code. Their software is being used
 by millions of users with diverse sets of needs. This paper focuses
 on two major effects of this situation:</p>
-<div class="itemizedlist">
-<ul class="itemizedlist" style="list-style-type: disc;">
+
+<ul class="itemizedlist">
 <li class="listitem">
 <p>The communities that free software projects &mdash; and in
 particular large projects &mdash; serve are increasingly diverse.
@@ -153,7 +42,7 @@ groups of hackers, it is often not even possible for small groups
 to even track and maintain a fork of a large project over time.</p>
 </li>
 </ul>
-</div>
+
 <p>Taken together, these facts imply an increasingly realized free
 software community in which programmers frequently derive but where
 traditional forking is often untenable. "Forks," as they are
@@ -171,8 +60,8 @@ tools and experiences of derived distributions.</p>
 products that have forked but that maintain a close relationship as
 they develop parallelly and symbiotically. To do this, developers
 should:</p>
-<div class="itemizedlist">
-<ul class="itemizedlist" style="list-style-type: disc;">
+
+<ul class="itemizedlist">
 <li class="listitem">
 <p>Break down the process of derivation into a set of different
 types of customization and derivation and prioritize methods of
@@ -192,7 +81,7 @@ projects.</p>
 emphasis on maintaining differences over time.</p>
 </li>
 </ul>
-</div>
+
 <p>This paper is an early analysis of this set of problems. As
 such, it is highly focused on the experience of the Ubuntu project
 and its existence as a derived Debian distribution. It also pulls
@@ -200,16 +89,9 @@ from my experience with Debian-NP and the Custom Debian
 Distribution (CDD) community. Since I participate in both the
 Ubuntu and CDD projects, these are areas that I can discuss with
 some degree of knowledge and experience.</p>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h2 class="title" style="clear: both"><a name="idp27077936" id=
-"idp27077936"></a>"Fork" Is A Four Letter Word</h2>
-</div>
-</div>
-</div>
+
+<h2></a>"Fork" Is A Four Letter Word</h2>
+
 <p>The act of taking the code for a free software project and
 bifurcating it to create a new project is called "forking." There
 have been a number of famous forks in free software history. One of
@@ -251,13 +133,13 @@ published the first version of the <a class="ulink" href=
 Project Management HOWTO</a> more than four years ago, I included a
 small subsection on forking which described the concept to future
 free software project leaders with this text:</p>
-<div class="blockquote">
+
 <blockquote class="blockquote">
 <p>The short version of the fork section is, don't do them. Forks
 force developers to choose one project to work with, cause nasty
 political divisions, and redundancy of work.</p>
 </blockquote>
-</div>
+
 <p>In the <span class="emphasis"><em>best</em></span> situations, a
 fork means that two groups of people need to go on developing
 features and doing work they would ordinarily do <span class=
@@ -287,16 +169,9 @@ control systems, the definition of what is and is not a fork has
 become increasingly unclear. In part due to the same systems, the
 benefits and drawbacks of what is increasingly problematically
 called forking is equally debatable.</p>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h2 class="title" style="clear: both"><a name="idp27089792" id=
-"idp27089792"></a>Case Study</h2>
-</div>
-</div>
-</div>
+
+<h2>Case Study</h2>
+
 <p>In my introduction, I described how the growing scope of free
 software projects and the rapidly increasingly size and diversity
 of user communities is spearheading the need for new type of
@@ -304,15 +179,9 @@ derivation that avoids, as best as possible, the drawbacks of
 forking. Nowhere is this more evident than in the largest projects
 with the broadest scope: a small group of projects that includes
 operating system distributions.</p>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h3 class="title"><a name="idp26985776" id="idp26985776"></a>The
-Debian Project</h3>
-</div>
-</div>
-</div>
+
+<h3>The Debian Project</h3>
+
 <p>The Debian project is by many counts the largest free software
 distribution in terms of code. It is the also, arguably, the
 largest free software project in terms of the number of volunteers.
@@ -362,16 +231,9 @@ With its strong technological base, excellent package management,
 wide selection of packages to choose from, and strong commitment to
 software freedom which ensures derivability, Debian provides an
 ideal point from which to create a GNU/Linux distribution.</p>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h3 class="title"><a name="idp26996864" id=
-"idp26996864"></a>Ubuntu</h3>
-</div>
-</div>
-</div>
+
+<h3>Ubuntu</h3>
+
 <p>The Ubuntu project was started by Mark Shuttleworth in April
 2004 and the first version was built almost entirely by a small
 group of a Debian developers employed by Shuttleworth's company
@@ -380,8 +242,8 @@ Canonical Limited.<a href="#ftn.idp26998016" class="footnote" name=
 It was released to the world in late 2004. The second version was
 released six months later in April 2005. The goals of Ubuntu are to
 provide a distribution based on a subset of Debian with:</p>
-<div class="itemizedlist">
-<ul class="itemizedlist" style="list-style-type: disc;">
+
+<ul class="itemizedlist">
 <li class="listitem">
 <p>Regular and predictable releases &mdash; every six months with
 support for eighteen months.</p>
@@ -397,7 +259,7 @@ and a default selection and configuration of packages that is
 usable for most desktop users "out of the box."</p>
 </li>
 </ul>
-</div>
+
 <p>The Ubuntu project provides an interesting example of a project
 that aims to derive from Debian to an extensive degree. Ubuntu made
 code-level changes to nearly 1300 packages in Debian at the time
@@ -425,7 +287,7 @@ methodology in the week after the first public announcement of
 Canonical and Ubuntu:<a href="#ftn.idp27008624" class="footnote"
 name="idp27008624" id="idp27008624"><sup class=
 "footnote">[7]</sup></a></p>
-<div class="blockquote">
+
 <blockquote class="blockquote">
 <p>I don't think Ubuntu is a "fork" of Debian, at least not in the
 traditional sense. A fork suggests that at some point we go our
@@ -448,7 +310,7 @@ much easier when we come to freeze for "hoary", our next release,
 but it's exactly what every derivative should do in the first
 place.</p>
 </blockquote>
-</div>
+
 <p>There is some debate on the degree to which Ubuntu developers
 have succeeded in accomplishing the goals laid out by Remnant.
 Ubuntu has filed hundreds of patches in the bug tracking system but
@@ -478,15 +340,9 @@ Debian's. As a result, there is a limit to how far Ubuntu can
 diverge; it is always in Ubuntu's advantage to minimize the delta
 where possible.</p>
 </div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h3 class="title"><a name="idp32030512" id=
-"idp32030512"></a>Applicability</h3>
-</div>
-</div>
-</div>
+
+<h3>Applicability</h3>
+
 <p>Ubuntu and Debian are distributions and &mdash; as such &mdash;
 operate on a different scale than the vast majority of free
 software projects. They include more code and more people. As a
@@ -533,26 +389,11 @@ methodologies are first emerging. With time, these strategies and
 tools will find themselves employed productively in a wide variety
 of projects with a broad spectrum of sizes, needs, scopes and
 descriptions.</p>
-</div>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h2 class="title" style="clear: both"><a name="idp26879744" id=
-"idp26879744"></a>Balancing Forking With Collaboration</h2>
-</div>
-</div>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h3 class="title"><a name="idp26880432" id=
-"idp26880432"></a>Derivation and Problem Analysis</h3>
-</div>
-</div>
-</div>
+
+<h2></a>Balancing Forking With Collaboration</h2>
+
+<h3>Derivation and Problem Analysis</h3>
+
 <p>The easiest step in creating a productive derivative software
 project is to break down the problems of derivations into a series
 of different classes of modification. Certain types of modification
@@ -562,7 +403,7 @@ be broken down into the following types of changes (sorted roughly
 according to the intrusiveness inherent in solving the problem and
 the severity of the long-term maintainability problems that they
 introduce):</p>
-<div class="orderedlist">
+
 <ol class="orderedlist" type="1">
 <li class="listitem">
 <p>Selection of individual pieces of software;</p>
@@ -579,7 +420,7 @@ a Live CD type environment or using a different installer);</p>
 of changes to the packages code);</p>
 </li>
 </ol>
-</div>
+
 <p>By breaking down the problem in this way, Debian derivers have
 been able to approach derivation in ways that focus energy on the
 less intrusive problems first.</p>
@@ -640,16 +481,9 @@ change &mdash; changes to code &mdash; is the most difficult but
 also the most promising and powerful if it can be done sustainably.
 Changes of this type involve bifurcations of the code-base and will
 be the topic of the remainder of this paper.</p>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h3 class="title"><a name="idp32061728" id=
-"idp32061728"></a>Distributed Source Control</h3>
-</div>
-</div>
-</div>
+
+<h3>Distributed Source Control</h3>
+
 <p>One promising method of maintaining deltas in forked or branched
 projects lies in distributed version control systems (VCS).
 Traditional VCS systems work in a highly centralized fashion. CVS,
@@ -670,7 +504,7 @@ with the development release. The CVS model is <span class=
 arbitrary delta, or sets of deltas, are maintained over time.</p>
 <p>Distributed version control aims to solve a number of problems
 introduced by CVS and alluded to above by:</p>
-<div class="itemizedlist">
+
 <ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem">
 <p>Allowing people to work disconnected from each other and to sync
@@ -681,7 +515,7 @@ fashion.</p>
 <p>Allowing deltas to be maintained over time.</p>
 </li>
 </ul>
-</div>
+
 <p>Ultimately, this requires tools that are better at merging
 changes and in <span class="emphasis"><em>not</em></span> merging
 certain changes when that is the desired behavior. It also leads to
@@ -701,7 +535,7 @@ a patch-by-patch basis any more.<a href="#ftn.idp32069728" class=
 "footnote" name="idp32069728" id="idp32069728"><sup class=
 "footnote">[9]</sup></a></p>
 </blockquote>
-</div>
+
 <p>At the time of the switch, free distributed version control
 tools were less advanced than they are today. At the moment, an
 incomplete list of free software VCS tools includes GNU Arch,
@@ -740,16 +574,9 @@ control is only now being actively deployed in the Ubuntu project.
 In doing so, the project is focusing on integrating these into
 problem specific tools built on top of distributed version
 control.</p>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h3 class="title"><a name="idp32075664" id=
-"idp32075664"></a>Problem Specific Tools</h3>
-</div>
-</div>
-</div>
+
+<h3>Problem Specific Tools</h3>
+
 <p>Another technique that Canonical Ltd. is experimenting with is
 the creation of high level tools built on top of distributed
 version control tools specifically designed for maintaining
@@ -772,16 +599,9 @@ makers will, in all likelihood, be limited. That said, it provides
 an example of the way that problem and context specific tools may
 play an essential role in the maintenance of derived code more
 generally.</p>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h3 class="title"><a name="idp32079568" id="idp32079568"></a>Social
-Solutions</h3>
-</div>
-</div>
-</div>
+
+<h3>Social Solutions</h3>
+
 <p>It has been said that it is a common folly of a technophile to
 attempt to employ technical solutions toward solving social
 problems. The problem of deriving software is both a technical
@@ -791,7 +611,7 @@ take into consideration both types of solution.</p>
 <p>Scott James Remnant compares the relationship between
 distributions and derived distributions as similar to the
 relationship between distributions and upstream maintainers:</p>
-<div class="blockquote">
+
 <blockquote class="blockquote">
 <p>I don't think this is much different from how Debian maintainers
 interact with their upstreams. As Debian maintainers we take and
@@ -805,7 +625,7 @@ they take them, but we don't get angry if they don't.</p>
 we're no more a fork of Debian than a Debian package is a fork of
 its upstream.</p>
 </blockquote>
-</div>
+
 <p>Scott alludes the fact that, at least in the world of
 distributions, parallel development is already one way to view the
 <span class="emphasis"><em>modus operandi</em></span> of existing
@@ -871,17 +691,9 @@ a given social relationship. Even in situations where a package is
 branched because of social disagreements, a certain level of
 collaboration on a social level will be essential to the long term
 viability of the derivative.</p>
-</div>
-</div>
-<div class="section">
-<div class="titlepage">
-<div>
-<div>
-<h2 class="title" style="clear: both"><a name="idp32092080" id=
-"idp32092080"></a>Conclusions</h2>
-</div>
-</div>
-</div>
+
+<h2>Conclusions</h2>
+
 <p>As the techniques described in this paper evolve, the role that
 they play in free software development becomes increasingly
 prominent and increasingly important. Joining them will be other
@@ -899,8 +711,7 @@ will increase their capacity to produce better products and better
 processes. Ultimately, it will help free software capture more
 users, bring in more developers, and produce more free software of
 a higher quality.</p>
-</div>
-<div class="footnotes"><br>
+
 <hr style="width:100; text-align:left;margin-left: 0">
 <div id="ftn.idp26988128" class="footnote">
 <p><a href="#idp26988128" class="para"><sup class=
@@ -969,7 +780,5 @@ online at: <a class="ulink" href=
 "http://kerneltrap.org/mailarchive/1/message/48393/thread" target=
 "_top">http://kerneltrap.org/mailarchive/1/message/48393/thread</a></p>
 </div>
-</div>
-</div>
-</body>
-</html>
+
+{% endblock %}

Benjamin Mako Hill || Want to submit a patch?