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

<h2> Spotlight: On Developers 
  and Technology </h2>

<br>
<p>In the last ten days, no single issue has dominated the mailing lists. Rather, 
  there have been a variety of issues. In the &quot;<a href="//www-discuss/current/" target="_blank">discuss</a>&quot; 
  list, which is the more general-issue mailing list, the community has discussed, 
  among other things, the availability of the <a href="//www-discuss/current/msg01949.html">software 
  on CD</a>, and <a href="//www-discuss/current/msg01988.html" target="_blank">user 
  interface modifications</a>. That said, Bill Roth's response to Microsoft's 
  Jim Allchin's<a href="http://news.cnet.com/news/0-1003-200-4833927.html?tag=st.cn.1.lthd" target="_blank"> 
  foot-in-mouth voicings</a> about how Open Source is not just a &quot;threat 
  to innovation&quot; but &quot;un-American&quot; (!) continues to draw comment 
  in the discuss list. Of the lists more focused on the practical applications 
  of the software, the <a href="http://porting.openoffice.org/porting-dev/" target="_blank"> 
  porting list</a> has been especially popular, with the biggest news having to 
  do with a<a href="http://porting.openoffice.org/porting-dev/msg01537.html" target="_blank"> 
  successful port of the software to NetBSD/sparc</a>. A more formal announcement 
  will appear on this page shortly. As always, for up-to-date information relating 
  to this (and any other) project, it's best to subscribe to the relevant <a href="//mail_list.html">mailing 
  list. </a></p>
<p><b>Previous Spotlights</b></p>
<p><a href="./spotlight1.html">Groupware</a></p>
<p><a href="./spotlight2.html">J&ouml;rg Brunsmann</a></p>
<p>&nbsp;</p>
<p><a href="./spotlightindex.html">Return to index.</a></p>
</body>
</html>

