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

<h2><font color="#cc6600" face="Courier New, Courier, mono" size="+2">Open Views</font></h2>

<P><a href="//lspintro.html" target="_blank">-Louis Su&aacute;rez-Potts</a></P>
<p>8 March 2001</p>
<P><b>Creating the New Open Source</b></P>
<P>Calling these articles &quot;Editor&#146;s Column,&quot; has been, I realize, 
  a mistake. My suspicion is that by using the word &quot;Editor,&quot; I have 
  left the unfortunate impression that these are editorials. They are not. As 
  I stated <a href="ec1Feb.html" target="_blank">earlier</a>, 
  my intention in these columns is to provide the community with news, views, 
  and positions it might find of interest. An obvious function, too, is to give 
  newbies a sense both of Open Source, its issues, and of OpenOffice.org, and 
  its work.</P>

<P>So, I&#146;ll rename it, to Open Views. My focus, however, will not substantially 
  change. I will still examine the logic and practice of Open Source and OpenOffice.org. 
</P>

<P>Last <a href="ec1Mar.html">week</a>, I presented 
  an interview with Sander Vesik, who, along with Armin Theissen, is a release 
  engineer for OpenOffice.org. I asked him what I thought was a rather simple 
  question, &quot;It's difficult sometimes for those not familiar with the workings 
  of an open-source project to understand just how positions are established and 
  defined&#133;.&quot; I expected as an answer something that would describe for 
  those who are curious indications as to how an Open Source project is arranged 
  and how power is distributed. But Sander responded&#150;and for this I thank 
  him!&#150;in a way that went straight to the heart of any Open Source project 
  and certainly to the heart of ours:</P>
<DIR>
<DIR>

<P>&quot;OpenOffice.org isn't really an open-source project, and definitely not from the developer base point of view, having only one non-Sun committer. Well, this doesn't sound nice when taken on the face value. Yes, the code definitely is free, but the developer community and structures associated with that just haven't developed yet.&quot; </P>
</DIR>
</DIR>

<P>Sander went on to add that, &quot;There are a great number of shades of gray 
  between &quot;totally Open Source&quot; and &quot;closed source.&quot; [&#133;] 
  [Whether] a project is open or not doesn't depend so much on the license but 
  how the whole project works. The license is only a small part of that, and not 
  always the most important.&quot; The license, though important, is just a start. 
  What counts, in the end, is the whole structure of the project. In this view, 
  OpenOffice.org is thus not an open-source project, despite its license, because 
  its community does not yet include very many outside contributors. </P>

<P>I actually disagree with Sander, though I can see why he should make his claim. 
  And I believe that OpenOffice.org will progressively include more developers. 
  But there is implicit in Sander&#146;s argument the notion that there is a true&#150;or 
  &quot;totally Open Source&quot;&#150;project, and I wonder. I wonder if Open 
  Source has in fact undergone, or is undergoing, a revolution of sorts. And that 
  we should no longer only look, say, to <a href="http://www.linux.org" target="_blank">Linux</a> 
  or <a href="http://www.apache.org" target="_blank">Apache</a>, for <a href="http://www.opensource.org" target="_blank">definitions</a> 
  of what Open Source is or means. </P>

<P>Open Source, as a method and practice is changing or has changed because it 
  has become commercially reasonable&#150;smart, even!&#150;for companies to release 
  formerly proprietary code under an Open Source license and get people all over 
  the world with no allegiance to and under no contract with to the sponsoring 
  company to work on the project, often for free. This is a significant change; 
  Open Source as such will become more a logical business strategy and method 
  in which businesses seek the attention and interests of globally distributed 
  developers than a cowboy culture in which hobbyists develop really neat hacks. 
  Oh, that will stay; hacking for the sake of it and for the informal communities 
  it builds will never go away. But Open Source as such is fast becoming a big 
  business and, as they say, the paradigm has shifted.</P>

<P>Of course, as Sander implied, you can&#146;t just hang out a sign that the 
  code is now free and expect the thing to work. (<a href="http://dailynews.yahoo.com/h/zd/20010306/tc/opening_proprietary_code_doesn_t_come_easy_for_hp_1.html" target="_blank">Witness 
  the telling problems facing HP right now.</a>) You have to somehow establish 
  a community to work on the code. I would add: and you need to create a political 
  and technological infrastructure that allows the community to grow. For unlike 
  Linux and Apache, which were never sponsored by corporations, OpenOffice.org 
  must establish&#150;and it is&#150;an identity and structure that allows it 
  easily to bring in new members. I think we are getting there.</P>
<P>&nbsp;</P>
<h4>Previous articles</h4>
<p>1 March 2001 <i><a href="ec1Mar.html" target="_blank">Interview: 
  Sander Vesik</a></i></p>
<p>22 February 2001 <i><a href="MSFTArticle.html">Allchin's 
  Demagoguery, by Bill Roth, guest contributor</a></i></p>
<p>15 February 2001 <a href="ec15Feb.html"><i>Interview 
  with Wilfredo S&aacute;nchez</i></a></p>
<p>9 February 2001 <a href="ec8Feb.html" target="_blank"><i>Organizing 
  Open Source</i></a></p>
<p>1 February 2001 <i><a href="ec1Feb.html" target="_blank">Open 
  Source and Its Culture</a></i></p>
<p>23 January 2001 <i><a href="communityaction.html" target="_blank">Community 
  Action</a></i></p>
<p>16 January 2001 <i><a href="ec16Jan01.html" target="_blank">Quo 
  Vadis OpenOffice.org?</a></i></p>
<p>9 January 2001 <i><a href="thebuild.html" target="_blank">The 
  613 build:&nbsp; problems and opportunities</a></i></p>
<p>3 January 2001 <i><a href="SunsOpenDoor.html" target="_blank">Sun's 
  open door</a></i></p>
</body>
</html>

