Skip to content

Commit 18dde6e

Browse files
raphizfabianhauser
authored andcommitted
[#XGB-107] Final Framework Decision: XMPP-Framework
1 parent 61e462a commit 18dde6e

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

documents/architectural-decisions/architectural-decisions.adoc

+1
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ include::ui-library.adoc[]
1818

1919
include::frontend-structure.adoc[]
2020

21+
include::xmpp-library.adoc[]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
== XMPP Client Library
2+
3+
To communicate via XMPP from the client via Websockets or Bosh an existing client library shall be used to benefit from an existing implementation.
4+
5+
Primarily, the following aspects are relevant for the decision, ordered by priority:
6+
7+
. Community Support: How well is the project maintained
8+
. Plugin API: Is it easy to create or replace existing plugins
9+
. TypeScript binding: Are there existing TypeScript bindings?
10+
11+
=== Considered Options
12+
13+
* stanza.io
14+
* strophe.js
15+
16+
=== Decision Outcome
17+
18+
Chosen option: stanza.io, because it offers solid community support and provides a clean plugin API with minimal dependencies.
19+
Although strophe.js has a more active community, some plugins have dependencies on jQuery and are implemented in CoffeeScript.
20+
That is the main reason why we selected stanza.io over strophe.js.
21+
22+
To fully benefit from TypeScript, we could implement the TypeScript bindings. https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html[]
23+
24+
=== Evaluations of the Options
25+
26+
==== stanza.io
27+
28+
. Community Support
29+
* > 20 Contributors
30+
* primarily maintained by one person
31+
* Project receives frequent updates since 2014
32+
* Used by 40 Repos and 3 Packages (2018-04-10)
33+
* > 10 Pull-Requests closed/merged since 2017-01-01
34+
. Plugin API
35+
* New plugins can easily be added
36+
* Existing plugins can be replaced
37+
. TypeScript binding
38+
* No TypeScript bindings exist
39+
40+
==== strophe.js
41+
42+
. Community Support (only core repository)
43+
* > 50 Contributors
44+
* minor fixes in the last year by different contributors
45+
* Project regularly updated since 2008
46+
* Used by >90 Repos and >20 Packages (2018-04-10)
47+
* > 25 Pull-Requests closed/merged since 2017-01-01
48+
. Plugin API
49+
* Some Plugins depend on jQuery
50+
* Minimal core allows to add and replace existing plugins simply
51+
* Many plugins are written in CoffeeScript (whereas the core is in JavaScript)
52+
. TypeScript binding
53+
* Bindings for the core exist (not tested!), see https://www.npmjs.com/package/@types/strophe[@types/strophe on NPM]

0 commit comments

Comments
 (0)