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

<TITLE>The International OpenOffice</TITLE>

<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>19 March 2001</p>
<P><b>The International</b></P>
<P> My subject, the &quot;internationalization&quot; of OpenOffice.org, derives 
  from an ongoing debate over issues whose importance to Open Source projects 
  demands substantive treatment. I want here, then, to briefly sketch out the 
  argument that has been engaging participants on the discuss list of OpenOffice.org 
  regarding the creation of versions of OpenOffice.org mailing lists (and even 
  of the site) in various &quot;major&quot; languages. If my terms are a little 
  coy, that&#146;s because there has not been so far (as of Friday, 16 March), 
  any certain definition of what such a process of internationalization would 
  entail, should it even go forward. But for those who want to read more on the 
  issue, I urge you to refer to the extensive thread in the <a href="//mail_list.html" target="_blank">discuss 
  mailing list</a>. </P>
<P>Some background is in order to understand some of the issues that were raised 
  by the discussions. OpenOffice.org <a href="http://www.businessweek.com/ebiz/9909/em0915.htm" target="_blank">traces 
  its origins</a> to the German software developed by the German company Star 
  Division, and most of its Sun developers are German and speak German. Star Division 
  was bought by the U.S.'s Sun Microsystems two years ago. Today, work on OpenOffice.org 
  software is conducted primarily, if not exclusively, in English. That work is 
  not done entirely in the U.S. It is in fact global, with the support staff located 
  both in the San Francisco Bay Area and Ireland, and developers in Germany and 
  throughout the world. From this perspective, then, it would seem that OpenOffice.org 
  is anything but provincial; that it is, in fact, very international indeed.</P>
<P>The very fact that OpenOffice.org is so international raises some questions: 
  Why is English (and not German, say) the predominant language? Does the de facto 
  predominance of English in the website and in the mailing lists help or hinder 
  the growth of the community? And, would it be reasonable (and feasible) to set 
  up special mailing lists and website sections that would allow non-English speaking 
  developers, users, and the merely curious to exchange ideas (if not necessarily 
  code) efficiently? </P>
<P>As Guy Capra of the French site<a href="http://www.openoffice-fr.org" target="_blank"> 
  OpenOffice.fr</a> (an independent shadow of OpenOffice.org) has <a href="//www-discuss/current/msg02156.html" target="_blank">argued</a>, 
  the advantage of linguistically diversifying OpenOffice.org content is that 
  more developers might wish to join the community and participate in developing 
  the code. According to this argument, not only would they find it easier to 
  <a href="//www-discuss/current/msg02205.html" target="_blank">communicate</a> 
  amongst themselves in their native language but they would also, perhaps, <a href="//www-discuss/current/msg02206.html" target="_blank">feel 
  less of a resentment to participating in yet another English-only project.</a> 
  Developers would not only feel more inclined to contribute code without feeling 
  that they had to enter an English-only community but would be more inclined 
  to contribute to a project that was more &quot;theirs.&quot; The project would 
  thus grow as it linguistically diversified.</P>
<P>But the <a href="//www-discuss/current/msg02185.html" target="_blank">opposition</a> 
  to this argument is quite strong and has been most precisely<a href="//www-discuss/current/msg02268.html"> 
  expressed by Sun's Bill Roth</a> and Dietrich Schulten. Any dynamic open-source 
  project always veers towards the chaotic and needs an organizing principle in 
  order to stay focused. Otherwise, any project risks not just a centrifugal disintegration, 
  but a forking of content (and perhaps even code) that ultimately diminishes 
  the value of the anticipated product. Thus, if OpenOffice.org were to create 
  satellite or parallel sites in various languages, the project as a whole might 
  suffer because developers may either cease crossing linguistic gaps to communicate 
  with other developers (French developers may not bother to communicate with, 
  say, German developers)&#150;which is a fairly unlikely scenario&#150;or there 
  might just be the specter of a terrible <a href="//www-discuss/current/msg02177.html">confusion</a>, 
  as redundant lists and redundant messages in various languages start proliferating. 
  And, for those developers working in a language other than English, they could 
  use one of the Web's translating services (such as Alta Vista's <a href="http://world.altavista.com/" target="_blank">BabelFish</a>) 
  to translate messages into English and back into their chosen tongue.</P>
<P>I would like to stop here this week. As I mentioned above, the discussion is 
  still ongoing; Bill Roth, in fact, enabled a <a href="http://www.123voting.com/takepoll.cgi?id=4646">site</a> 
  where opinions on the issue can be polled. Next week, I will resume this debate 
  and examine how other open-source projects have dealt with this problem (if 
  at all). If you wish to discuss this, please feel free (in fact, feel encouraged) 
  to post your responses to the OpenOffice.org <a href="//mail_list.html">discuss</a> 
  list. To post, you will have to subscribe. And we have made that part very easy.</P>
<P>&nbsp;</P>
<h4>Previous articles </h4>
<p>9 March 2001 <i><a href="ec9Mar.html">Creating the 
  New Open Source</a></i></p>
<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>

