<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
<h2>News 2003-05: May</h2>
<p>2003-08-19</p>
<p>The following articles represent a selection of those pertaining to OpenOffice.org,
  Open Source, or the general IT industry that may be of interest to the community.
  If you would like to share an article with the community, please send the link
  to Louis Su&aacute;rez-Potts,  editor, at <a href="mailto:marketing@openoffice.apache.org">marketing@openoffice.apache.org</a>. </p>
  <p><a href="../news.html">Back to News Index</a></p>
<hr>
<br>
<table width="100%" border="1" cellpadding="4" cellspacing="0" bordercolor="#99CCFF">
 <tr>
    <td colspan="2"  class="alt4">2003-05: May</td>
  </tr>
  
  <tr>
    <td rowspan="2" class="alt8"><a href="http://www.internetnews.com/">Internetnews.com</a></td>
    <td  class="alt9"> <a href="http://www.internetnews.com/ent-news/article.php/2213591">Microsoft
        Alters Licensing Plan, Drops Office XP Price </a> <br>
              <em>2003-05-28</em></td>
  </tr>
  <tr>
    <td  class="alt9">Erin Joyce reports on Microsoft's efforts to make its Office
      more affordable by dropping the license cost. (There is no fee associated
      with OpenOffice.org usage.) As Joyce writes, "According to a research report
      from Deutsche Bank securities published Wednesday, the "blunt instrument" of
      pricing could be one of many ways Microsoft is expected to respond to the
      challenge Linux poses to its market dominance."</td>
  </tr>
  <!--cut here-->
  <!--cut here-->
  <tr>
    <td rowspan="2" class="alt8"> <a href="http://news.com.com/">c|net</a></td>
    <td  class="alt9"> <a href="http://news.com.com/2100-1016-1010740.html">Munich
        breaks with Windows for Linux </a> <br>
              <em>2003-05-28</em></td>
  </tr>
  <tr>
    <td  class="alt9">As Stephen Shankland writes, "The local government in Munich,
      Germany, has voted to move 14,000 computers from Microsoft's Windows to
      the rival Linux operating system, despite efforts by the software giant
      to hang onto the multimillion-dollar contract."</td>
  </tr>
  <!--cut here-->
  <!--cut here-->
  <tr>
    <td rowspan="2" class="alt8"> <a href="http://www.internetnews.com/">Internetnews.com</a></td>
    <td  class="alt9"> <a href="http://www.internetnews.com/dev-news/article.php/2211681">OpenOffice.org
        1.1 Beta2 Hits the We </a> <br>
              <em>2003-05-23</em></td>
  </tr>
  <tr>
    <td  class="alt9">Thor Olavsrud reports that, "Two months after the release
      of its first beta, OpenOffice.org Thursday took OpenOffice.org 1.1 Beta2
      to the Web on schedule. "</td>
  </tr>
  <!--cut here-->
  <!--cut here-->
  <tr>
    <td rowspan="2" class="alt8"> <a href="http://newsforge.com/">NewsForge</a></td>
    <td  class="alt9"> <a href="http://newsforge.com/newsforge/03/05/07/1022221.shtml?tid=19">Open
        Source Initiative president responds to SCO's DoS claims </a> <br>
              <em>2003-05-07</em></td>
  </tr>
  <tr>
    <td  class="alt9">Noted Open Source pundit Eric S. Raymond, President of
      OSI, writes that, "In a recent press release , SCO suggests that the Linux
      community may be responsible for the denial-of-service attack on its servers
      that occurred on Friday, May 2nd. This is a baseless slur, unsupported
      by facts." Very much worth reading.</td>
  </tr>
  <!--cut here-->
  <tr>
    <td rowspan="2" class="alt8"> <a href="http://www.infoworld.com/">InfoWorld</a></td>
    <td  class="alt9"> <a href="http://www.infoworld.com/article/03/05/08/HNbigopensource_1.html">Big
        companies save big from open source</a> <br>
              <em>2003-05-08</em></td>
  </tr>
  <tr>
    <td  class="alt9">John Blau reports that "Large companies can save a substantial
      amount of money by using open source software products, according to a
      study published Wednesday [2003-05-07] by the Swiss consultancy Soreon
      Research. </td>
  </tr>
  <!--cut here-->
  <tr>
    <td rowspan="2" class="alt8"> <a href="http://news.com.com/">c|net</a></td>
    <td  class="alt9"> <a href="http://news.com.com/2100-1002_3-999584.html?tag=lh">Net
        attack crushes SCO Web sit </a> <br>
              <em>2003-05-02</em></td>
  </tr>
  <tr>
    <td  class="alt9">Stephen Shankland reports that, "An avalanche of data blocked
      access to the SCO Group's Web site for several hours Friday, said the company,
      which has come under fire from Linux fans for an ongoing lawsuit against
      IBM." Read the article below to get the context. </td>
  </tr>
  <!--cut here-->
  <tr>
    <td rowspan="2" class="alt8"> <a href="http://news.com.com/">c|net</a></td>
    <td  class="alt9"> <a href="http://news.com.com/2100-1016_3-999371.html?tag=fd_lede1_hed">SCO:
        Unix code copied into Linux </a> <br>
              <em>2003-05-01</em></td>
  </tr>
  <tr>
    <td  class="alt9">Stephen Shankland writes on the claims made by SCO Group
      regarding copyright infringement by Linux. "Lines from Unix's source code
      have been copied into the heart of Linux, sometimes exactly and sometimes
      in a modified form designed to disguise their origin, according to SCO
      Group Chief Executive Darl McBride." Worth reading.</td>
  </tr>
  <!--cut here-->
  <tr>
    <td rowspan="2" class="alt8"> <a href="http://newsforge.com/">NewsForge</a></td>
    <td  class="alt9"> <a href="http://newsforge.com/newsforge/03/04/30/1926238.shtml?tid=19">On
        Open Source Procurement Policies</a> <br>
              <em>2003-05-01</em></td>
  </tr>
  <tr>
    <td  class="alt9">Tony Stanco, Director of the Center of Open Source & Government,
      and Associate Director of the Cyber Security Policy and Research Institute
      at The George Washington University, essays an argument on procurement
      policies for Open Source. </td>
  </tr>
 
</table>
</body>
</html>

