#+TITLE: Modern IRC #+SUBTITLE: In 2019, IRC is still the best. #+AUTHOR: Yann Esposito #+EMAIL: yann@esposito.host #+DATE: [2019-08-17 Sat] #+KEYWORDS: self-hosting, chat, irc #+DESCRIPTION: How to modernize IRC #+OPTIONS: auto-id:t #+begin_notes 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). The two game changer are: - znc replay module (history handled correctly) - znc palaver module (push notifications on iOS) #+end_notes 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. 2. *multiplatform*: If you do not have a terminal at hand (or emacs) then, 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. 6. *Frugal*. Really, we have a responsibilty to do our best not to consume 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). I am quite disapointed by /modern/ chat applications. Their major problems are: - opposite of frugal (slack consume 400Mo of RAM for me, the technology is an electron app, or an equivalent complex web app consuming the same amount of RAM) - 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. - opposite of minimalist and solution focused, I want dense, ascii text. I do not want, emojis, images, gifs, videos, messages that will improve my "engagement" with their app, feature that increase the social drug used by most social network platforms. Typically, show when someone is typing, show when you read a message, get notifications about missed messages, etc... For me those are anti-features. ** Different tries :PROPERTIES: :CUSTOM_ID: different-tries :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. Finally, IRC + ZNC with replay module is the winner. It was the easiest and best solution. 1. it works 2. it is Free Software 3. it is frugal 4. it is old 5. it is minimalist 6. it is feature complete for a small team chat. [fn:tries] Here is a list of the chatting solutions I used for some time and finally abandonned (I certainly forgot a few ones): - slack - matrix (self-hosted) - keybase - discord - gitter - XMPP (both hosted by a 3rd party and self-hosted) - IRC ← the winner * 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: * Bonus :PROPERTIES: :CUSTOM_ID: bonus :END: ** No brainer upload file :PROPERTIES: :CUSTOM_ID: no-brainer-upload-file :END: