DesignXMPP analysis

Version 1 (Tijmen de Mes, 05/07/2012 10:59 am)

1 1 Tijmen de Mes
h1. Software Candidates Analysis
2 1 Tijmen de Mes
3 1 Tijmen de Mes
4 1 Tijmen de Mes
5 1 Tijmen de Mes
6 1 Tijmen de Mes
In this phase the existing XMPP libraries will be analyzed and one will be chosen to be used throughout the project.
7 1 Tijmen de Mes
8 1 Tijmen de Mes
9 1 Tijmen de Mes
h2. Requirements
10 1 Tijmen de Mes
11 1 Tijmen de Mes
12 1 Tijmen de Mes
* Written in Python (C/C++ could also be used, but a wrapper would need to be written)
13 1 Tijmen de Mes
* Support for XMPP server and/or component
14 1 Tijmen de Mes
* Ability to use it with the current model used by SylkServer
15 1 Tijmen de Mes
** Green threads
16 1 Tijmen de Mes
** Callback based IO
17 1 Tijmen de Mes
18 1 Tijmen de Mes
19 1 Tijmen de Mes
h2. Software Libraries Evaluation
20 1 Tijmen de Mes
21 1 Tijmen de Mes
22 1 Tijmen de Mes
The following aspects were considered when evaluating a given library:
23 1 Tijmen de Mes
24 1 Tijmen de Mes
* Met requirements stated above
25 1 Tijmen de Mes
* Is it actively maintained?
26 1 Tijmen de Mes
* Example use cases
27 1 Tijmen de Mes
* Deployments in real-world scenarios
28 1 Tijmen de Mes
* Perceived complexity to integrate it with SylkServer architecture
29 1 Tijmen de Mes
30 1 Tijmen de Mes
List on xmpp.org http://xmpp.org/xmpp-software/libraries/
31 1 Tijmen de Mes
 
32 1 Tijmen de Mes
33 1 Tijmen de Mes
h2. Selected XMPP library
34 1 Tijmen de Mes
35 1 Tijmen de Mes
36 1 Tijmen de Mes
After analyzing candidate libraries *Wokkel* was the chosen one for the following reasons:
37 1 Tijmen de Mes
38 1 Tijmen de Mes
* Implemented on top of Twisted, which makes integration with SylkServer straightforward
39 1 Tijmen de Mes
* Support for both component and XMPP server models, allowing for flexibility in implementation
40 1 Tijmen de Mes
41 1 Tijmen de Mes
http://wokkel.ik.nu/
42 1 Tijmen de Mes
43 1 Tijmen de Mes
* Plugin architecture, 'subprotocols' implementing different XEPs
44 1 Tijmen de Mes
* Client and server component support
45 1 Tijmen de Mes
* XMPP server-to-server support (s2s)
46 1 Tijmen de Mes
* Designed to be used with Twisted (reactor model)
47 1 Tijmen de Mes
* Active development
48 1 Tijmen de Mes
49 1 Tijmen de Mes
50 1 Tijmen de Mes
h2. Selected SIP Library
51 1 Tijmen de Mes
52 1 Tijmen de Mes
53 1 Tijmen de Mes
SIP SIMPLE SDK http://sipsimpleclient.com used by SylkServer