<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
  <table width="100%" border="0" cellpadding="0">
    <tr valign="top">
      <td width="75%" align="left" valign="top">
        <table cellpadding="4" cellspacing="1" bgcolor="#ffffff"
        width="98%">
          <tr>
            <td colspan="4" class="darkblueleft"><a name="NEWS"
            id="NEWS"></a><strong>News</strong></td>
          </tr>

          <tr>
            <td colspan="4" class="liteblue">Web Archive</td>
          </tr>

          <tr>
            <td colspan="4" class="tableF0"><br />
             For the latest announcements and OpenOffice.org
            newsletters browse the archive at:<br />
            <br />
             <a href="http://www.openoffice.org/servlets/SummarizeList?listName=announce">
            http://www.openoffice.org/servlets/SummarizeList?listName=announce</a><br />

            <br /></td>
          </tr>

          <tr>
            <td colspan="4" class="darkblueleft">
            <strong>Contacts</strong></td>
          </tr>

          <tr>
            <td colspan="4" class="liteblue">Marketing Project
            Lead(s)</td>
          </tr>

          <tr>
            <td colspan="4" class="tableF0"><br />
            <u><a href="mailto:swhiser@openoffice.org">Sam
            Hiser</a></u><br />
            OpenOffice.org Marketing Project Lead<br />
            Email: swhiser@openoffice.org<br />
            <br />
            <u><a href="mailto:louis@openoffice.org">Louis
            Suarez-Potts</a></u><br />
            OpenOffice.org Community Manager<br />
            CollabNet, Inc.<br />
            Email: louis@openoffice.org<br />
            <br />
            <u><a href="mailto:%20erwin.tenhumberg@sun.com">Erwin
            Tenhumberg</a></u><br />
            Product Marketing Manager<br />
            Desktop Solutions Group<br />
            Sun Microsystems, Inc.<br />
            Email: erwin.tenhumberg@sun.com<br />
            <br /></td>
          </tr>

          <tr>
            <td colspan="4" class="liteblue">Local Contacts</td>
          </tr>

          <tr>
            <td colspan="4" class="tableF0"><br />
             Local OpenOffice.org Marketing Contacts:<br />
             <a href="http://marketing.openoffice.org/contacts.html">
            http://marketing.openoffice.org/contacts.html</a><br />
            <br />
             Native-Language Project Leads<br />
             <a href="http://projects.openoffice.org/index.html">http://projects.openoffice.org/index.html</a>
            (scroll down to "Native-Lang Category")<br />
            <br /></td>
          </tr>

          <tr>
            <td colspan="4" class="darkblueleft">Downloads</td>
          </tr>

          <tr>
            <td colspan="4" class="liteblue">Full Press Kit</td>
          </tr>

          <tr>
            <td colspan="4" class="tableF0">
              <br />
               Contents: 

              <ul>
                <li>
                <a href="presskit/documents/OOo_11_release.pdf">OpenOffice.org
                1.1. Release</a> (35kb)</li>

                <li>
                <a href="presskit/documents/press_faq.txt">Press
                FAQ</a></li>

                <li>
                <a href="presskit/documents/OOoFlyer11p.pdf">Product
                Flyer</a> (700kb)</li>

                <li>Background Information (old Releases &amp;
                Newsletters)</li>

                <li>Logos</li>

                <li>Screenshots</li>
              </ul>

              <p>Download Entire File:
              <a href="./presskit.zip">presskit.zip</a> (about 2
              MB)</p><br />
            </td>
          </tr>

          <tr>
            <td colspan="4" class="liteblue">OpenOffice.org
            Software</td>
          </tr>

          <tr>
            <td colspan="4" class="tableF0">
              <br />
               

              <ul>
                <li>
                <a href="http://www.openoffice.org/dev_docs/source/download.html">
                http://www.openoffice.org/dev_docs/source/download.html</a></li>
              </ul><br />
            </td>
          </tr>

          <tr>
            <td colspan="4" class="liteblue">Archived Press releases (PDF)</td>
          </tr>

          <tr>
            <td colspan="4" class="tableF0">
              <table>
              <tr>
                <td>
                <a href="http://marketing.openoffice.org/press/ooo11/presskit/press_releases/OGo_Launch_7-10-2003.pdf">
                OpenGroupware.org launched</a></td><td>10 July 2003</td></tr>

              <tr>
                <td>
                <a href="http://marketing.openoffice.org/press/ooo11/presskit/press_releases/OOo_ANNOUNCES_SDK_Final_Release_4-4-2003.pdf">
                OpenOffice.org announces SDK 1.0.2 Final Release</a></td><td>4 April 2003</td></tr>

              <tr>
                <td>
                <a href="http://marketing.openoffice.org/press/ooo11/presskit/press_releases/OOo_ANNOUNCES_OOo_1.1_Beta_3-26-2003.pdf">
                OpenOffice.org announces 1.1 Beta</a></td><td>26 March 2003</td></tr>

              <tr>
                <td>
                <a href="http://marketing.openoffice.org/press/ooo11/presskit/press_releases/OOo_1.0_X11_for_Mac_OS%20X_Final_Beta_1-8-2003.pdf">
                OpenOffice 1.0 X11 for Mac OS X Final Beta
                Announced</a></td><td>8 January 2003</td></tr>

               <tr>
                <td>
                <a href="http://marketing.openoffice.org/press/ooo11/presskit/press_releases/OOo_Anniversary_Press_Release_10-13-2002.pdf">
                OpenOffice.org celebrates its second birthday</a></td><td>14 October 2002</td></tr>

              <tr>
                <td>
                <a href="http://marketing.openoffice.org/press/ooo11/presskit/press_releases/OOo_MAC_OS_X_press_release_US_5-7-2002.pdf">
                OpenOffice.org MAC OS X Developer Release</a></td><td>7 May 2002</td></tr>

              <tr>
                <td>
                <a href="http://marketing.openoffice.org/press/ooo11/presskit/press_releases/OpenOffice.org_1.0_Launch_5-1-2002.pdf">
                OpenOffice.org 1.0 Launch</a></td><td>1 May 2002</td></tr>
              </table
            </td>
          </tr>

          <tr>
            <td colspan="4" class="darkblueleft"></td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</body>
</html>

