From 347e7ae4865473e5a7b1d4b256e91c5e24c7c12e Mon Sep 17 00:00:00 2001 From: Alex Corcoles Date: Sun, 29 Oct 2023 12:07:53 +0100 Subject: [PATCH] Initial add --- workstation/modern_irc.md | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 workstation/modern_irc.md diff --git a/workstation/modern_irc.md b/workstation/modern_irc.md new file mode 100644 index 0000000..304b8a4 --- /dev/null +++ b/workstation/modern_irc.md @@ -0,0 +1,50 @@ +With the [IRCv3](https://ircv3.net/) advances and modern software, IRC is a surprisingly nice chat/IM medium, although a bit complex to set up nicely. + +I use: + +* [Soju](https://soju.im/) as a bouncer. +IRC basically only supports "synchronous" communication. +If your IRC client disconnects from a chat (because you turn off your computer, for example), then you lose the messages in your chats. +A bouncer is a persistent IRC client that you run on a 24/7 computer that connects to your IRC chats for you, then you connect a client to the bouncer. +This way, the bouncer captures all messages and you can view them right after connecting a client. +This achieves the "scrollback" that conventional chat clients provide. +Soju also uses modern extensions to make the IRC experience simpler. + +* [Bitlbee](https://www.bitlbee.org) as a bridge to Telegram. +Bitlbee connects traditional IM networks, such as XMPP to IRC. +There are plugins for many IM systems, including Whatsapp. +However, Whatsapp does not have a "supported API", so I am wary to use anything else than official clients. +But with Telegram, I can integrate IRC with it. + +* [Senpai](https://git.sr.ht/~taiite/senpai) is a modern terminal IRC client that is "Soju-aware". + +* [Goguma](https://sr.ht/~emersion/goguma/) is a Flutter/Android IRC client that is also "Soju-aware". + +With this setup, I can: + +* Connect to IRC chats in a friendly manner with modern comforts. +* Use Telegram from a terminal, avoiding many things I don't like about the Telegram clients (everything is janky, esp. scroll and search. Also information density is terribly low). +* Access this setup via SSH, so I can use it on "foreign" computers. + +# Set up + +My [workstation container image](workstation/setup.py) includes Soju, Bitlbee, and the Telegram/Bitlbee adapter. +I have Python scripts that configure [soju](scripts/p7s/soju.py) and [Bitlbee](scripts/p7s/bitlbee.py) as persistent systemd services running as containers. + +The container image also includes Senpai, which I run using [distrobox](https://distrobox.it/). + +I install Goguma on my phone using [F-Droid](https://f-droid.org/). + +After connecting Senpai to Soju, you talk to a bot called `BouncerServ` to connect to your IRC networks, including the "virtual" IRC network that Bitlbee uses. +When you join/part channels in any client, Soju takes care of making those actions permanent. + +You message a special channel in Bitlbee to create "accounts" that connect to IM networks such as Telegram. + +# Possible improvements + +[Gamja](https://sr.ht/~emersion/gamja/) is another "Soju-aware" IRC client that provides a web interface. +Gamja and Goguma even support OAuth for authentication. + +Right now I run Soju on a private network, so I cannot access it outside my VPN. +For this reason, I use trivial passwords and plain-text protocols. +For convenience (using Goguma on random networks without connecting to the VPN), I should set up TLS and proper authentication. -- 2.47.3