<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>


<p>
<h2><font color="#cc6600" face="Courier New, Courier, mono" size="+2">Editor's Column</font></h2>
<p><a href="//lspintro.html">-Louis Suarez-Potts</a></p>
<p>1 February 2001</p>
<p><b>Open Source and Its Culture</b></p>
<P><b>About this column</b></P>

<P>I&#146;d like to clarify the purpose of the Editor&#146;s Column. The articles 
  that comprise &quot;Editor&#146;s Column&quot; do not seek to represent Sun&#146;s 
  view, and I don&#146;t know about OpenOffice.org&#146;s views, as it&#146;s 
  not clear that one can easily synthesize the disparate views of an open-source 
  community as such into something coherent enough to fit into a column. Rather, 
  the purpose of the column is to focus on issues that the community has found 
  interesting, as evidenced by discussions in the mailing lists, or might find 
  interesting, because they relate to Open Source, its communities, and important 
  spokespeople.</P>
<P>All this is to say that the articles I write under the rubric, &quot;Editor&#146;s 
  Column&quot; are meant to be discussed. So, if you disagree with the ideas, 
  logic, or characterizations, please, feel free express your opinions. And, if 
  you feel that I am not addressing some pressing issue, don&#146;t hesitate to 
  let me know. As I&#146;ve stated before, I would be delighted to receive suggestions 
  about topics, interviews, what have you. In fact, this is a serious call for 
  ideas: Send in your suggestions either to the discuss list or to <a href="mailto:louis at collab.net">louis 
  at collab.net</a>. It would also be great if a community member were to submit 
  for consideration an article, interview, or piece that he or she felt others 
  in the community would find interesting. </P>


<b><P>Questions about Open Source</P></b>
<P>This article inaugurates a series of articles questioning the shape and force 
  of Open Source, as a culture of work and as an organizational system. I plan 
  on these articles being intermittent; the sequence will doubtless be interrupted 
  by more immediate news or controversy related to OpenOffice.org. </P>
<P>There are several questions that motivate this inquiry; they include:</P>
<UL>
  <LI>How are (other) large open-source projects organized?</LI>
  <LI>What are the issues at stake? (I.e., what is hoped to be accomplished by 
    open-sourcing the code?)</LI>
  <LI>Under what license or licenses are these constituted?</LI>
  <LI>What is the relation between the sponsoring corporation and the open-source 
    project?</LI>
  <LI>Who are the developers, and what do they have to gain from the project?</LI>
  <LI>And, finally&#150;and most intangibly&#150;what is the &quot;culture&quot; 
    of the project?</LI>
</UL>
<P>Clearly, this project is large in scope and will take some time to fully complete; 
  in fact, I&#146;m sure I&#146;ll have to revisit the Darwin project later on. 
  My plan so far is to examine not just Darwin, but also Mozilla.org, and other 
  large, open-source projects. Why large projects? Size is a criterion here simply 
  because I suspect a large open-source project differs importantly from smaller 
  projects, and not just in the logistics of arranging the release of enormous 
  blocks of code to an uncertainly defined community. The nature of the community, 
  its &quot;culture,&quot; how it works together, and the manner in which it contributes 
  code also changes according to the size and scope of the project. </P>
<P>This project is evolving. If the community wants to contribute suggestions&#150;such 
  as different questions to ask, or particular projects that should be examined&#150;please 
  forward them to me, and I&#146;ll see what I can do.</P>

 
<b><P>Darwin</P></b>

<P>Apple Computer&#146;s open-source Darwin was <a href="http://www.apple.com/pr/library/1999/mar/16opensource.html">announced</a> 
  on 16 March 1999, and, in the words of its statement to the press, Apple became 
  &quot;the first mainstream operating system provider to release its source code 
  to the public and base its system software strategy on Open Source technologies.&quot; 
  Initially, the focus was on Mac OS X Server; it quickly included the consumer-oriented 
  Mac OS X, which is slated for release on 24 March 2001. </P>
<P>Darwin 1.2, the <a href="http://www.opensource.apple.com//projects/darwin/1.2/release.html">current 
  release</a>, is enormous. 135MB for a disk image of the binaries. Interested 
  developers can also download source code; the project allows modifications to 
  be <a href="http://www.opensource.apple.com//projects/darwin/1.2/projects.html">submitted</a> 
  through mailing lists and CVS (Concurrent Versions System), which is recommended 
  but not required.</P>
<P>Despite its size and ambition, however, Darwin <I>as</I> an open-source project 
  seems to be often ignored by other open-source groups. OpenOffice.org, for instance, 
  is usually compared to <a href="http://www.mozilla.org">Mozilla.org</a>, and 
  is touted as being the largest open-source project. Darwin is never (or very 
  seldom) mentioned&#150;not by Sun press, nor by the media at large, when discussing 
  OpenOffice.org </P>
