|
XMPPDesignChoices
For the communication between the distributed components of the system we've decided to use XMPP. XMPP is an IETF standard for message passing between clients, using XML. XMPP also supports PubSub, which we use to push results from the test runner to buckets which will handle the results. There are several XMPP server implementations available, and in theory Kinti should work with all of them. The XMPP server is to be used for managing access control, for example different buckets could use different user accounts to log in to the XMPP server. Many languages have libraries available for XMPP, we however decided to use the Python programming language. There were two major reasons for this choice. One, since Kinti has to maintain many TCP connections – for XMPP as well as to run the service tests – we really need a code library which handles this efficiently. Python has Twisted, which is such a library. Second, a co-author of the XMPP Publish-Subscribe specification, Ralph Meijer, is a personal acquaintance of Mark Wubben, and he has written a Python library named Wokkel to more easily use XMPP PubSub. Kinti uses both Twisted and Wokkel. |