Become a contributer

Splendid, you would like to contribute! Welcome to the team.

If you have questions, contact Johannes: via email or via xmpp or via skype.

You can also just go ahead and check out the code, or fork it on github.


Jake is seperated into several components.


Central is the violet core, the implementation of the synchronisation, the protocol, the log access, and all the user interactions (use cases).

Find violet at


Currently a GUI based on swing is implemented to access violet.

Find the gui at

Several frontends are thinkable, for instance you could build a web interface. Another frontend, primarily for testing, but possibly also for headless servers, is the commander.

Find the commander at

Libraries / Subprojects

Violet depends on several internal libraries:


FSS is the file-system-service, providing computer-independent addressing of files within a folder. It also provides hashing, launching files, and watching for changes.

Find the fss at


The ICS is a major component that provides low-level communication. You can think of it as an interface to XMPP (the implementation for this is ICS-XMPP. A good description of the task of the ICS is given on its project website.

Find the ics at, and ics-xmpp at

It is completely thinkable to implement a, say, ICQ implementation of the ICS that could be used instead of the XMPP implementation.


AvailableLater (AVL) is a small library that provides a interface for asynchronous calls.

Find availablelater at

External dependencies

Violet and the GUI also take advantage on several external libraries:

  • macwidgets -- for nice GUI widgets
  • jarsync -- for rsync-like delta transmission
  • ice4j -- a ICE/STUN NAT traversal library. This allows peer-to-peer connections through the internet.