<li><ahref="Community-&-Related-software.html">Community & Related software</a></li>
<li><ahref="TODO.html">TODO</a></li>
</ul></li>
</ul>
</div>
<h1id="development">Development</h1>
<h2id="guidelines">Guidelines</h2>
<p>Please have a look at the following pages:</p>
<ul>
<li><ahref="https://github.com/shaarli/Shaarli/tree/master/CONTRIBUTING.md">Contributing to Shaarli</a><ahref=".html"></a></li>
<li><ahref="Static-analysis.html">Static analysis</a> - patches should try to stick to the <ahref="http://www.php-fig.org/psr/">PHP Standard Recommendations</a> (PSR), especially:
<p>A <ahref="https://github.com/shaarli/Shaarli/blob/master/Makefile"><code>Makefile</code></a> is available to perform project-related operations:<ahref=".html"></a></p>
<ul>
<li>Documentation - generate a local HTML copy of the GitHub wiki</li>
<li><ahref="Static-analysis.html">Static analysis</a> - check that the code is compliant to PHP conventions</li>
<li><ahref="Unit-tests.html">Unit tests</a> - ensure there are no regressions introduced by new commits</li>
</ul>
<h3id="automatic-builds">Automatic builds</h3>
<p><ahref="http://docs.travis-ci.com/">Travis CI</a> is a Continuous Integration build server, that runs a build:<ahref=".html"></a></p>
<ul>
<li>each time a commit is merged to the mainline (<code>master</code> branch)</li>
<li>each time a Pull Request is submitted or updated</li>
</ul>
<p>A build is composed of several jobs: one for each supported PHP version (see <ahref="Server-requirements.html">Server requirements</a>).</p>
<p>Each build job:</p>
<ul>
<li>updates Composer</li>
<li>installs 3rd-party test dependencies with Composer</li>
<li>a status icon represents the result for the <code>master</code> branch: <ahref="(https://api.travis-ci.org/shaarli/Shaarli.svg)%5D(https://travis-ci.org/shaarli/Shaarli).html"><imgsrc="https://travis-ci.org/shaarli/Shaarli"alt="(https://api.travis-ci.org/shaarli/Shaarli.svg)"/></a></li>