Baboon's architecture - SeyZ/baboon GitHub Wiki

Baboon's architecture

Baboon's architecture

baboon-project.org provides you a free hosted XMPP server and Baboon server for all public code repositories. If you prefer, you can host your own.

Baboon client

All developers of your team has Baboon client installed of each computer. The purpose of this client is to monitor file changes on your projects directories. Once detected, the changes are synced to the Baboon server.

XMPP server

Baboon uses XMPP protocol. More exactly, Baboon uses XMPP stanzas for all 'messages' (e.g. conflict notification messages) and a TCP/IP proxy for 'data' (e.g. file changes).

The TCP/IP proxy between the Baboon client installed on your computer and the Baboon server is negotiated using the XMPP XEP 0065 (Socks5 Bytestreams). I implemented the client-side part of this XEP into the SleekXMPP project.

Baboon server

All Baboon clients are connected to the Baboon server through the XMPP server. The purpose of the centralized Baboon server is to merge the code of all developers each time a change is synced by a Baboon client. If the merge task complaints, there's a conflict. Baboon server will notified all the developers team about that conflict using a PubSub (XEP 0060) message.