Basically the following three techniques are used to develop Saros:
Java as programming language
XMPP as communication layer
Eclipse as target development environment to enhance
Since Saros is based on XMPP, it uses a server based architecture. Communication between clients is done by XMPP messages which are send over XMPP servers. Exchanging client actions (modifications, selection, project file operations,...) is done by wrapping activity descriptions in XMPP messages and sending them to other clients. An exception is the file transfer. Due to performance reasons it uses a peer to peer transfer. If this direct connection fails, Saros uses a fallback to file transfer over XMPP servers.
Saros uses a layer architecture and consists of eight major modules as you can see in the image below. The Whiteboard is an additional project which expands the functionality of the Saros plug-in.
We use PicoContainer
to manage our component instances using the dependency injection design pattern. The resulting dependency graph which represents the structure of all classes which are singletons in Saros can be seen in this diagram