IRC technology news from the first half of 2024
Categories: IRC
There is a head-spinning amount of IRC news to share again.
The big ticket item for this season is the release of InspIRCd v4.0.0 server software after five years of development. They have a nice overview of the biggest changes.
Protocol specifications
A work-in-progress REDACT command was added, to be used for moderation and retracting accidentally sent messages among other things.
Documentation
Modern IRC Client Protocol docs received updates and clarifications related to KICK
, TOPIC
and CHANTYPES
.
Mobile clients
CoreIRC β Android client
The app can now access battery optimisation settings in order to prevent random disconnects and is now compatible with Android 13 and 14.
goguma - for mobile Linux, iOS and Android
Version 0.7.0 was released in June with support for file uploads using the soju.im/FILEHOST specification, Apple Push Notification Service (APNS) on iOS, text and photo sharing on iOS, /part
command, STATUSMSG
and more robust auto-reconnect functionality. The app now uses Material 3 theme.
IRCCloud - connect to any IRC server out there, and even Slack workspaces
The iOS app got fixes for some visual glitches.
Lith - multiplatform WeeChat Relay client
Improvements were made to the display of HotList (activity notifications in buffers) and support was added for message background colour.
Web clients
Many of these include support for persistent history, so there is some overlap with the bouncer category.
gamja β a bare-bones web client
Support was added for soju.im/filehost
, the number of highlights is shown in window title, realname is now shown as a tooltip, geo URIs are included in linkification, messages are no longer marked as read when window is not in focus and support was added for AUTHENTICATE
chunking.
irc-hybrid-client - single user hybrid client using JavaScript frontend and Node.js/Express backend
Hidden panels may automatically open in response to channel events and a rate limiter was added for invalid password attempts.
KiwiIRC β uses static files and supports theming and plugins (JavaScript)
Away status handling was made more robust.
The Lounge - modern web client utilising Node.js
The linkifier was improved and expanded, a shortcut was added for navigating between channels with unread messages and the code base was refactored and cleaned up in many places.
Desktop clients
ERC - an Emacs IRC client
Improvements and additions include more flexible sending and displaying of prompt input and a querypoll fallback for the IRCv3 Monitor extension.
Halloy β cross-platform client written in Rust
Halloy enjoyed a very active development season with additions such as options for showing a topic banner for channels, colorising nicks in the nick list, controlling application scale factor, loading a separate PEM PKCS#8 encoded key for SASL authentication, improved UX for autocompletion, ability to toggle Op and Voice from user context menu in channels, file transfer support, support for IRCv3 multi-prefix
, message-tags
, WHOX
, and UTF8ONLY
, support for socks5 and http proxy configurations and the ability to open irc://
and ircs://
URL schemes. The configuration file format switched from YAML to TOML.
HexChat - client for Windows and UNIX-like operating systems
Unfortunately HexChat development came to a halt with the release of version 2.16.2. There are several forks, but no one has announced they would be picking up the torch with regards to maintenance. That said, Soni’s fork now includes contribution guidelines, so perhaps this addition can be taken as an invitation to collaborate. The software is in need of extensive updates to become compatible with newer versions of GTK+ UI toolkit.
KVIrc β client built with Qt
Qt toolkit version 6 is now used on all platforms, a vertical line margin option was added for making ASCII art look nice, displaying contextual help was made to work again and support for running the application as portable was improved.
Konversation β KDEβs IRC client for Windows, Linux and BSDs
The application code was ported to Qt 6 and KDE Frameworks 6.
mIRC β 95 βtil infinity (Windows-only)
Additions and improvements in versions 7.76 and 7.77 include support for larger GUI icons for high resolution monitors, server login support for SCRAM-SHA-224/384/512
authentication and support for translated text in all dialogs.
Pidgin - a multi-network/protocol chat application
The IRCv3 protocol plugin started leveraging a new library called Ibis.
Relay IRC - client built with Electron & React (JavaScript)
This is a reincarnation of Lax, which I featured in a couple of earlier posts. Quite some improvements were made to the UI, performance and logging.
Textual β client for macOS
After a few years of hiatus, two new versions were released with 7.2.3 as the latest. The sysinfo
command was improved and many fixes were made.
urChat - a Java based client
Originally started in 2014, development resumed last year. During this season, proxy support was added alongside lots of UI work.
Terminal clients
girc - client written in Common Lisp
It is now possible to toggle the display of the channel topic, an autojoin argument was added and the buffer is now represented as a tree which can also be displayed as tabs.
glirc - Haskell library and console client
An /in
command was added for running commands in contexts other than the currently focused window.
Irssi - your text mode chatting application since 1999
Support was added for SCRAM-SHA-256
and SCRAM-SHA-512
challenge-response SASL authentication.
senpai - TUI client made for bouncers
A BOUNCER
command was added for easier interaction with the soju bouncer, a handy in-client help feature was added, custom notifications can now be configured to be sent directly, bypassing the terminal and support was added for an Operating System Command (OSC) to set an app ID (currently only supported by foot terminal emulator).
Swirc - lightweight ICB and IRC client
Additions include expanded tab completion for commands, support for translations and new commands /voice
and /devoice
.
WeeChat - the extensible chat client
Support was added for colors in messages and big changes were made to the relay machinery, including the addition of an HTTP REST API relay type.
Bouncers
They stay online, so you donβt have to!
soju β multi-user bouncer
File uploads are now supported and getting an invite to a previously saved channel now leads to automatically joining it.
ZNC - an advanced bouncer
Version 1.9.0 was released with capability negotiation support.
Daemons
Ergo - combining the features of an ircd, a services framework, and a bouncer
v2.14.0 released in June includes support for the OAUTHBEARER
SASL mechanism, allowing interoperation with Gamja and an OAuth2 provider as well as the IRCV3BEARER
SASL mechanism, allowing to accept OAuth2 or JWT bearer tokens.
gossip - server written in Go
Trusted proxies can now be configured, WHOIS
implementation was made more complete and STATUSMSG
was implemented.
InspIRCd - stable, high-performance and modular
Additions include a fingerprint cloak method, support for multiple hash algorithms for client fingerprints, passwords for opers being optional in case a TLS fingerprint or services account is preferred for security, support for non-web WebSocket connections and tools for converting UnrealIRCd databases to InspIRCd.
ngIRCd β lightweight IRC server
Version 27 was released after three years of development. SSL/TLS certificates on outgoing server-server links are now validated by default, a Dockerfile was added, support was added for the sd_notify
protocol of systemd
, an example filter file for Fail2Ban was added and IPv6 support is now autodetected by default.
UnrealIRCd - the most widely deployed IRCd
Versions 6.1.5 and 6.1.6 were released with support for draft/no-implicit-names
, performance improvements and more flexibility in the programmatic rule system. UnrealIRCd also celebrated its 25th birthday.
Bots
This and the next section has been curated with programming language diversity in mind.
Eggdrop - the oldest bot still in active development (C/Tcl)
There is now a module allowing to use Python for scripting, with mostly the same API as Tcl. Support was added for userhost-in-names
and standard-replies
capabilities, the bot is now compatible with Tcl 9 and account tracking was made more robust.
PBot β a pragmatic bot (Perl)
A Wordle game plugin was added and it is now possible to deploy the bot using Docker or Vagrant.
Sopel - lightweight, easy-to-use utility bot (Python)
Version 8.0.0 was released after two years of development.
Libraries, frameworks and utilities
Blur - event-driven IRC-framework (Ruby)
After a two-year quiet period, work resumed with additions such as a command line interface, logging and URL handling.
Ibis - a GObject based library (C)
Ibis is a new library from Pidgin developers. It has no opinion about how messages are handled and is meant to be used for integration, providing the heavy lifting of things like parsing and serialization.
irc-go - libraries to help with IRC development (Go)
SASL
authentication code was made more robust and a GetReplyTarget
function was added.
ircjournal - a lightweight, fast, standalone log viewer for the web with real-time log ingestion (Rust)
Development for this tool started in 2021. During this season it gained a Nix flake as a convenient deployment method.
vinezombie - a modular client library (Rust)
Still early days for this library and lots of groundwork being laid in areas such as message handling and authentication.
Weitersager - receive messages via HTTP and show them on IRC (Python)
Even though this utility only received maintenance work during this season, I wanted to give it a shoutout for once.
Bridges
Discord Relay Chat - an IRC client using Discord as the frontend
User scripts can now be scheduled.
Heisenbridge - a bouncer-style Matrix IRC bridge
Multi-line messages can now get a line prefix to help some client scripts unwrap the messages and reacts can be disabled.
irgramd - connect from an IRC client to Telegram as a regular user
Commands were added to forward messages and to upload files and media.
localslackirc - gateway for Slack, running on localhost for one user
The code was adapted to Slack’s API changes.
Matrix2051 - IRC server backed by Matrix
A Containerfile was added as a deployment option and compatibility with WeeChat was improved.
Reliable Discord-client IRC Daemon (rdircd) - personal discord-client to irc-server translation daemon
Image-emojis and gifv embeds are now handled and support was added for Operating System Command (OSC) 8, to provide hyperlinks for terminal IRC clients.
Services
Taking care of user accounts and channels among other things.
Anope β highly modular set of services
Several releases of the 2.1 line were made with additions such as an UNBANME
privilege for users to unban themselves, the ability to use more than one fingerprint in an oper block, alternate command suggestions in response to invalid user commands, support for draft/channel-context
and draft/reply
tags, an Atheme database import feature, support for sending client tags on UnrealIRCd, support for the InspIRCd 1206 (v4) protocol, the ability to encrypt passwords with Argon2 or HMAC-SHA-2 algorithms, queueing for multi-line messages and an example systemd
unit file.
Atheme - for large networks with high scalability requirements
Compatibility with UnrealIRCd was improved and channels can now be filtered by registered/unregistered status.