<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
 
<h2>Community 
  Articles: Opinions, Interviews, Analyses</h2>
<p><a href="//lspintro.html" target="_blank">-Louis Su&aacute;rez-Potts</a></p>
<p>12 April 2001</p>
<p>&nbsp;</p>
<h4>What Must Be Done: The Mac OS X Port </h4>
<p>It's no exaggeration to say that the Mac community has been eagerly awaiting 
  the release of the OpenOffice.org port to Mac OS X. And I have to count myself 
  among them.&nbsp; Thus, when I learned of <a href="//www-announce/msg00045.html" target="_blank">Sun's 
  decision</a> to hand over further development of the port to the Open Source 
  community, specifically OpenOffice.org, my feelings were mixed.</p>
  
<p>On the one hand, I confess to being a little disappointed. I was looking forward 
  to using StarOffice this month on my brand-new, utterly beautiful Mac, and grumble 
  now that I'll have to wait until the port is completed by the Open Source community. 
</p>
<p>But this news--that the Open Source community is now responsible for the port--is 
  hardly disappointing. In fact, from my perspective as an Open Source advocate 
  and Mac aficionado, the news is rather exciting. For what Sun has done is take 
  the Open Source community at its word and offer it what is in effect the chance 
  to prove itself.</p>
<p>Specifically the <i>Mac</i> Open Source community, which now must finish the 
  work that Sun has begun--and Sun has gone a long way already. In this sense, 
  then, it is indeed a radical transfer of responsibility and management: from 
  a corporate structure, largely opaque to outside eyes, in which engineers craft 
  the software as a finished commodity for consumers, to an Open Source community, 
  where there is a strong, structural, and active link between the maker of the 
  product and the user of the product.</p>
<p>I'm not sure that theorists of Open Source play up that angle enough, and it's 
  important. So I'll emphasize it here. The link between the maker and the user 
  is, in Open Source, a <i>working</i> link that is ultimately pragmatic in a 
  way typical commodity relations never can be. That's because the Open Source 
  work addresses the real needs the consumer (no: user!) has and at a cost (often 
  close to free: as in beer) that is compelling both for the large U.S. corporation 
  tired and no longer so economically able to divert thousands upon thousands 
  of dollars for incessant, meaningless upgrades (&quot;upgrades&quot; that deal 
  merely with prior problems), and for businesses overseas that must deal with 
  a wholly different economic environment and a language far removed from the 
  default English in which the software has, without a doubt, been written for. 
</p>
  
<p>In contrast, Open Source software resolves the needs of a company both by being 
  responsive to user demand--developers constantly work on a project, and no project 
  is ever deemed finished, for users constantly raise new points--and by being, 
  very likely, actually affordable by the users who need to use the software in 
  the first place. But all this propaganda for Open Source is old hat, at least 
  for the OpenOffice.org community: we've heard it before. Yet, not only is it 
  good to hear again, but I recite these truths to situate the real value of having 
  the Mac OS X port to OpenOffice.org code available now for development.</p>
  
<p>And it needs development for that value to be realized. More accurately, the 
  port needs the developmental efforts of the vaunted Mac community--<i>now</i>.&nbsp; 
  Individuals can certainly build the port--the instructions are clear enough 
  and the engineers did a beautiful job. But to shape the code into something 
  that will provide what users need--that will require more than a team effort; 
  it will require a concerted <i>community</i> effort. </p>
  
<p>So I call on the Mac developers in the OpenOffice.org community and even outside 
  our community to start the race. Of course, this means that we will have to 
  reach out to Mac developers who might otherwise not venture to this community. 
  Let us, then. We can email developers in OS X communities, post messages and 
  notices, and emphasize what the stakes are and what the rewards are. Both are 
  high: a superior office suite designed to run natively in Mac OS X (Apple's 
  soon-to-be default OS), designed for real users, and supported by the Open Source 
  community. </p>
  
<p>And we must start now.</p>
<p>&nbsp;</p><h4>Mac OS X Porting Information</h4>
  
<p>For OpenOffice.org information on the port, see <a href="http://porting.openoffice.org/mac" target="_blank">Mac 
  OS X: Porting Information</a>: <a
href="http://porting.openoffice.org/mac">http://porting.openoffice.org/mac</a>. 
</p>
  <p>For links to Mac OS X developers, see, as a start: </p>
  
<p><span style='color:black'><a href="http://www.opensource.apple.com/projects/mail.html" target="_blank">Apple 
  Open Source Mailing Lists</a>: </span><span style='color:blue'><u>http://www.opensource.apple.com/projects/mail.html</u></span></p>
  
<p><a href="http://osx.macnn.com/" target="_blank">MacNN OS X</a>: <span style='color:blue'><u>http://osx.macnn.com/</u></span></p>
  
<p><a href="http://forums.macnn.com/" target="_blank">MacNN Reader Forums</a>, 
  <a href="http://forums.macnn.com/">http://forums.macnn.com/</a>, and scroll 
  down to the forum on Mac OS X for a list of topics.</p>
<p>&nbsp;</p>
<h4><a href="editors.html">Previous Articles 
  </a></h4>
</body>
</html>

