<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
    <title>Bugs&amp;Issues Explained</title>
    <style type="text/css">
      @import "/css/qa.css";
     app.li { margin-top:10px !important; }
    </style>
  </head>
  <body>
    <div class="Acta1">
      <h1>About Issues</h1>
      <h3>Contents</h3>
    </div>
    <ul>
      <li>
        <a href="#filing">Filing Issues</a></li>
      <li>
        <a href="#handling">Issue Handling</a>
      </li>
      <li>
        <a href="#about">About Issue Tracker</a>
      </li>
      <li>
        <a href="#using">Why Use Issue Tracker?</a>
      </li>
      <li>
        <a href="#oooissues">OpenOffice.org Issues </a>
      </li>
      <li>
        <a href="#oooinfrastructure">OpenOffice.org Infrastructure Problems</a>
      </li>
    </ul>
    <div class="app">
      <h4><a name="finding"></a>Filing Issues</h4>
      <h5>Enter a new issue</h5>

      <p>If your issue has not been reported, then you need to <a href="pre_submission.html">
          <b>submit a new issue</b></a>. Read the <a href="bug_writing_guidelines.html">guidelines
          for reporting issues</a> page to learn how to report an issue/bug. See also <a href="issues.html">
          A Quick Introduction to IssueTracker</a>.</p>
      <p><em>Attachments.</em><br/>
        You can add attachments to issues. The
        limit is 10MB, but please keep any attachment small, as most people use 56K
        connections. Attaching a file to an issue is a two-step procedure and is <strong>not</strong>
        obvious. You must first submit the issue or locate the issue to which you wish
        to attach the file. Then, you can add the file as an attachment to that issue.
        There will be a link in the issue body that reads:
        <div class="indent">
          <p class="code">Create a new attachment (proposed patch, test case, etc.)</p>
        </div>
      </p>

      <h4><a name="handling"></a>Issue Handling</h4>

      <p>Submitting issues is only the first step. Depending of the type of an issue, it will pass several
      stations during its life time. For instance, when a bug is submitted, usually the following happens:<br/>
      Somebody from the <a href="http://qa.openoffice.org">QA team</a> will have a look at it, to at least ensure
      that it's in a useful state (btw: if you follow the <a href="basic_rules.html">rules for issue submission</a>,
      you can already help a lot in creating an useful issue). After this, somebody needs to fix the issue (usually
      an engineer, but possibly also somebody maintaining <a href="http://documentation.openoffice.org">documentation</a>).
      Finally, when the fix made it into the product, somebody needs to verify it - usually again an QA engineer.
      </p>
      <p>To read more about this, visit the <a style="font-weight:bold" href="http://qa.openoffice.org/issue_handling">Issue handling section</a>
      of the <a href="http://qa.openoffice.org">QA project</a>.
      </p>

      <h4><a name="about"></a>About Issue Tracker (Formerly IssueZilla)</h4>
      <p>OpenOffice.org uses a modified version of <a href="http://www.mozilla.org">mozilla.org's</a>
        <a href="http://www.mozilla.org/bugs/">BugZilla</a> to track issues. Issue
        Tracker is integrated into <a href="http://www.collab.net/products/">CollabNet's
          SourceCast</a>, upon which the OpenOffice.org website runs. This document was
        written for IssueZilla, Issue Tracker's predecessor. It is still relevant.
        However, an excellent account of the current Issue Tracker can be found in the <a target="_blank" href="http://www.openoffice.org/scdocs/ProjectIssues#aboutIZ">
          Help</a>.
      </p>
      <p>If you are a registered user of OpenOffice.org, you can use Issue Tracker to
        browse existing issues, enter new issues, or modify the details of an existing
        issues. Please be aware that you'll need to enable cookies in your browser to
        use IssueTracker.
      </p>
      <h4><a name="using"></a>Why Use Issue Tracker?</h4>
      <p>
        Why use Issue Tracker and not a mail list? Because it allows everyone to keep
        track of the many big and small tasks, requests, enhancements, whatever that
        circulate throughout an Open Source project. What is more, the issue tracker
        makes it easier to determine if any another user has had similar problems. And
        if the problem has been resolved, it can alert the relevant people to the
        solutions found. In short, by registering and then filing issues with Issue
        Tracker, you become a contributing member of OpenOffice.org.</p>
      <p><strong>Note: </strong>You can delete your SourceCast account and thereby
        disable your Issue Tracker account at any time. However, if you then decide to
        re-register using the same account information, you will not be able to file
        issues. This is because Issue Tracker accounts are never full deleted, only
        disabled. You thus have to initiate a new account.</p>
      <h4>
        <a name="notification"></a>Issue Notifications</h4>
      <p>Issue Tracker will notify you via email about changes made to issues you
        reported. Please do not reply to these messages but login the website and add
        your comments to the issue. If you don't want to receive these notification
        emails you may want to edit your Issue Tracker preferences and change the email
        settings.
      </p>
      <h4><a name="oooissues"></a>OpenOffice.org Issues</h4>
      <p>You can report and query issues in the OpenOffice.org
        code/documentation/ui/definition. Issue Tracker currently reports and tracks
        the following issue-types: DEFECT, ENHANCEMENT, FEATURE, TASK and PATCH (we
        can, of course, add new issue types as necessary). For example, you could
        report a bug as DEFECT; Track ENHANCEMENT requests to existing features;
        discuss adding new FEATURES; track a TASK for others to do (delegating or
        requesting help). Furthermore Issue Tracker is also used to track PATCH
        submissions.</p>
      <h4>
        <a name="oooinfrastructure"></a>OpenOffice.org Infrastructure Problems</h4>
      <p>If you find an issue with some part of the OpenOffice.org infrastructure (not
        the application), such as a problem with the site search engine, or a problem
        with CVS, please use the <a href="http://www.openoffice.org/issues/enter_bug.cgi?product=www">component www</a>.
      <br>
    </div>
  <hr noshade="1">
  $Revision: 1.12 $ $Date: 2007/02/23 10:49:16 $
  </body>
</html>
