Skip navigation

Syndie development

Releases are versioned as $major.$minor$quality, where $major indicates a substantial functional change, $minor indicates bugfixes and small improvements, and $quality values of a,b,rc indicate whether a release is alpha quality (substantial changes still in progress, liable to break, for geeks only), beta quality (unstable, but changes are primarily bugfixes, for geeky testers), release candidate quality (final testing before release), respectively. Releases without a,b,rc are stable, production quality releases.

Development discussions for Syndie go on within the I2P development team, on their development list, forum, weekly meetings, and IRC channel. Announcements are made on the syndie-announce mailing list, with source code changes posted to the syndie-commit mailing list (though the primary resource for source code changes is of course the monotone repository at mtn.i2p.net, as described on the download page).

Installation packages for download are built with various ant targets:

All of the packages can be built into doc/web/dist/ with "ant dist", though you need to include the settings required for -Dlaunch4jdir and -Dizpackdir. Note that it bundles the swt.jar from several platforms - to run "ant dist", you will need to download those files and set the swt.linux32, swt.win32, swt.osx properties to point at the correct swt.jar files. Additional targets will likely be added.

With a modern GCC/GCJ (releases prior to 4.0 will fail when they try to write to the database), you can build native Syndie executables. On *nix/osx, "make -f Makefile.nix syndie" creates ./syndie, and "make -f Makefile.nix package" creates a syndie-$version.nix.tar.bz2, which is just like syndie-$version.bin.zip, except bin/syndie is the native executable instead of a shell script launching java. Work is ongoing for GCJ/MinGW support, but the Makefile.mingw should work with a viable MinGW install of GCJ 4.x

Coding conventions are fairly standard for java projects, though the guideline is to follow whatever standards are in use within the particular file you are working in. Wider guidelines across the whole codebase for new code: