Title: How to choose a communication protocol | |
Author: Solène | |
Date: 25 June 2021 | |
Tags: internet | |
Description: | |
# Introduction | |
As a human being I have to communicate with other people and now we | |
have many ways to speak to each other, so many that it's hard to speak | |
to other people. This is a simple list of communication protocol and | |
why you would use them. This is an opinionated text. | |
# Protocols | |
We rely on protocols to speak to each other, the natural way would be | |
language with spoken words using vocal chords, we could imagine other | |
way like emitting sound in Morse. With computers we need to define how | |
to send a message from A to B and there are many many possibilities for | |
such a simple task. | |
* 1. The protocol could be open source, meaning anyone can create a | |
client or a server for this protocol. | |
* 2. The protocol can be centralized, federated or peer to peer. In a | |
centralized situation, there is only one service provider and people | |
must be on the same server to communicate. In a federated or | |
peer-to-peer architecture, people can join the communication network | |
with their own infrastructure, without relying on a service provider | |
(federated and peer to peer are different in implementation but their | |
end result is very close) | |
* 3. The protocol can provide many features in addition to contact | |
someone. | |
## IRC | |
The simplest communication protocol and an old one. It's open source | |
and you can easily host your own server. It works very well and | |
doesn't require a lot of resources (bandwidth, CPU, memory) to run, | |
although it is quite limited in features. | |
* you need to stay connected to know what happen | |
* you can't stay connected if you don't keep a session opened 24/7 | |
* multi device (computer / phone for instance) is not possible without | |
an extra setup (bouncer or tmux session) | |
I like to use it to communicate with many people on some topic, I find | |
they are a good equivalent of forums. IRC has a strong culture and | |
limitations but I love it. | |
## XMPP (ex Jabber) | |
Behind this acronym stands a long lived protocol that supports many | |
features and has proven to work, unfortunately the XMPP clients never | |
really shined by their user interface. Recently the protocol is seeing | |
a good adoption rate, clients are getting better, servers are easy to | |
deploy and doesn't draw much resources (i/o, CPU, memory). | |
XMPP uses a federation model, anyone can host their server and | |
communicate with people from other servers. You can share files, | |
create rooms, do private messages. Audio and video is supported based | |
on the client. It's also able to bridge to IRC or some other protocol | |
using the correct software. Multiples options for end-to-end | |
encryption are available but the most recent named OMEMO is definitely | |
the best choice. | |
The free/open source Android client « Conversations » is really good, | |
on a computer you can use Gajim or Dino with a nice graphical | |
interface, and finally profanity or poezio for a console client. | |
XMPP on Wikipedia | |
## Matrix | |
Matrix is a recent protocol in the list although it saw an incredible | |
adoption rate and since the recent Freenode drama many projects | |
switched to their own Matrix room. It's fully open source in client or | |
servers and is federated so anyone can be independent with their own | |
server. | |
As it's young, Matrix has only one client that proposes all the | |
features which is Element, a very resource hungry web program (web page | |
or run "natively using Electron, a program to turn website in desktop | |
application) and a python server named Synapse that requires a lot of | |
CPU to work correctly. | |
In regards to features, Matrix proposes end to end encryption, rooms, | |
direct chat, encryption done well, file sharing, audio/video etc... | |
While it's a good alternative to XMPP, I prefer XMPP because of the | |
poor choice of clients and servers in Matrix at the moment. Hopefully | |
it may get better in the future. | |
Matrix protocol on Wikipedia | |
This way is well known, most people have an email address and it may | |
have been your first touch with the Internet. Email works well, it's | |
federated and anyone can host an email server although it's not an easy | |
task. | |
Mails are not instant but with performant servers it can only takes a | |
few seconds for an email to be sent and delivered. They can support | |
end to end encryption using GPG which is not always easy to use. You | |
have a huge choice for email clients and most of them allow incredible | |
settings choice. | |
I really like emails, it's a very practical way to communicate ideas or | |
thoughts to someone. | |
### Delta Chat | |
I found a nice program named Delta Chat that is built on top of emails | |
to communicate "instantly" with your friends who also use Delta Chat, | |
messages are automatically encrypted. | |
The client user interface looks like an instant messaging program but | |
will uses emails to transport the messages. While the program is open | |
source and Free, it requires electron for desktop and I didn't find a | |
way to participate to an encrypted thread using an email client (even | |
using the according GPG key). I really found that software practical | |
because your recipients doesn't need to create a new account, it will | |
reuse an existing email address. You can also use it without | |
encryption to write to someone who will reply using their own mail | |
client but you use delta chat. | |
Delta Chat website | |
## Telegram | |
Open source client but proprietary server, I don't recommend anyone to | |
use such a system that lock you to their server. You would have to | |
rely on a company and you empower them by using their service. | |
Telegram on Wikipedia | |
## Signal | |
Open source client / server but the main server where everybody is | |
doesn't allow federation. So far, hosting your own server doesn't seem | |
a possible and viable solution. I don't recommend using it because you | |
rely on a company offering a service. | |
Signal on Wikipedia | |
Proprietary software and service, please don't use it. | |
# Conclusion | |
I daily use IRC, Emails and XMPP to communicate with friends, family, | |
crew from open source projects or meet new people sharing my interests. | |
My main requirement for private messages is end to end encryption and | |
being independent so I absolutely require federated protocol. |