<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<style type="text/css">
/* <![CDATA[ */ @import "/branding/css/tigris.css"; /* ]]> */
</style>
  <script src="/branding/scripts/sc.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />

  <title>Project File sharing</title>
 </head>

 <body class="docs" onload="self.focus()">
  <div class="docs" id="ddissuesentermodify">
   <h2>Entering and modifying issues</h2>

   <div id="toc">
    <ul>
     <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>

    <ul>
     <li>
      <a href="/nonav/docs/ProjectIssues.html">Project issue tracking</a> 

      <ul>
       <li>
        Entering and modifying issues 

        <ul>
         <li><a href="#enterissue">Entering a new issue</a></li>

         <li><a href="#entryfields">Issue entry field descriptions</a></li>

         <li><a href="#editissue">Viewing and modifying issues</a></li>
        </ul>
       </li>

       <li><a href="/nonav/docs/ddIssues_Query.html">Querying and tracking issues</a></li>

       <li><a href="/nonav/docs/ddIssues_Reports.html">Generating status reports about project issues</a></li>
      </ul>
     </li>
    </ul>

    <ul>
     <li><a href="/nonav/docs/issuewritinghelp.html">Issue writing guidelines</a></li>

     <li><a href="/nonav/docs/contributing_patches.html">Contributing patches</a></li>

     <li><a href="/nonav/docs/issue_lifecycle.html">The lifecycle of an issue</a></li>

     <li><a href="/nonav/docs/issues_unconfirmedhelp.html">Understanding the UNCONFIRMED issue state</a></li>
    </ul>
   </div>

   <h3><a id="enterissue" name="enterissue">Entering a new issue</a></h3>

   <ul>
    <li>Choose the appropriate link in the "Enter An Issue" section of the Project Issues page.</li>

    <li>Choose the appropriate project component.</li>

    <li>Selected the appropriate options or input information for each field before using the <i>Commit</i> button to enter your issue.</li>
   </ul>

   <p>The information you provide here significantly determines the effectiveness of your issue reports and the response to them. Descriptions for each of these fields follow to help you optimize your issue reports.</p>

   <p><b>Important note</b>: When you first enter a new issue, you cannot set a target milestone date, nor can you assign dependencies (flag other issues that depend on this new issue or those that it depends upon). To designate a target milestone or dependencies, you must first submit the new issue successfully, then retrieve it to access fields for setting a target milestone and creating dependencies.</p>

   <h3><a id="entryfields" name="entryfields">Issue entry field descriptions</a></h3>

   <dl>
    <dt><a id="version" name="version"></a>Version</dt>

    <dd>The release in which you identified this issue or found the defect.</dd>

    <dt><a id="sub" name="sub"></a>Component/Sub Component</dt>

    <dd>Identify area within the project that this issue is associated with. Only one selection is permitted.</dd>

    <dt><a id="platform" name="platform">Platform</a></dt>

    <dd>
     This corresponds to <i>your</i> hardware platform when you are reporting a defect. Options include: 

     <ul>
      <li>All (happens on all platform; cross-platform issue)</li>

      <li>Macintosh</li>

      <li>PC</li>

      <li>Sun</li>

      <li>HP</li>
     </ul>
     <b>Note:</b> Selecting the option "All" does not select issues assigned against all platforms. It merely selects issues that <i>occur</i> on all platforms.
    </dd>

    <dt><a id="operatingsystem" name="operatingsystem">Operating System</a></dt>

    <dd>
     This is the operating system against which the issue is being reported. Legal operating systems include: 

     <ul>
      <li>All (happens on all operating systems, making this a cross-platform issue)</li>

      <li>Windows 95</li>

      <li>Mac System 8.0</li>

      <li>Linux</li>
     </ul>
     Note that the operating system implies the platform, but not always. For example, Linux can run on PC, Macintosh, and others.
    </dd>

    <dt><a id="priority" name="priority"></a>Priority</dt>

    <dd>
     This field let you assign a level of importance to help determine when this issue should be addressed relative to other issues. This field is utilized by the programmers/engineers to prioritize their work. 

     <ul>
      <li>P1 - Most important</li>

      <li>P2</li>

      <li>P3</li>

      <li>P4</li>

      <li>P5 - Least important</li>
     </ul>
    </dd>

    <dt><a id="issuetype" name="issuetype"></a>Issue Type</dt>

    <dd>
     <p><em>Defect</em> is a problem with an existing feature that is either not developed to spec or does not work as designed. These are often referred to as "bugs."</p>

     <p><em>Enhancement</em> is an improvement to an existing feature.</p>

     <p><em>Feature</em> is an addition to the software to add a piece of functionality that does not yet exist.</p>

     <p><em>Task</em> is an activity to be done on behalf or in support of a feature or enhancement. Tasks do not typically require direct changes to the code base.</p>

     <p><em>Patch</em> is a special kind of issue, a section of code to be applied or attached to existing software, often to fix a defect.</p>
    </dd>

    <dt>Initial state</dt>

    <dd>Newly entered issues are either "new" or "unconfirmed." Marking an issue <a href="/nonav/docs//docs/issues_unconfirmedhelp.html">unconfirmed</a> means you have not yet determined whether it is true or valid. Read more about "state" in the <a href="/nonav/docs/issue_lifecycle.html">lifecycle of an issue</a>.</dd>

    <dt><a id="assignedto" name="assignedto">Assigned To</a></dt>

    <dd>Enter the userid of the one individual who is in charge of resolving the issue. If this field is left blank, the issue by default is assigned to the component/sub component owner. Every time this field changes, the status changes to <b>NEW</b> to make it visible in the assignee's list of issues.</dd>

    <dt>Cc:</dt>

    <dd>
     Add userids of other individuals who need notification when this issue changes status or when there is other activity on this issue. Delimit multiple userids by single spaces only -- no commas or semi-colons are necessary. 

     <p>Note: Assign cc addresses sparingly. Project participants whose interest or involvement in this issue is peripheral should be encouraged to use IssueZilla to check and track issues rather than to rely on automatic email notification.</p>
    </dd>

    <dt>URL</dt>

    <dd>
     How to use this field depends on the issue type: 

     <ul>
      <li>For defects, URL should lead to a fairly stable system where the the problem is obvious or can be easily reproduced.</li>

      <li>For enhancements, URL should provide details pertaining to the improvement, such as mockups.</li>

      <li>For features, URL should link to any web-based form of material explaining the improvement such as mockups or design specs.</li>

      <li>For tasks, URL is optional and may include linking to the associated feature or enhancement.</li>
     </ul>
    </dd>

    <dt>Summary</dt>

    <dd>A terse, specific statement to describe this issue. This should a few unique, self-explanatory words to identify this issue easily in reports and short lists. Limiting your entry to the width of the field is best for the columnar display of query results.</dd>

    <dt>Description</dt>

    <dd>Provide a full description of the issue including any pertinent history or activity around this issue. Because this field is additive, it serves as the knowledge base and means of communicating through this issue's life cycle. Other project participants view and add comments or information using this field.</dd>
   </dl>

   <h3>After completing all necessary fields:</h3>

   <p><em>Commit</em> enters this issue into the project's issue database.</p>

   <p><em>Reset</em> returns all field values to their default or blank settings.</p>

   <p><em>Remember values as bookmark template</em> lets you save your input settings to save keystrokes when entering multiple issues for the same project component.</p>

   <p>For more information about entering issues into IssueZilla, see also <a href="/nonav/docs/issuewritinghelp.html">Issue Writing Guidelines</a>.</p>

   <h3>Viewing and modifying issues</h3>

   <p>Existing issues may be accessed in two different ways:</p>

   <ul>
    <li>Entering a specific issue number in the "Find" field located on the <strong>Issues</strong> page displays the "Issue View" page.</li>

    <li>Querying for issues either by clicking the "Query database" button in the Project Issues page displays an "Issue List" page of your results. (See <a href="/nonav/docs/ddIssues_Query.html">Querying and tracking issues</a>.)</li>
   </ul>

   <p>The Issue View page is similar to the Issue Entry page and contains many of the same fields, but there are several important additions:</p>

   <dl>
    <dt>Target Milestone</dt>

    <dd>If your project has designated milestones, this field can be used to associated issues with those milestones, such as version releases. A milestone plan enumerates when different features are expected to be completed. If an issue has a target date or version release, this means the work on this issue must be completed by that date. This field should only be set or changed by the person responsible for the issue.</dd>

    <dt>Add/Remove CC:</dt>

    <dd>You can add additional email addresses to this issue to alert other project members when activity occurs on this issue. If you are adding multiple addresses, delimit these with single spaces; do not use commas or semi-colons. You can also <i>remove</i> one or more email address listed by selecting it and checking the "Remove selected Cc's" box below.</dd>

    <dt>QA Contact</dt>

    <dd>This field should contain an email address or alias for the person(s) responsible for quality control of this issue.</dd>

    <dt>URL</dt>

    <dd>If this field is populated, clicking the field label links directly to the designated URL.</dd>

    <dt>Status Whiteboard</dt>

    <dd>The purpose of this generic field can be user-defined and project-specific. (In BugZilla, this field is used for writing short, one-line notes about the bug.)</dd>

    <dt>Attachments</dt>

    <dd>
     Adding attachment to an issue can be very useful. For defects, appending test cases, screen shots and/or editor logs to the issue can help pinpoint the problem to help the developer reproduce it. 

     <p>For features, enhancements, and tasks, you can attach screen shots, mockups, and other files to provide supplemental information to illustrate the issue.</p>

     <p>You can also used this field to attach a patch related to the issue when appropriate. Read more about <a href="/nonav/docs/contributing_patches.html">contributing patches</a>.</p>
    </dd>

    <dt>Dependencies</dt>

    <dd>When an issue can't be addressed until one or more other issues are resolved, these are dependencies. Each issue can have other issues it depends upon , as well as issues that depend upon it, that is, other issues that this issue "blocks" while being unresolved. The links next to these fields display a tree and graph illustrating the dependencies associated with the issue currently being viewed.</dd>

    <dt>Vote for this issue</dt>

    <dd>
     <!-- (adapted from bugzilla.mozilla.org's "Bugzilla Voting" page) -->
     IssueZilla's "voting" feature allows project members to have a certain number of votes in their project to use toward issues. Project owners set the number of votes allowed per issue, as well as the number of votes allowed per member. Some projects/components may not allow any, which means you can't vote on those issues at all. Your vote indicates which issues you believe are the most important to be addressed. 

     <p>You may vote for the same bug more than once, however, you have a limited number of total votes allocated to you. You can either vote once for many issues, or use multiple votes for a fewer issues that you think are particularly critical.</p>

     <p>If an issue has received votes, the total number appears next to "Votes for this issue", or "0" if no votes have been logged. Clicking on this number displays the Show Votes page. If there are votes, names and their associated number of votes are listed.</p>

     <p>To view a list of issues that have received votes, use the IssueZilla Query page, and enter the numeral "1" in the "At least ___ votes" field. This returns issues in your query results with at least one vote.</p>

     <p>To vote for an issue:</p>

     <ul>
      <li>Open the issue (by clicking the issue from a list or report).</li>

      <li>Click on the "Vote for this issue" link just above the "Additional Comments" field. (If no such link appears, then voting may not be allowed for this issue's project/component.)</li>

      <li>Indicate the number of votes you want to log for this issue. This page also displays how many votes you've given to other bugs, allowing you may reallocate your votes as necessary.</li>

      <li>You receive automatic email notification anytime changes occur on issues you have voted for.</li>

      <li>You may review your votes at any time by clicking the "Change your password or preferences" on the <strong>Issues</strong> page or at the bottom of the query page.</li>
     </ul>

     <p>What's the purpose of this voting feature? Read about the important role of <a href="http://www.tigris.org/editorial/safetynet.html">consensus voting in open source projects</a>.</p>
    </dd>

    <dt>Groups</dt>

    <dd>If one or more drop boxes appear identifying project-defined groups to be included in or excluded from viewing an issue, this indicates that the project/component owner has created groups within the project. You should contact this person to determine how to use these fields.</dd>

    <dt>Leave as NEW</dt>

    <dd>If you are viewing an issue with the status NEW but it is not assigned to you, leave this default as checked. When the issue <i>is</i> assigned to you, you should accept it by changing its status to "Started."</dd>

    <dt>Resolve issue</dt>

    <dd>Once an issue is resolved, this is where to designate the type of resolution. Changing an issue to "Resolved" means that as far as the assignee is concerned, this issue is completed. <a href="/nonav/docs/issue_lifecycle.html#resolvedissues">Read more</a> about the multiple options in this field's pull-down menu. <b>Note: Changing an issue's status to FIXED signals all other project members that any source file changes associated with this issue have been checked into the CVS repository.</b></dd>

    <dt>Reassign</dt>

    <dd>The person responsible for the issue can be changed here by entering a new email address, or reassigned to the component/sub component owner.</dd>

    <dt>View Issue Activity</dt>

    <dd>This link displays a snapshot page of changes made to an issue.</dd>

    <dt>Format For Printing</dt>

    <dd>This links redisplays the Issue View in a format for printing out.</dd>

    <dt>Commit</dt>

    <dd>
     This button saves any modifications made to this issue. <b>Caution! When viewing an issue, the "Enter" key works like the <i>Commit</i> button. Any modifications you may have made (accidentally or otherwise) are saved and the issue's assignee and cc list receive email notification of activity on this issue.</b> 

     <p><em>To exit out of viewing this issue without making any changes</em>, use the links at the top of this page to view other issues, or the <i>Back</i> button in your browser. Even when you have changed fields, as long as you do not use the <i>Commit</i> button or the "Enter" key, the issue remains unchanged in the database.</p>
    </dd>

    <dt>Reset</dt>

    <dd>Returns all fields to their <i>previously committed</i> values.</dd>
   </dl>

   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
 </body>
</html>


