Skip navigation
Syndie - distributed forums

# 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.

The primary resource for source code changes is the Monotone repository at `mtn.i2p2.de`, as described on the download page).

Installation packages for download are built with various ant targets:

- `syndie-installer-$version.bin.win$bits.exe`
  (java installer, includes bin/syndie.exe, bin/syndie-desktop.exe, and bin/syndie-cli.jar java launchers)
  built with the "installer-windows" target but requires "-Di2p.src.dir=/path/to/i2p-source" (e.g. `ant -Di2p.src.dir=../i2p.i2p installer-windows`)
- `syndie-installer-$version.bin.linux$bits.jar`
  (java installer, includes bin/syndie.jar, bin/syndie-desktop.jar, and bin/syndie-cli.jar java launchers)
  built with the "installer-linux" target but requires "-Di2p.src.dir=/path/to/i2p-source" (e.g. `ant -Di2p.src.dir=../i2p.i2p installer-windows`)
- `syndie-installer-$version.bin.osx$bits.jar`
  (java installer, includes bin/syndie.command, bin/syndie-desktop.command, and bin/syndie-cli.jar java launchers)
  built with the "installer-osx" target but requires "-Di2p.src.dir=/path/to/i2p-source" (e.g. `ant -Di2p.src.dir=../i2p.i2p installer-windows`)
- `syndie-$version.bin.osx$bits.tar.bz2`
  (OSX Application Bundle)
  built with the "pkg-osx" target
- `syndie-cli-$version.bin.tar.bz2`
  (cli only, needs `i2p.jar`)
  built with the "pkg-cli" target
- `syndie-$version.src.tar.bz2`
  (source package with hsqldb)
  built with the "source-tarball" target

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:

- Prefix class level variables with `_`
- Translation constants should be `private static final String T_$name`
- standardJavaCamelCase should be used. long words are better thnShrt1sUCntUndrstnd.
- Variable names/comments/etc, should be in English, unless the comments relate to internationalization/translation issues, of course.
- Put your braces on the same line as the method:

      void foo() {
      }

  not

      void foo()
      {
      }

- If a method is short enough, fit it in one line:

          private int getFoo() { return _foo; }

- No tabs, ever - we do not all use the same IDE/editor, and the code should be readable to all of the coders. Indent with 4 spaces.