Sophie

Sophie

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

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  - Parrot Submission Instructions</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; Parrot Submission Instructions
                </div>

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

<p>docs/submissions.pod &#45; Parrot Submission Instructions</p>

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

<p>How to submit bug reports,
patches and new files to Parrot.</p>

<h1><a name="How_To_Submit_A_Bug_Report"
>How To Submit A Bug Report</a></h1>

<p>If you encounter an error while working with Parrot and don&#39;t understand what is causing it,
create a bug report using the <em>parrotbug</em> utility.
The simplest way to use it is to run</p>

<pre>    % ./parrotbug</pre>

<p>in the distribution&#39;s root directory, and follow the prompts.</p>

<p>However, if you do know how to fix the problem you encountered, then think about submitting a patch, or (see below) getting commit privileges.</p>

<h1><a name="A_Note_on_Random_Failures"
>A Note on Random Failures</a></h1>

<p>If you encounter errors that appear intermittently, it may be difficult or impossible for Parrot developers to diagnose and solve the problem. It is therefore recommended to control the sources of randomness in Parrot in an attempt to eliminate the intermittency of the bug. There are three common sources of randomness that should be considered.</p>

<dl>
<dt><a name="Pseudo&#45;Random_Number_Generator"
>Pseudo&#45;Random Number Generator</a></dt>
Direct use of a PRNG from within Parrot programs will lead to inconsistent results. If possible, isolate the bug from PRNG use, for example, by logging the random values which trigger the error and then hard coding them.
<dt><a name="Address_Space_Layout_Randomization"
>Address Space Layout Randomization</a></dt>
Several operating systems provide a security measure known as address space layout randomization. In bugs involving stray pointers, this can cause corruption in random Parrot subsystems. Temporarily disabling this feature may make this problem consistent and therefore debugable.
<dt><a name="Hash_Seed"
>Hash Seed</a></dt>
Parrot&#39;s hash implementation uses randomization of its seed as a precaution against attacks based on hash collisions. The seed used can be directly controlled using <code>parrot</code>&#39;s <code>&#45;&#45;hash&#45;seed</code> parameter. To determine what seeds are causing the error, Parrot can be rebuilt with <code>DEBUG_HASH_SEED</code> set to <code>1</code>, which will cause <code>parrot</code> to output the hash seed being used on every invocation.</dl>

<h1><a name="How_To_Create_A_Patch"
>How To Create A Patch</a></h1>

<p>Try to keep your patches specific to a single change, and ensure that your change does not break any tests. Do this by running <code>make test</code>. If there is no test for the fixed bug, please provide one.</p>

<p>In the following examples, <em>parrot</em> contains the Parrot distribution, and <em>workingdir</em> contains <em>parrot</em>. The name <em>workingdir</em> is just a placeholder for whatever the distribution&#39;s parent directory is called on your machine.</p>

<pre>    workingdir
        |
        +&#45;&#45;&#62; parrot
                |
                +&#45;&#45;&#62; LICENSE
                |
                +&#45;&#45;&#62; src
                |
                +&#45;&#45;&#62; tools
                |
                +&#45;&#45;&#62; ...</pre>

<dl>
<dt><a name="git"
><b><code>git</b></code></a></dt>
If you are working with a git repository of parrot then please generate your patch with <code>git diff</code>.
<pre>    cd parrot
    git diff &#62; my_contribution.patch</pre>

<dt><a name="Single_diff"
>Single <b><code>diff</b></code></a></dt>
If you are working from a released distribution of Parrot and the change you wish to make affects only one or two files, then you can supply a <code>diff</code> for each file. The <code>diff</code> should be created in <em>parrot</em>. Please be sure to create a unified diff, with <code>diff &#45;u</code>.
<pre>    cd parrot
    diff &#45;u docs/submissions.pod docs/submissions.new &#62; submissions.patch</pre>
Win32 users will probably need to specify <code>&#45;ub</code>.
<dt><a name="Recursive_diff"
>Recursive <b><code>diff</b></code></a></dt>
If the change is more wide&#45;ranging, then create an identical copy of <em>parrot</em> in <em>workingdir</em> and rename it <em>parrot.new</em>. Modify <em>parrot.new</em> and run a recursive <code>diff</code> on the two directories to create your patch. The <code>diff</code> should be created in <em>workingdir</em>.
<pre>    cd workingdir
    diff &#45;ur &#45;&#45;exclude=&#39;.git&#39; parrot parrot.new &#62; docs.patch</pre>
