Improved new developers guide somewhat.

This commit is contained in:
mathiasdm
2010-10-15 21:07:55 +00:00
parent 5b74b6e7aa
commit b39131d71b

View File

@@ -1,75 +1,142 @@
{% extends "_layout.html" %}
{% block title %}New Developer's Guide{% endblock %}
{% block content %}
Here's a very quick guide to getting started
on contributing to the website or the software, including translations.
<ul>
<li>
<p>
So you want to start work on I2P? Great!
Here's a quick guide to getting started
on contributing to the website or the software, doing development or creating translations.
</p>
<p>
Not quite ready for coding?
Try <a href="getinvolved.html">getting involved</a> first.
</p>
<li>
For development on the i2p router or the embedded applications,
learn Java, love Java :)
<div id="TOC">
<ol>
<li><a href="#basic-study">Basic study</a></li>
<li><a href="#getting-the-i2p-code">Getting the I2P code</a></li>
<li><a href="#building-i2p">Building I2P</a></li>
<li><a href="#development-ideas">Development ideas</a></li>
<li><a href="#making-the-results-available">Making the results available</a></li>
<li><a href="#get-to-know-us">Get to know us!</a></li>
<li><a href="#translations">Translations</a></li>
</ol>
</div>
<li>
<h2 id="basic-study">Basic 'study'</h2>
<p>
Basic development on the I2P router or the embedded applications uses Java as the main development language.
If you don't have experience with Java, you can always have a look at <a href="http://www.mindview.net/Books/TIJ/">Thinking in Java</a>.
</p>
<p>
Study the <a href="how_intro.html">how intro</a>,
the <a href="how.html">other "how" documents</a>,
the <a href="techintro.html">tech intro</a>,
and associated documents.
These will give you a good overview of how I2P is structured and what different things it does.
</p>
<li>
<h2 id="getting-the-i2p-code">Getting the I2P code</h2>
<p>
For development on the i2p router or the embedded applications,
get the monotone source repository installed - short instructions:
</p>
<ul>
<li>Install <a href="http://www.monotone.ca/">monotone</a>
<li>Skim over the <a href="http://monotone.ca/docs/Tutorial.html">monotone tutorial</a>
<li>Enable the <a href="i2ptunnel.html">i2ptunnel</a> client tunnel on port 8998 pointing to mtn.i2p2.i2p (if you are having nonce issues, see <a href="http://trac.i2p2.de/ticket/64">ticket #64</a> for a workaround)
<li>mtn -d i2p.mtn db init
<li>mtn -d i2p.mtn pull 127.0.0.1:8998 i2p.i2p
<li>mtn -d i2p.mtn co --branch=i2p.i2p
<li>
Install <a href="http://www.monotone.ca/">monotone</a>.
Monotone is a version control system.
We use it because it allows us to keep track of who does what changes to the source code (and for a lot of complicated things, but 'keeping track of changes' is the basic idea).
</li>
<li>Skim over the <a href="http://monotone.ca/docs/Tutorial.html">monotone tutorial</a>, to make sure you understand the concepts.</li>
<li>
<p>
If you want to remain anonymous, you need to do an additional step, to set up a connection to a monotone server over I2P:
</p>
<p>
Enable the <a href="i2ptunnel.html">i2ptunnel</a> client tunnel on port 8998 pointing to mtn.i2p2.i2p (if you are having nonce issues, see <a href="http://trac.i2p2.de/ticket/64">ticket #64</a> for a workaround)
</p>
</li>
<li>
Pick a directory where you want to put all your I2P files, and create a monotone database: <b>mtn -d i2p.mtn db init</b>
</li>
<li>
Pull the I2P sources to your machine. This may take a long time, especially if you are doing this over I2P!
<ul>
<li>Anonymously: <b>mtn -d i2p.mtn pull 127.0.0.1:8998 i2p.i2p</b></li>
<li>
<p>
Non-anonymously: <b>mtn -d i2p.mtn pull mtn.i2p2.de i2p.i2p</b>
</p>
<p>
Alternatively, instead of 'mtn.i2p2.de', you can also download from mtn.i2p-projekt.de.
</p>
</ul>
Non-anonymous access: mtn.i2p2.de:4691 or mtn.i2p-projekt.de:4691
<br>
Website branch: use i2p.www instead of i2p.i2p.
<br>
</li>
<li>
<p>
All the sources are now present on your machine, in the database file. To make them available in a directory, you need to check them out: <b>mtn -d i2p.mtn co --branch=i2p.i2p</b>
</p>
<p>
The above command creates a directory i2p.i2p, which contains all of the I2P sources.
</p>
</li>
</ul>
<h3>Remarks</h3>
<p>
To download the website files instead of the I2P source files, use 'i2p.www' instead of 'i2p.i2p'.
</p>
<p>
The initial pull may take several hours using the tunnel.
If it fails after a partial pull, simply rerun it, it will start where it left off.
If you are in a hurry, use the non-anonymous access.
<br>
Full list of branches: see <a href="http://stats.i2p/cgi-bin/viewmtn/">viewmtn</a>.
<br>
Long version: see the <a href="monotone.html">monotone page</a>.
</p>
<p>
A full list of branches, including i2p.i2p and i2p.www can be found on <a href="http://stats.i2p/cgi-bin/viewmtn/">viewmtn</a>.
</p>
<p>
A long explanation about using monotone is available on the <a href="monotone.html">monotone page</a>.
</p>
<li>
<h2 id="building-i2p">Building I2P</h2>
<p>
To compile the code, you need the Sun Java Development Kit 6 or higher, or equivalent JDK
(<a href="http://java.sun.com/javase/downloads/index.jsp">Sun JDK 6</a> strongly recommended) and
<a href="http://ant.apache.org/">Apache ant</a>
version 1.7.0 or higher.
If you go are working on the main I2P code, you can go into the i2p.i2p directory and run 'ant' to see the build options.
</p>
<li>
<p>
To build or work on console translations, you need
the xgettext, msgfmt, and msgmerge tools from the
<a href="http://www.gnu.org/software/gettext/">GNU gettext package</a>.
</p>
<li>
<p>
For development on new applications,
see the <a href="applications">application development guide</a>.
</p>
<li>
<h2 id="development-ideas">Development ideas</h2>
<p>
See <a href="http://zzz.i2p/forums/3">zzz's TODO lists</a>,
<a href="todo.html">this website's TODO list</a> or
<a href="http://trac.i2p2.de/report/2">Trac</a>
for ideas.
</p>
<li>
Say hi to the developers on #i2p
<h2 id="making-the-results-available">Making the results available</h2>
<li>
<p>
See the bottom of <a href="licenses.html">licenses.html</a> for
commit privilege requirements. (Not required for website)
commit privilege requirements. You need these to put code into i2p.i2p (not required for the website!).
</p>
<li>
<p>
Short version of how to generate and use keys if you plan to commit:
<ul>
<li>mtn genkey yourname-transport@mail.i2p <i>(use an empty passphrase)</i>
@@ -80,11 +147,17 @@ Short version of how to generate and use keys if you plan to commit:
<li>mtn sync -k yourname-transport@mail.i2p <i>(push with this key)</i>
</ul>
Long version: see the <a href="monotone.html">monotone page</a>.
</p>
</ul>
<h2 id="get-to-know-us">Get to know us!</h2>
<p>
The developers hang around on IRC. They can be reached on the Freenode network, and on the I2P internal networks. The usual place to look is #i2p. Join the channel and say hi!
</p>
<h2 id="translations">Translations</h2>
<p>
Website and router console translators: See the <a href="newtranslators.html">New Translators Page</a>
for next steps.
</p>
{% endblock %}