<html><head>
<title>Issue Tracker (formerly IssueZilla) FAQ</title>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body> 
<h2>FAQs</h2>
<p><i>Last updated 2003-03-25</i></p>
<br>
<table cellpadding=0 cellspacing=0 border=0>
  <tr>
    <td bgcolor="#cc6600"><img src="/branding/images/spacer.gif" height=1 width=5></td>
    <td><img src="/branding/images/spacer.gif" height=1 width=15></td>
    <td> <a href="faq-questions.html">Overview</a> &nbsp;&nbsp; <img src="/branding/images/separator.gif"> 
      &nbsp;&nbsp; <a href="faq-source.html">Source &amp; Technology</a> 
      &nbsp;&nbsp; <img src="/branding/images/separator.gif"> 
      &nbsp;&nbsp; <a href="faq-issuezilla.html">IssueTracker</a> &nbsp;&nbsp; 
      <img src="/branding/images/separator.gif"> &nbsp;&nbsp; 
      <a href="faq-licensing.html">Licensing</a> &nbsp;&nbsp; <img src="/branding/images/separator.gif"> 
      &nbsp;&nbsp; <a href="faq-community.html">Community</a> &nbsp;&nbsp; 
      <img src="/branding/images/separator.gif"> &nbsp;&nbsp; 
      <a href="mirrors_faq.html">Mirrors</a>&nbsp;&nbsp; <img src="/branding/images/separator.gif"> 
      &nbsp;&nbsp; <a href="faq-asian.html">Asian FAQs</a> &nbsp;&nbsp; <img src="/branding/images/separator.gif"> 
      &nbsp;&nbsp; <a href="faq-other.html">Other</a></td>
  </tr>
</table>

<table border="1" width="100%" cellspacing="0" cellpadding="2" bordercolor="#99ccff" bgcolor="#FFFFFF">
  <td bgcolor="#f0f0f0">
    These faq have been compiled over the span of OpenOffice's lifetime.
    Most of the information is now out of date.
    See <a href="https://wiki.openoffice.org/wiki/Documentation/FAQ">the OpenOffice FAQ page</a> on our official wiki
    for up-to-date information.
    If you find instances that need updating, let us know by sending a note to <a href="mailto:dev@openoffice.apache.org">dev@openoffice.apache.org</a>.
  </td>
</table>

<a name="top"></a><a name="issues"></a> 
<h3><IMG 
src="/branding/images/start_blue_bar.gif">&nbsp;&nbsp;IssueTracker: 
  Questions&nbsp;&nbsp;<IMG src="/branding/images/end_blue_bar.gif"> 
</h3>
<ol>
  <li> <A href="#1">What is IssueTracker?</A>

  <li> <a href="#2">How do I use IssueTracker?</a> </li>
  <li><a href="#3">Can I attach a file to an Issue?</a></li>
</ol>

<h3><IMG 
src="/branding/images/start_blue_bar.gif">&nbsp;&nbsp;IssueTracker: 
  Answers &nbsp;<IMG src="/branding/images/end_blue_bar.gif"> 
</h3>
<OL>
  <li value="1"> <b>What is IssueTracker?</b> <a name="1"></a> 
    <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. <a href="http://www.collab.net">CollabNet's</a> 
      BugZilla is called IssueTracker as it extends that bug-tracking system towards 
      more generalized Issue tracking, which is a superset of bug tracking. 
    <p>If 
      you are a registered user of OpenOffice.org, you can use IssueTracker 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. You can't use IssueTracker if you are not a registered 
      user or have not enabled cookies. You can register by clicking on the &quot;<a href="//servlets/Join">Join</a>&quot; 
      link in the left navbar. 
    <p>
      There may also be problems if you are using Konqueror or some other browser 
      than Netscape 4.77 or Internet Explorer or some other faithful emulator 
      of these programs. 
    <P>If you're new to IssueTracker, you might want to take a moment to browse 
      <A HREF="http://qa.openoffice.org/issue_handling/project_issues.html#about">A Quick Introduction 
      to IssueTracker</A>. You should also check out the <A HREF="http://qa.openoffice.org/issue_handling/bug_writing_guidelines.html">guidelines 
      for reporting issues</A> page to learn how to report an issue/bug. As well, 
      the <a href="/scdocs/ProjectIssues.html#aboutIZ">Help 
      documents</a> provide an excellent introduction to the intricacies of IssueTracker.</p>
    To learn more, click on the &quot;<a href="http://qa.openoffice.org/issue_handling/project_issues.html">Bugs 
    and Issues</a>&quot; link on the left navbar.</LI>
</OL>
<P>
<A href="#top">Back to top</A>
<HR ALIGN=left SIZE="1" NOSHADE>
<ol>
  <li value="2"><b>How do I use IssueTracker?</b><a name="2"></a> 
    <p>When possible, please use IssueTracker. To use it, however, you must be a 
      registered user (click on the "<a href="//servlets/Join">Join</a>" 
      link in the left navbar to register). Why use IssueTracker? 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 IssueTracker, you become a contributing member of OpenOffice.org. 
    </p>
  </li>
</ol>
<P>
<A href="#top">Back to top</A>
<HR ALIGN=left SIZE="1" NOSHADE>
<ol>
  <li value="3"><b>Can I attach a file to an Issue?</b> <a name="3"></a> 
    <p>Yes. Our current limit is 10MB (ten megabytes). Attaching a file to an
      issue is a two-step procedure and is not 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 visible after you have submitted the issue reading:<br>
      <strong>Create a new attachment (proposed patch, testcase, etc.)</strong>    <br>
      Note: You cannot add OpenOffice.org files natively. They must be added
      as
    &quot;binary&quot; files. This is a temporary problem.<br>
    Hints: Reduce the size of your file as much as possible. And, if you are
    uploading an HTML document, be sure to compress it first (Zip or tar it),
    otherwise
    it gets corrupted when others try to download it.  </li>
</ol>
<p>
  <a href="#top">Back to top</a> 
<hr align=left size="1" NOSHADE>
</html>

