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.
Not quite ready for coding? Try getting involved first.
Get to Know Java
The I2P router and its embedded applications use Java as the main development language. If you don’t have experience with Java, you can always have a look at Thinking in Java
Study the how intro, other “how” documents, the tech intro, and associated documents:
- How introduction: Introduction to I2P
- Documentation hub: Documentation
- Technical introduction: Technical Introduction
These will give you a good overview of how I2P is structured and what different things it does.
Getting the I2P Code
For development on the I2P router or the embedded applications, you need to get the source code.
Our current way: Git
I2P has official Git services and accepts contributions via Git at our own GitLab:
- Inside I2P: http://git.idk.i2p
- Outside I2P: https://i2pgit.org
Clone the main repository:
git clone https://i2pgit.org/I2P_Developers/i2p.i2p.git
A read‑only mirror is also available at GitHub:
- GitHub mirror: github.com/i2p/i2p.i2p
git clone https://github.com/i2p/i2p.i2p.git
Building I2P
To compile the code, you need the Sun/Oracle Java Development Kit 6 or higher, or equivalent JDK (Sun/Oracle JDK 6 strongly recommended) and Apache Ant version 1.7.0 or higher. If you are working on the main I2P code, go into the i2p.i2p directory and run ant to see the build options.
To build or work on console translations, you need the xgettext, msgfmt, and msgmerge tools from the GNU gettext package.
For development on new applications, see the application development guide.
Development Ideas
See the project TODO list or the issue list on GitLab for ideas:
- GitLab issues: i2pgit.org/I2P_Developers/i2p.i2p/issues
Making the Results Available
See the bottom of the licenses page for commit privilege requirements. You need these to put code into i2p.i2p (not required for the website!).
Get to Know Us!
The developers hang around on IRC. They can be reached on various networks and on the I2P internal networks. The usual place to look is #i2p-dev. Join the channel and say hi! We also have additional guidelines for regular developers.
Translations
Website and router console translators: See the New Translator’s Guide for next steps.
Tools
I2P is open source software that is mostly developed using open‑source toolkits. The I2P project recently acquired a license for the YourKit Java Profiler. Open source projects are eligible to receive a free license provided that YourKit is referenced on the project web site. Please get in touch if you are interested in profiling the I2P codebase.
YourKit is kindly supporting open source projects with its full‑featured profilers. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit’s leading software products: