<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Important notes for Apache OpenOffice</title>
</head>

<body>

  <h1>Important notes for Apache OpenOffice</h1>

  <p>
    Please read the notes before downloading and using any Apache OpenOffice build.
  </p>

  <br />

  <ul>
    <li>
      <h3>Links to other download websites</h3>
      <p>
        Some of the links may refer to the native language download pages. These pages are maintained by the
        <a href="http://openoffice.apache.org/native-lang.html" title="Ask for more Apache OpenOffice languages">
        native language community</a>.
      </p>
    </li>
    <li>
      <h3>Installation instructions</h3>
      <p>
        <a href="common/instructions.html" title="Installation instructions">Installation instructions</a>
        will help you with the first steps. Or see the
        <a href="http://wiki.openoffice.org/wiki/Documentation/" title="Installation Guide">Installation Guide</a>
        and the
        <a href="../documentation/index.html" title="Setup Guides">Setup Guides</a> are also available.
      </p>
    </li>
    <li>
      <h3>How to report problems?</h3>
      <p>
        Users of any build are encouraged to join the Apache OpenOffice project and report any
        <a href="../qa/issue_handling/project_issues.html" title="Report any errors, improvements or feature requests">errors, improvements or feature requests</a>.
        Especially the
        <a href="http://openoffice.apache.org/qa.html" title="Quality Assurance team">Quality Assurance team</a>)
        needs help with the the review and investigation of unconfirmed issues.
      </p>
    </li>
    <li>
      <h3>MD5 checksums</h3>
      <p>
        MD5 checksums are used to verify that a locally downloaded file is exactly the same than on the server.
        It's a hash value that represents the integrity of data. Please read more
        <a href="checksums.html" title="Read in Wiki what Release Candidate means.">how to use it</a>.
      </p>
    </li>
  </ul>

</body>
</html>