<P>This lack of mention probably has something to do with the common notion that 
  Apple exists in a universe of its own. But it also has to do, I think, with 
  the controversy surrounding Apple&#146;s open source credentials. Shortly after 
  the announcement of the project&#146;s inception, however, the license under 
  which Darwin project operated and which defined the project&#146;s status <I>as</I> 
  &quot;open source,&quot; became the focus of a debate between Open Source luminaries 
  <a href="http://www.tuxedo.org/%7Eesr">Eric Raymond</a>, of <a href="http://www.opensource.org">OpenSource.org,</a> 
  <a href="http://www.perens.com/Bio.html">Bruce Perens</a>,who gave us &quot;Open 
  Source,&quot; and <a href="http://www.stallman.org/">Richard Stallman,</a> who 
  can be said to have started <a href="http://www.gnu.org/gnu/thegnuproject.html">Open 
  Source</a> (or, as he prefers, &quot;Free Software&quot;).</P>
<P>To summarize the history, Eric Raymond gave, if not his blessing, his <a href="http://www.opensource.org/products.html">certification</a>, 
  to the Apple Public Source License under which Darwin was constituted (APSL 
  Ver. 1 and shortly later, <a href="http://cgi.cs.rpi.edu/%7Egerbal/fom-serve/cache/11.html">1.1</a>; 
  it is now at <a href="http://www.opensource.apple.com//apsl/">Ver. 1.2</a>). 
  Raymond was publicly criticized for his actions by his colleague Bruce Perens, 
  who along with <a href="http://www.wi.leidenuniv.nl/%7Ewichert/">Wichert Akkerman</a>, 
  <a href="http://www.debian.org/">Debian</a> Project Leader, and <a href="http://195.224.76.132/%7Eijackson/ijackson.html">Ian 
  Jackson</a>, President,<a href="http://www.spi-inc.org/"> Software in the Public 
  Interest</a>, <a href="http://www.perens.com/APSL.html">argued</a> that the 
  APSL Ver. 1 failed to meet the necessary criteria for Open Source (Version 1.1, 
  issued 19 April 1999, <a href="http://www.perens.com/APSL.html">mostly satisfied</a> 
  the authors). Richard Stallman was unpersuaded by the changes Apple made to 
  its license and <a href="http://www.gnu.org/philosophy/apsl.htm">condemned</a> 
  it as roundly as he had the first version (Ver. 1.1 fell &quot;short of being 
  a free software license&quot;). The debate got a little <a href="http://www.perens.com/perens_com/Articles/EricsJob.html"> 
  savage</a>, but that is because the issue at stake was so important to Open 
  Source. </P>
<P>The issue had to do with the relation between corporate interests and Open 
  Source. As Perens rather despondently concludes in his <a href="http://www.perens.com/perens_com/Articles/EricsJob.html">rebuttal</a> 
  to Raymond, &quot;The needs of corporations are not necessarily those of the 
  free software community, and it may even be the case that the twain will never 
  meet. Open Source appears to be splitting into something I'd call "Corporate 
  Source", semi-free programs with disclosed source but less than the full set 
  of rights we are used to, and true Free Software as represented by the <a href="http://www.opensource.org/licenses/">GPL, 
  LGPL, X/BSD</a>, and other licenses. Public discussion of this fact is essential. 
  We may eventually have to accept that it will never be possible for corporate 
  participation in the free software community to be as full as we would like. 
  Contributions like the MacOS X source may end up being useless to the free software 
  community as far as code reuse is concerned, but they may still be good documentation 
  on the underlying hardware, and will be useful, with some caution, to authors 
  of fully free software.&quot; </P>
<P>Perens wrote gloomier than warranted. Not only has OpenOffice.org evidenced 
  that a company can move large, proprietary, software using true Open Source 
  <a href="//license.html">licenses</a>, but Apple itself 
  has recently (4 January 2001) revised its <a href="http://www.opensource.apple.com//apsl/">license</a> 
  for Darwin. The short <a href="http://www.opensource.apple.com/,">blurb</a> 
  under the link for the new license states, &quot;The Apple Public Source License 
  has been updated to make it easier for people to contribute to and use the software,&quot; 
  and after the most cursory glance, it seems to be so. Rather belatedly, Apple 
  has entered Open Source (even <a href="http://slashdot.org/articles/01/01/05/0111218.shtml">Slashdot</a> 
  seems to agree). </P>
<P>What is left hanging, however, is the question of the culture of Darwin. Future 
  articles will examine this aspect of the project. I will also begin a look at 
  Mozilla.org.</P>
<P>&nbsp;</P>
<h4>Previous columns</h4>
<p>23 January 2001 <i><a href="communityaction.html">Community 
  Action</a></i></p>
<p>16 January 2001 <i><a href="ec16Jan01.html">Quo Vadis 
  OpenOffice.org?</a></i></p>
<p>9 January 2001 <i><a href="thebuild.html">The 613 
  build:&nbsp; problems and opportunities</a></i></p>
<p>3 January 2001 <i><a href="SunsOpenDoor.html">Sun's 
  open door</a></i></p>
<p>&nbsp;</p>
<p> 
<p>E-mail:<a href="mailto:louis at collab.net"> Louis at collab.net</a></p>
<P>&nbsp;</P>
</body>
</html>

