summaryrefslogtreecommitdiff
path: root/xmpp/transcriptish.rst
blob: 6cd42280f33d107e7a5d53ca2ba786ee9e388180 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Primates have a tendency to be social animals: they live in a herd and
need to communicate frequently with its members to cohordinate their
activities but also to maintain the social ties that keep the group
together.

Since a long time, human herds have developed technological tools that
helped them to spread out their herds geographically by enabling remote
communications with fellow human beings, which in turn has lead to a higher
need of tools for remote communication.

With the speed of modern technlogical advancements and aided by the natural
lifecycle of standards, this has led to the proliferation of chat systems
famously illustrated by xkcd_

.. _xkcd: https://xkcd.com/1810/

This situation is far from optimal: most of the tools listed on that comic
do not interoperate with each other, so everybody needs to be on a few
systems, each one of them requiring a different client, in order to
communicate with his family and friends.

This lack of interoperability comes by design, as these services are usually
provided for free and need to collect and keep as many users as possible in
order to benefit from the network effect and to maximise the commercial
value of their data.

For us users, however, it would be nice if there was a chat system that was
designed for interoperability, with the ability to use different servers and
different clients (on multiple devices) according to the user's need, and
the ability not to be locked on a single provider but to be able to talk
with users of any one provider.

The good news is that there are actually a few such systems (of course),
but today I want to talk about one in particular that is also an
established, open standard designed for interoperability and extensibility:
XMPP_.

.. _XMPP: xmpp.org

Born as Jabber in 1999 with the aim to solve a situation not very
dissimilar from the one of today, XMPP had a first wave of success in
the first decade of 2000 when it was adopted by a number of big players
including Google Talk and partially Facebook Chat.

So, why isn't everybody using XMPP today?

One factor that helped is that once gtalk had reached a significant user
base, the ability to federate, i.e. to communicate with accounts on
other servers was no longer useful to google, but actually harmful, as
it didn't help them to gain new users.

While they took quite some years to disable it completely, for a long
time Google has been reducing its usefulness by adding gtalk-only
features such as group and video chats. Since they were such a big
player, this also helped spread a feeling that XMPP was an abandoned
protocol, no longer suitable to the current needs.

This was however far from being the truth: XEPs (XMPP Extension
Protocols) continued to be published to address new needs as they
manifested, and nowadays XMPP has all of the features commonly available
in other, more recent systems.

It is true that lately quite some innovation in chat has been done in
other, non federating, systems, and having control of all servers and
clients of course allows to deploy such innovation faster, but XMPP
wasn't far behind, and often managed to have similar features after a
few months, while still keeping the ability to communicate between
widely different servers and clients, according to the capabilities of
all parties involved.

What this means is that XMPP with the right client/server combination
has all of the features required nowadays by a chat system, including
the ability to connect to it from different devices, both at the same
time and alternatively, while keeping a complete conversation history
on all of them, good battery life on mobile, various levels of
cryptography (also for group chats), and of course great smileys and the
ability to send cat pictures that also works on the text-only clients
used by a few maniacal users such as me.

The availability of multiple clients can cause some confusion for less
experienced users, but here my recomendation is to ask your friends for
what they are using, or just use gajim_ on the desktop (Linux and
Windows) and conversations.im_ on Android, unless you enjoy spending
time trying different clients until you've found one that perfectly
matches your needs.

.. _gajim: https://gakim.org
.. _conversations.im: https://conversations.im

As for the servers there is a list of public ones at
https://list.jabber.at (and the security features of those servers can
be tested on https://xmpp.net/ ), and the people behind the
conversations.im client also provide accounts for 8 EUR / year on
https://account.conversations.im where you can expect them to keep the
server up to date with the latest extensions required on mobile.

My recomendation, however, is to self-host, or rather to find a group of
people that trust each other, ideally one that includes a sacrificial
nerd and share the expense and work needed to self host among them.

This has been my choice, and I'm using a cheap, entry level VPS (for
which I pay about 5 EUR / month including the domain registration) which
has plenty of resources for the current dozen of users — and could
easily host another dozen and/or other services (maybe a federated
social network instance?).

As for the effort required on my part to maintain it, it took me about a
day to set up everything, starting from the VPS creation and including
an afternoon spent reading up on every extension suggested by
conversations.im in order to decide whether I wanted to enable it (but
I've documented_ this part, so that you can just use my tutorial and
save time), plus 10 minutes every other week doing regular
mainteinance including keeping the system up to date (and rebooting the
server for security kernel upgrades).

For this I've used prosody_, as it was recommended as easy to set up and
maintain, but I've also heard good things about ejabberd_, which should
be a bit more versatile in case of bigger deployments.

.. _documented: https://www.trueelena.org/computers/howto/modern_xmpp_server.html
.. _prosody: https://prosody.im/
.. _ejabberd: https://www.ejabberd.im/

This is in my opinion a sustainable effort in order to have a server
that is managed by someone that has no incentive to sell user data, both
because it's too small to have any value and because all of the users
know where the server admin live (and vice-versa) and every incentive to
keep the server in good shape because they are using it themselves.

Of course, thanks to federation, that dozen of users can talk to people
on all other federated servers around the world, which is the main
reason that makes this model of small, trustable, servers feasible and
in my opinion makes XMPP the best chat choice from the point of view of
its users.