Sophie

Sophie

distrib > Mageia > 1 > i586 > by-pkgid > d92aa75c2d384ff9f513aed09a46f703 > files > 159

parrot-doc-3.1.0-2.mga1.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Parrot  - Guidelines for pending merge reviews</title>
        <link rel="stylesheet" type="text/css"
            href="../../../resources/parrot.css"
            media="all">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    </head>
    <body>
        <div id="wrapper">
            <div id="header">

                <a href="http://www.parrot.org">
                <img border=0 src="../../../resources/parrot_logo.png" id="logo" alt="parrot">
                </a>
            </div> <!-- "header" -->
            <div id="divider"></div>
            <div id="mainbody">
                <div id="breadcrumb">
                    <a href="../../../html/index.html">Home</a> &raquo; <a href="../../../html/developer.html">Developer Documentation</a> &raquo; Guidelines for pending merge reviews
                </div>

<h1><a name="NAME"
>NAME</a></h1>

<p>docs/project/merge_review_guidelines.pod &#45; Guidelines for pending merge reviews</p>

<h1><a name="DESCRIPTION"
>DESCRIPTION</a></h1>

<p>To maintain Parrot&#39;s standards of quality,
we evaluate each branch proposed for merging to trunk in terms of several criteria.
Not every criterion applies to every branch; these guidelines are guidelines to which we apply our best judgment.
As well,
these guidelines are not exhaustive.</p>

<h2><a name="Documentation"
>Documentation</a></h2>

<p>The purpose of the branch governs the amount and type of documentation it requires.
Documentation falls into three broad categories:</p>

<ul>
<li>User&#45;visible documentation</li>

<p>How do users (language developers,
people running Parrot directly,
people embedding Parrot,
people writing PIR,
people packaging Parrot) use the feature?
What do they need to know to enable it,
how does it work,
and what configuration options are available?</p>

<li>Design documentation</li>

<p>How does the feature fit into Parrot as a whole?
What design considerations did you make?
Are there patterns you followed,
or is there literature to read?</p>

<li>Developer documentation</li>

<p>What functions are available,
and to whom are they available?
What data structures are present,
and what do other developers need to understand about them?
What are areas of future work,
and what are invariants that underlie the whole system?</p>
</ul>

<h2><a name="Testing"
>Testing</a></h2>

<p>We know that well&#45;tested features work and we know that well&#45;tested features will continue to work.
Under&#45;tested features give us and users much less confidence.
A well&#45;tested branch demonstrates several attributes:</p>

<ul>
<li>Coverage</li>

<p>A full coverage report from an automated testing tool is very valuable,
but in lieu of that the tests for the branch&#39;s feature should pass the eyeball test.
Is everything documented as working tested effectively?
If there are gaps in testing,
are they clear?
Do they have tickets for cage cleaners and other volunteers?</p>

<li>Language Testing</li>

<p>If your feature affects languages running on Parrot (and what feature doesn&#39;t?),
the branch needs testing from a couple of major languages to demonstrate that it does not harm those languages.
If those languages need changes to accommodate the branch,
we must work with the language to schedule those changes or to review them as per our deprecation policy.</p>

<li>Platform Testing</li>

<p>Does your feature work on the platform combinations we support?
Be especially aware of the differences between C and C++ compilers and 32&#45;bit and 64&#45;bit support,
as well as any deviations from POSIX.
<code>make fulltest</code> should pass on all of our target platforms.</p>
</ul>

<h2><a name="Deprecation_Policy"
>Deprecation Policy</a></h2>

<p>We manage incompatible changes of features and interfaces in multiple ways:</p>

<ul>
<li>Replacements for removed features</li>

<p>If the branch supplants or supersedes an existing feature,
follow the deprecation policy to provide alternatives,
shims,
compatibility layers,
and whatever other mechanisms the deprecation notice promises.</p>

<li>New deprecations recorded</li>

<p>If the branch necessitates new deprecations,
the deprecation list needs sufficient detail to help affected users plan their upgrades.</p>

<li>Removals marked clearly</li>

<p>If you&#39;ve removed any deprecated items,
have you marked them as such?</p>

<li>User&#45;visible exclusions to policy marked and dated clearly</li>

<p>If you need any exclusions to the deprecation policy,
have you asked for and received them?
Have you documented them appropriately?</p>
</ul>

<h2><a name="Roadmap"
>Roadmap</a></h2>

<p>Branches may implement features requested on the roadmap in whole or in part.
They may also affect the schedule of other roadmap items.
Have you documented the implications?</p>

<h2><a name="Code_Quality"
>Code Quality</a></h2>

<p>Any branch proposed for merging must meet our quality standards in several areas not previously mentioned:</p>

<ul>
<li>Coding standards</li>

<p>At a minimum,
the code must pass all of our active coding standards tests.
It must also follow our naming conventions and organizational principles.
This means review from other developers.
This also means a clean run of <code>make codingstd</code>.</p>

<li>User&#45;visible features</li>

<p>We have no strict guideline for how user&#45;visible features should work apart from a few systems (vtables,
embedding and extension API).
In general,
any public features need review from the user point of view.</p>

<li>API review</li>

<p>Internal features for developers also need a review,
especially of any functions or data structures you expose to other parts of Parrot.
Where possible,
stick with Parrot conventions,
especially for constness and the avoiding of null parameters.</p>

<li>Performance characteristics</li>

<p>How does your branch affect performance on our selected benchmarks?
For hosted languages?
Does it have memory leaks?
Does it affect memory use or startup time?
We have traditionally let these questions go unanswered,
but we can be more disciplined here.</p>
</ul>

<h2><a name="Integration_into_Parrot_Proper"
>Integration into Parrot Proper</a></h2>

<p>Your branch must also integrate into Parrot as well as possible.
In particular:</p>

<ul>
<li>Manage dependencies</li>

<p>This includes proper dependencies in our configuration and build system for building the code as well as any external configuration or dependencies.
Certain parts of Parrot core can depend on external tools such as NQP,
while others cannot.</p>

<li>Identify configuration options</li>

<p>If your feature adds configuration options,
they need documentation and review outside of the code itself.
If your feature depends on configuration options,
it needs explicit testing and documentation.
This should be self&#45;evident,
but it is worth detailed review.</p>

<li>Encapsulation and isolation</li>

<p>Does your branch respect the encapsulation of other parts of Parrot?
Does it provide its own sensible encapsulation boundaries?
If you need to make changes to other parts of Parrot,
should we consider them as a separate branch?</p>
</ul>
            </div> <!-- "mainbody" -->
            <div id="divider"></div>
            <div id="footer">
	        Copyright &copy; 2002-2011, Parrot Foundation.
            </div>
        </div> <!-- "wrapper" -->
    </body>
</html>