Mac OS X users should also specify <code>&#45;&#45;exclude=.DS_Store</code>.
<dt><a name="CREDITS"
><b><code>CREDITS</b></code></a></dt>
Each and every patch is an important contribution to Parrot and it&#39;s important that these efforts are recognized. To that end, the <em>CREDITS</em> file contains an informal list of contributors and their contributions made to Parrot. Patch submitters are encouraged to include a new or updated entry for themselves in <em>CREDITS</em> as part of their patch.The format for entries in <em>CREDITS</em> is defined at the top of the file.</dl>

<h1><a name="How_To_Submit_A_Patch"
>How To Submit A Patch</a></h1>

<ol>
<li>Go to Parrot&#39;s ticket tracking system at <a href='https://trac.parrot.org/parrot/'>https://trac.parrot.org/parrot/</a>. Log in, or create an account if you don&#39;t have one yet.</li>

<li>If there is already a ticket for the bug or feature that your patch relates to, just attach the patch directly to the ticket.</li>

<li>Otherwise select &#34;New Ticket&#34; at the top of the site. <a href='https://trac.parrot.org/parrot/newticket'>https://trac.parrot.org/parrot/newticket</a></li>

<li>Give a clear and concise Summary. You do <b>NOT</b> need to prefix the Summary with a <code>[PATCH]</code> identifier. Instead, in the lower&#45;right corner of the <em>newticket</em> page, select status <code>new</code> in the <em>Patch status</em> drop&#45;down box.</li>

<li>The Description should contain an explanation of the purpose of the patch, and a list of all files affected with summary of the changes made in each file. Optionally, the output of the <code>diffstat(1)</code> utility when run on your patch(s) may be included at the bottom of the message body.</li>

<li>Set the Type of the ticket to &#34;patch&#34;. Set other relevant drop&#45;down menus, such as Version (the version of Parrot where you encountered the problem), Platform, or Severity. As mentioned above, select status <code>new</code> in the <em>Patch status</em> drop&#45;down box.</li>

<li>Check the box for &#34;I have files to attach to this ticket&#34;. Double&#45;check that you&#39;ve actually done this, because it&#39;s easy to forget.</li>

<p><b>DO NOT</b> paste the patch file content into the Description.</p>

<li>Click the &#34;Create ticket&#34; button. On the next page attach your patch file(s).</li>
</ol>

<h1><a name="Applying_Patches"
>Applying Patches</a></h1>

<p>You may wish to apply a patch submitted by someone else before the patch is incorporated into git</p>

<p>For single <code>diff</code> patches or <code>git</code> patches, copy the patch file to <em>parrot</em>, and run:</p>

<pre>    cd parrot
    git apply some.patch</pre>

<p>For recursive <code>diff</code> patches, copy the patch file to <em>workingdir</em>, and run:</p>

<pre>    cd workingdir
    git apply some.patch</pre>

<p>In order to be on the safe side run &#39;make test&#39; before actually committing the changes.</p>

<h2><a name="Configuration_of_files_to_ignore"
>Configuration of files to ignore</a></h2>

<p>Sometimes new files will be created in the configuration and build process of Parrot. These files should not show up when checking the distribution with</p>

<pre>    git status</pre>

<p>or</p>

<pre>    perl tools/dev/manicheck.pl</pre>

<p>In order to keep the two different checks synchronized, the MANIFEST and MANIFEST.SKIP file should be regenerated with:</p>

<pre>    perl tools/dev/mk_manifest_and_skip.pl</pre>

<h1><a name="How_To_Submit_Something_New"
>How To Submit Something New</a></h1>

<p>If you have a new feature to add to Parrot, such as a new test.</p>

<ol>
<li>Add your new file path(s), relative to <em>parrot</em>, to the file MANIFEST. Create a patch for the MANIFEST file according to the instructions in <b>How To Submit A Patch</b>.</li>

<li>If you have a new test script ending in <code>.t</code>, some mailers may become confused and consider it an application/x&#45;troff. One way around this (for *nix users) is to diff the file against /dev/null like this:</li>

<pre>    cd parrot
    diff &#45;u /dev/null newfile.t &#62; newfile.patch</pre>

<li>Go to Parrot&#39;s ticket tracking system at <a href='https://trac.parrot.org/parrot/'>https://trac.parrot.org/parrot/</a>. Log in, or create an account if you don&#39;t have one yet.</li>

<li>Select &#34;New Ticket&#34; <a href='https://trac.parrot.org/parrot/newticket'>https://trac.parrot.org/parrot/newticket</a>.</li>

<li>Give a clear and concise Summary.</li>

<p>Prefix it with a <code>[NEW]</code> identifier.</p>

<li>The Description should contain an explanation of the purpose of the feature you are adding. Optionally, include the output of the <code>diffstat(1)</code> utility when run on your patch(es).</li>

<li>Set the Type of the ticket to &#34;patch&#34;. Set other relevant drop&#45;down menus, such as Version, Platform, or Severity.</li>

<li>Check the box for &#34;I have files to attach to this ticket&#34;</li>

<p>Double&#45;check that you&#39;ve actually done this, because it&#39;s easy to forget.</p>

<p><b>DO NOT</b> paste the content of the new file or files into the body of the message.</p>

<li>Click the &#34;Create ticket&#34; button. On the next page attach the patch for MANIFEST and your new file(s).</li>
</ol>

<h1><a name="What_Happens_Next?"
>What Happens Next?</a></h1>

<p>If you created a new ticket for the submission, you will be taken to the page for the new ticket and can check on the progress of your submission there. This identifier should be used in all correspondence concerning the submission.</p>

<p>Everyone on Trac sees the submission and can comment on it. A developer with git commit priveledges can commit it to git once it is clear that it is the right thing to do.</p>

<p>However developers with commit priveledges may not commit your changes immediately if they are large or complex, as we need time for peer review.</p>

<p>A list of active tickets can be found here: <a href='http://trac.parrot.org/parrot/report/1'><a href="http://trac.parrot.org/parrot/report/1">http://trac.parrot.org/parrot/report/1</a></a></p>

<p>A list of all the unresolved patches is at: <a href='http://trac.parrot.org/parrot/report/15'><a href="http://trac.parrot.org/parrot/report/15">http://trac.parrot.org/parrot/report/15</a></a></p>

<h1><a name="Patches_for_the_Parrot_website"
>Patches for the Parrot website</a></h1>

<p>The <a href='http://www.parrot.org'><a href="http://www.parrot.org">http://www.parrot.org</a></a> website is hosted in a Drupal CMS. Submit changes through the usual ticket interface in Trac.</p>

<h1><a name="Getting_Commit_Privileges"
>Getting Commit Privileges</a></h1>

<p>If you are interested in getting commit privileges to Parrot, here is the procedure:</p>

<ol>
<li>Submit several high quality patches (and have them committed) via the process described in this document. This process may take weeks or months.</li>

<li>Obtain a Trac account at <a href='https://trac.parrot.org/parrot'>https://trac.parrot.org/parrot</a></li>

<li>Submit a Parrot Contributor License Agreement; this document signifies that you have the authority to license your work to Parrot Foundation for inclusion in their projects. You may need to discuss this with your employer if you contribute to Parrot on work time or with work resources, or depending on your employment agreement.</li>

<p><a href='http://www.parrot.org/files/parrot_cla.pdf'><a href="http://www.parrot.org/files/parrot_cla.pdf">http://www.parrot.org/files/parrot_cla.pdf</a></a></p>

<li>Request commit access via the <code>parrot&#45;dev</code> mailing list, or via IRC (#parrot on irc.parrot.org). The existing committers will discuss your request in the next couple of weeks.</li>

<p>If approved, a metacommitter will update the permissions to allow you to commit to Parrot; see <code>RESPONSIBLE_PARTIES</code> for the current list. Welcome aboard!</p>
</ol>

<p>Thanks for your help!</p>
            </div> <!-- "mainbody" -->
            <div id="divider"></div>
            <div id="footer">
	        Copyright &copy; 2002-2011, Parrot Foundation.
            </div>
        </div> <!-- "wrapper" -->
    </body>
</html>