2019-10-15 19:26:47 +00:00
|
|
|
#+TITLE: Modern IRC
|
|
|
|
#+SUBTITLE: In 2019, IRC is still the best.
|
2019-10-04 19:41:42 +00:00
|
|
|
#+AUTHOR: Yann Esposito
|
|
|
|
#+EMAIL: yann@esposito.host
|
|
|
|
#+DATE: [2019-08-17 Sat]
|
2019-10-15 19:26:47 +00:00
|
|
|
#+KEYWORDS: self-hosting, chat, irc
|
|
|
|
#+DESCRIPTION: How to modernize IRC
|
2019-10-04 19:41:42 +00:00
|
|
|
#+OPTIONS: auto-id:t
|
|
|
|
|
|
|
|
#+begin_notes
|
2019-10-15 19:26:47 +00:00
|
|
|
tl;dr: Why and how IRC.
|
|
|
|
|
|
|
|
After reviewing and testing many different chat solutions the clear winner
|
|
|
|
is IRC + ZNC (with replay module) + weechat (with replay script) +
|
|
|
|
thelounge + Palaver (on iOS).
|
2019-10-04 19:41:42 +00:00
|
|
|
|
|
|
|
The two game changer are:
|
2019-10-16 12:26:26 +00:00
|
|
|
- ZNC replay module (history handled correctly)
|
|
|
|
- ZNC palaver module (push notifications on iOS)
|
2019-10-04 19:41:42 +00:00
|
|
|
#+end_notes
|
|
|
|
|
2019-10-15 19:26:47 +00:00
|
|
|
How to chat in 2019? Certainly with slack, or via a social media app in the
|
|
|
|
browser or mobile phone app.
|
|
|
|
|
|
|
|
How geeks should chat in 2019?
|
|
|
|
|
|
|
|
To answer this question here is my opinion (after having tried many
|
|
|
|
different chat solutions[fn:tries].
|
|
|
|
Here are the feature I think a modern geeky solution should have:
|
|
|
|
|
|
|
|
1. *terminal client* or *terminal-like UI* (in emacs for example).
|
|
|
|
All modern UI looks cool for screenshots, but if you are going to use it
|
|
|
|
a lot, you will prefer density over good looking.
|
|
|
|
Most app, web app are terrible related to information by number of pixel
|
|
|
|
ratio.
|
2019-10-16 12:26:26 +00:00
|
|
|
2. *multi-platform*: If you do not have a terminal at hand (or emacs) then,
|
2019-10-15 19:26:47 +00:00
|
|
|
you should be able to get your message on your phone or via a web
|
|
|
|
interface for portability.
|
|
|
|
3. *self-hosted*: you should control your data, your history, your logs,
|
|
|
|
the encryption methods, etc...
|
|
|
|
4. *teams* and *direct messages*
|
|
|
|
5. *notifications*, I tend to control those a lot, but a small private team
|
|
|
|
chat is one of few exception where you generally want to be notified.
|
2019-10-16 12:26:26 +00:00
|
|
|
6. *Frugal*. Really, we have a responsibility to do our best not to consume
|
2019-10-15 19:26:47 +00:00
|
|
|
more resources than we really need.
|
|
|
|
Chat should be about TEXT, not images, not videos, not presentations and
|
|
|
|
PDF.
|
|
|
|
7. Refuse anti-features: show when someone is typing, show when someone
|
|
|
|
as read your message, etc... Those functionality are in fact increasing
|
|
|
|
social insecurity and forces you to answer sooner instead of really
|
|
|
|
taking the time to answer correctly.
|
|
|
|
8. Use free software (not just open source software).
|
|
|
|
|
2019-10-16 12:26:26 +00:00
|
|
|
I am quite disappointed by /modern/ chat applications.
|
2019-10-15 19:26:47 +00:00
|
|
|
|
|
|
|
Their major problems are:
|
|
|
|
|
2019-10-16 12:26:26 +00:00
|
|
|
- prodigal; most those client applications (slack, gitter, riot,
|
|
|
|
mattermost, etc...) easily consume more than 300MB of RAM.
|
|
|
|
Most of the time those clients are all electron app.
|
2019-10-15 19:26:47 +00:00
|
|
|
- not private. Most solution do not encrypt your conversations. Even
|
|
|
|
if using encryption mechanism and you trust your client, and you will
|
|
|
|
still reveal your social network topology.
|
2019-10-16 12:26:26 +00:00
|
|
|
- anti-minimalist, I want dense /text/.
|
|
|
|
I do not want:
|
|
|
|
+ emojis,
|
|
|
|
+ images,
|
|
|
|
+ animations (gif or videos),
|
|
|
|
+ HTML/Markdown display
|
|
|
|
- Manipulative; they try very hard to optimize engagement.
|
|
|
|
This is generally achieved through FOMO[fn:FOMO] and social anxiety
|
|
|
|
manipulations.
|
|
|
|
A few examples:
|
|
|
|
+ show when someone is writing a message
|
|
|
|
+ show when someone has read a message,
|
|
|
|
+ get notified about missed messages,
|
|
|
|
+ get a "top messages you missed",
|
|
|
|
+ etc...
|
|
|
|
- Prepared for EEE[fn:eee].
|
|
|
|
Most of those "modern" solution are a all-in-one solution, server +
|
|
|
|
clients with generic + specific features.
|
|
|
|
That way, some feature will be only possible in their client or that will
|
|
|
|
push concurrent app developers to follow the pace of new features.
|
|
|
|
|
|
|
|
The /manipulative/ part is quite important in fact.
|
|
|
|
Many of those "features" are in fact wanted by the users.
|
|
|
|
I think this is because those people should take the time to reflect about
|
|
|
|
the real plus value of those features vs their price.
|
|
|
|
Like it is state in Digital Minimalism[fn:dm].
|
|
|
|
|
|
|
|
Even recent projects like matrix, mastodon that thrive to break monopolies
|
|
|
|
are going a huge speed into this eternal run software development new
|
|
|
|
ideology.
|
|
|
|
Always evolve by adding as much new features as possible, instead of
|
|
|
|
striving for simplicity, stability and security.
|
|
|
|
But do we really need those features?
|
|
|
|
People are asking for them, but we pass too much time asking about the how
|
|
|
|
and forgetting about the why?
|
|
|
|
Each new feature should be really studied before being developed.
|
|
|
|
|
|
|
|
Would that feature be a full total net positive for everyone?
|
|
|
|
Or is there a price to pay? The price is generally the size and complexity
|
|
|
|
of the project, that will make it bigger, slower, harder to manipulate,
|
|
|
|
install, interact-with.
|
|
|
|
|
|
|
|
[fn:eee] [[https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish][Embrace, extend, and extinguish]].
|
|
|
|
[fn:dm] http://www.calnewport.com/books/digital-minimalism/
|
|
|
|
|
|
|
|
** About failed attempts :PROPERTIES: :CUSTOM_ID: different-tries
|
2019-10-15 19:26:47 +00:00
|
|
|
:PROPERTIES:
|
2019-10-16 12:26:26 +00:00
|
|
|
:CUSTOM_ID: about-failed-attempts--properties---custom-id--different-tries
|
|
|
|
:END:
|
2019-10-15 19:26:47 +00:00
|
|
|
:END:
|
|
|
|
|
|
|
|
- Matrix: I've used Matrix, and in fact it was really good except; the
|
|
|
|
server is written in python and is clearly not frugal at all.
|
|
|
|
Also I wanted to delete most of the history in the DB, and it was
|
|
|
|
impossible to find a working documentation explaining how to do that
|
|
|
|
correctly and easily (I'm not even sure this is possible).
|
|
|
|
You can easily remove some channels history from the DB, but doing the
|
|
|
|
opposite, keeping the history only of some channel and removing all others
|
|
|
|
doesn't appear to be easy.
|
|
|
|
- Mattermost: I've tried to install mattermost, to install it, there is
|
|
|
|
no package, you need to start a shell script as root that will erase and
|
|
|
|
change your nginx configuration.... Seriously...
|
|
|
|
- Rocket.chat, ho.... a nice word about the difference between community
|
|
|
|
version and pro version... no thank you. I prefer something sustained by
|
|
|
|
free software standards.
|
|
|
|
- I tried XMPP, it was OK. But the clients weren't really good, I could
|
|
|
|
have used bitlbee, the installation looked more complex than IRC.
|
2019-10-04 19:41:42 +00:00
|
|
|
|
|
|
|
Finally, IRC + ZNC with replay module is the winner.
|
2019-10-15 19:26:47 +00:00
|
|
|
It was the easiest and best solution.
|
2019-10-04 19:41:42 +00:00
|
|
|
|
2019-10-12 14:09:41 +00:00
|
|
|
|
|
|
|
1. it works
|
2019-10-15 19:26:47 +00:00
|
|
|
2. it is Free Software
|
2019-10-12 14:09:41 +00:00
|
|
|
3. it is frugal
|
2019-10-15 19:26:47 +00:00
|
|
|
4. it is old
|
|
|
|
5. it is minimalist
|
|
|
|
6. it is feature complete for a small team chat.
|
|
|
|
|
2019-10-16 12:26:26 +00:00
|
|
|
[fn:FOMO] Fear Of Missing Out
|
2019-10-15 19:26:47 +00:00
|
|
|
[fn:tries] Here is a list of the chatting solutions I used for some time
|
2019-10-16 12:26:26 +00:00
|
|
|
and finally abandoned (I certainly forgot a few ones):
|
2019-10-15 19:26:47 +00:00
|
|
|
- slack
|
|
|
|
- matrix (self-hosted)
|
|
|
|
- keybase
|
|
|
|
- discord
|
|
|
|
- gitter
|
|
|
|
- XMPP (both hosted by a 3rd party and self-hosted)
|
|
|
|
- IRC ← the winner
|
2019-10-12 14:09:41 +00:00
|
|
|
|
2019-10-07 15:54:11 +00:00
|
|
|
* Tutorial
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: tutorial
|
|
|
|
:END:
|
|
|
|
** Self Host
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: self-host
|
|
|
|
:END:
|
|
|
|
** Install/configure ngircd
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: install-configure-ngircd
|
|
|
|
:END:
|
|
|
|
** Install/configure ZNC
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: install-configure-znc
|
|
|
|
:END:
|
|
|
|
** Install/configure clients
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: install-configure-clients
|
|
|
|
:END:
|
|
|
|
*** thelounge
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: thelounge
|
|
|
|
:END:
|
|
|
|
*** weechat
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: weechat
|
|
|
|
:END:
|
|
|
|
*** Palaver
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: palaver
|
|
|
|
:END:
|
2019-10-12 14:09:41 +00:00
|
|
|
* Bonus
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: bonus
|
|
|
|
:END:
|
|
|
|
** No brainer upload file
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: no-brainer-upload-file
|
|
|
|
:END:
|