<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
    <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
    <title></title>
    <meta name="GENERATOR" content="StarOffice 7  (Linux)">
    <meta name="CREATED" content="20040421;16480100">
    <meta name="CHANGED" content="20040630;15235600">
    <style type="text/css"> /* <![CDATA[ */
    @import "/css/qa.css";
    /* ]]> */</style>
  </head>
  <body lang="en-US" dir="ltr">
    <h1 class="western">Proposed approach for consolidating IssueTracker RFEs
      (request for enhancement) into product requirements</h1>
    <h2 class="western">Introduction</h2>
    <p>The goal of this exercise is to convert a huge number of unqualified
      IssueTracker (formerly known as IssueZilla) RFEs into a smaller number of
      cleaned-up (marketing) product requirements that can be understood both by
      users and developers.</p>
    <p>The goal of this exercise is to:</p>
    <ol>
      <li>
        <p>Eliminate duplicate RFEs</p>
      </li>
      <li>
        <p>Increase quality of RFEs</p>
      </li>
      <li>
        <p>Get to a manageable number of requirements that the community can vote on and
          that a commercial contributor (e.g. Sun) can handle as part of a product
          definition process</p>
      </li>
    </ol>
    <p>In this process description we distinguish between RFEs submitted by community
      members and the (marketing) product requirements that are derived from the
      original RFEs. The RFEs can be high-level or low-level, very detailed or vague,
      can include examples or not, etc. The new requirements however should be easy
      to understand and coherent.</p>
    <p>All requirements should also include information about the importance of a
      requirement to a specific user group as well as relevant market data. For
      example, a specific use case how a feature would be used by a user would help
      to understand why a feature is needed and what the significance to the market
      is.</p>
    <p>Since the implementation is up to the developer who eventually picks up a
      requirement, it is more important to describe the desired functionality and
      typical use cases instead of explaining how something should be implemented.</p>
    <h2 class="western"><br>
      <br>
    </h2>
    <h2 class="western" style="page-break-before: always;">Overview Diagram</h2>
    <p><br>
      <br>
    </p>
    <p><img src="/images/handling_RFEs_overview.gif" name="Graphic1" align="left" width="519" height="323" border="0"><br clear="left">
      <br>
      <br>
    </p>
    <h2 class="western">Query RFEs submitted by community members</h2>
    <p>The various RFEs will be sorted, evaluated and consolidated by topic, i.e. by
      component. A set of pre-defined queries will be provided by the QA and RFE
      team, but in order to view all open RFEs, the following fields are important:</p>
    <table width="100%" class="with_border" cellpadding="3" cellspacing="0">
      <col width="128*">
        <col width="128*">
          <thead>
            <tr valign="top">
              <td width="10%">
                <b> Field </b>
              </td>
              <td>
                <b> Selection </b>
              </td>
            </tr>
          </thead>
          <tbody>
            <tr valign="top">
              <td width="50%">
                Issuetype
              </td>
              <td width="50%">

                  Enhancement and Feature
              </td>
            </tr>
            <tr valign="top">
              <td width="50%">
                Status
              </td>
              <td width="50%">
                Unconfirmed, New, Started and Reopened
              </td>
            </tr>
            <tr>
              <td colspan="2" width="100%" valign="top"/>
            </tr>
            <tr>
              <td colspan="2" width="100%" valign="top">
                IssueTracker queries can be saved. It is also possible to search for submitters
                  using the fields Username and Reporter. The query can be narrowed down using
                  the fields Component, Target Milestone, Date, etc.
              </td>
            </tr>
          </tbody>
    </table>
    <p><br>
      <br>
    </p>
    <h2 class="western">Convert low-level RFEs into high-level requirements</h2>
    <p>Different IssueTracker RFEs that belong together because they talk about the
      same requirement will be merged into one NEW requirement in IssueTracker, by
      assigning the original RFE's to a completely new “meta” issue, i.e. the
      requirement. The summary of the new requirement should summarize the key
      elements of the old RFEs.</p>
    <p>For example Writer RFE's like “implement styles preview in the Stylist”,
      “dynamic styles” and “add default shortcuts to increase/decrease font size”
      could be merged into a (summary) requirement like “Simplify formatting and font
      handling in Writer”.</p>
    <p>Users, developers and marketing project members should be able to understand
      the requirement summary without having to read all the old RFEs. However, the
      new requirement should contain links to the old RFEs (i.e. the RFE entries
      should block the requirement entry in IssueTracker), because the old RFE's
      provide more detailed information about the requirement and the use cases.</p>
    <p>The Issuetype of the new requirement should be "Feature". It should be
      assigned to someone from the requirements team, e.g. Erwin Tenhumberg (erwint).
      Since this is a marketing task, the requirements should not be assigned to the
      engineers directly.</p>
    <p>The priority should be left at the default value (3), and the target milestone
      will not be set for the new requirements. The priority will be determined
      through the OpenOffice.org voting mechanism once all requirements are known.
      The target milestone can only be set by the party/developer that promises to
      work on the requirement.</p>
    <p>The status has to be “New”. It will be set to “Started” as soon as someone
      promises to implement a particular requirement. A special keyword "requirement"
      has to be set. The description should also start with "Requirement:". It also
      allows to search for the word "Requirement" in the description.
    </p>
    <p>Requirements ARE NOT the same as the regular RFEs submitted by the community
      members as FEATUREs and ENHANCEMENTs. If an RFE is well written it should be
      very easy to turn it into a requirement, but in many cases this will require
      some clean-up work.</p>
    <p>For the original/old RFEs the issue ID of the new requirement will be set in
      the “Issue xxx blocks” field. This ensures that no data gets lost and that
      progress can be monitored on a high level.</p>
    <p>At this stage we have a list of requirements that is much shorter than the
      original RFE's.
    </p>
    <h2 class="western">Prioritization of requirements</h2>
    <p>Once all old RFEs have been converted into "clean and polished" requirements
      the new requirements get a priority. This is a separate step because
      prioritization is difficult or even impossible when the total number of
      requirements is unknown. Due to the fact that engineering resources are
      limited, a "first come first serve" approach does not work. In addition, using
      something like voting on the original RFEs does not work because they are
      either hard to understand by the people who are supposed to vote or there are
      multiple RFEs for exactly the same product requirement. The prioritization will
      happen through the IssueTracker voting mechanism.</p>
    <p>At this stage we have a list of requirements that also include information
      about the priority from a user point of view.</p>
    <h2 class="western">Implementation of the requirements</h2>
    <p>Sun as one of the key code contributors to the OpenOffice.org project will
      decide to work on requirements that have a high priority and are aligned with
      Sun's product and strategy goals. However, that also means that some
      requirements will not be addressed by Sun. This can even happen with priorities
      with a relatively high user priority if they don't fit into Sun's strategy.</p>
    <p>For all requirements that Sun decides to implement, Sun will create a PCD item
      in IssueTracker, i.e. the Summary contains the abbreviation “PCD” and also a
      keyword “PCD” will be set (PCD is short for Product Concept Document). The
      original requirement has to get a comment referring to the new PCD item.</p>
    <p>A PCD item explains the concept what our engineering team will implement.
      Thus, a PCD item does not talk about the “nitty gritty” implementation details,
      but outlines the functionality that will get implemented.
    </p>
    <p>Since Sun might decide not to fully implement a product requirement, the
      original requirement will stay open. The PCD item will however depend on the
      requirement for tracking purposes.</p>
    <p>The existence of a PCD item makes it possible to track the progress on a
      particular requirement. The (potential) difference between a requirement and
      its corresponding PCD item is the gap between the requirement and its
      implementation.</p>
    <p>Someone can either fill the gap by implementing the rest or creating a
      completely independent second implementation that covers everything.</p>
    <p>At this point we have a list of requirements and a list of PCD items. Every
      PCD item must have a corresponding requirement, but there will also be
      requirements that don't have a PCD item yet.</p>
    <h2 class="western">Closing requirements</h2>
    <p>Once the engineering work on the PCD items has been completed (i.e. a working
      build can be downloaded and tested) the PCD item will be closed. If the PCD
      item fully implements a requirement the requirement will also be closed. If the
      PCD item only partly implemented the requirement, the original submitters have
      to decide if the requirement should stay open or if the existing implementation
      is sufficient.</p>
    <p>Depending on the number, open requirements will stay open until the next
      release cycle. If still nobody wants to address it, it will either get closed
      or transferred to some kind of general to-do list.</p>
    <h2 class="western">An example</h2>
    <p>John submits an RFE with IssueTracker ID 00001 saying that “It should be easy to
      exchange files in a well known and widely used read-only file format.”</p>
    <p>Peter submits an RFE with IssueTracker ID 00002 demanding that “It should be
      easier to generate PDF files”.</p>
    <p>Jane creates yet another RFE with IssueTracker ID 00003 asking for “PDF export
      solution that is 100% compatible with Acrobat Distiller”.</p>
    <p>Finally, Susy opens an RFE with IssueTracker ID 00004 saying that “My friend
      should be able to read my files without having to download OpenOffice.org”.</p>
    <p>All these independent RFEs can be merged into just one product requirement.
      Thus, the requirements team creates a new requirement that looks like this:
      “OpenOffice.org should have a PDF export feature that is 100% compatible with
      Acrobat Distiller version XYZ”.</p>
    <p>After some voting Sun would decide to work on the requirement and thus create
      a PCD item. However, since Sun does not have enough resources, Sun decides not
      to created a Distiller clone (at least not in the first step). Instead the PCD
      item says “OpenOffice.org will get basic PDF export support for all
      applications. The functionality will cover X, Y, and Z, but not implement the
      following Acrobat Distiller features: ....”</p>
    <p>As a consequence, someone else can create a PCD item for the “rest
      requirement”, create a completely independent additional implementation or just
      live with the fact that the requirement might never get fully implemented.</p>
  </body>
</html>
