Baboon's architecture - SeyZ/baboon GitHub Wiki
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.