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

<h2> Spotlight: On Developers 
  and Technology </h2>
<p>The International Discussions, I &amp; II</p>
<p><i><b>Posted, 3/22/01</b></i></p>
<p>The most important issue dominating the &quot;<a href="//www-discuss/current/">discuss</a>&quot; 
  mailing list has unquestionably been the debate over the &quot;internationalization&quot; 
  of OpenOffice.org; it is also the subject of <a href="ec15Mar.html">this 
  week's Open Views column.</a> The term, &quot;internationalization,&quot; does 
  not mean here that OpenOffice.org should be international in its composition. 
  It already is, with most of the developers located in Germany and support staff 
  in the San Francisco Bay Area and Ireland. No: what the term refers to is making 
  available elements (these are still being defined) of the project in languages 
  other than English. The debate has been vigorous and is important. On the one 
  hand, members <a href="//www-discuss/current/msg02156.html">argue</a> 
  that by allowing the creation of mailing lists and sections of the site in languages 
  other than English (e.g., French), more developers who primarily communicate 
  in those languages will want to join the community. Or, at the least, feel less 
  intimidated about joining, for they will be able to communicate more easily. 
  Opponents point out, however, that the project site might end up <a href="//www-discuss/current/msg02185.html">balkanized</a>, 
  with ultimately <i>less</i> and <i>not</i> more communication. The debate is 
  ongoing. Interested readers can read the original messages on the <a href="//www-discuss/current/">discuss 
  list archives</a>, and if you wish to intervene in the debate, we welcome you. 
  But to post a message, you must first subscribe to the mailing list, and doing 
  so is easy. </p>
<p>&nbsp;</p>
<p><i><b>Posted, 3/29/01</b></i></p>
<p>For the second week in a row, &quot;internationalization&quot; has dominated 
  the &quot;<a href="//www-discuss/current/">discuss</a>&quot; 
  mailing list. It is also the subject of this week's &quot;<a href="ec27Mar.html" target="_blank">Community 
  Article</a>.&quot; The term refers to creating a version of the project's website 
  and at least one mailing list in languages other than English. The debate has 
  been vigorous and is important, with broad implications for Open Source. On 
  the one hand, members <a href="//www-discuss/current/msg02156.html">argue</a> 
  that by allowing the creation of mailing lists and sections of the site in languages 
  other than English (e.g., French), more developers who primarily communicate 
  in those languages will want to join the community. Opponents point out, however, 
  that there very might be <i>less</i> and <i>not</i> more communication. You 
  can read the original messages on the <a href="//www-discuss/current/">discuss 
  list archives</a>, and if you wish to intervene in the debate, we welcome you.</p>
<p>&nbsp;</p>
<p><b>Previous Spotlights</b></p>
<p><a href="./spotlight3.html">Allchin and Foot-in-Mouth 
  Disease</a></p>
<p><a href="./spotlight1.html">Groupware</a></p>
<p><a href="./spotlight2.html">J&ouml;rg Brunsmann</a></p>
<p>&nbsp;</p>
<h3>&nbsp;</h3>
</body>
</html>

