her.esy.fun/src/posts/0006-irc-most-modern-chat.org

194 lines
6.7 KiB
Org Mode
Raw Normal View History

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: