IRC technology news from the first half of 2023
After reading through some hundreds of release notes and commit logs again, the conclusion is clear: IRC keeps on trucking. It is especially nice to see new desktop applications being created. I’m not sure what to make of it, but there are now three projects written in the D language among the libraries and frameworks.
As always, I pick the projects based on what makes sense to me. If you would like to see your project in this list, make sure you have a good readme file and write informative subject lines for your commit messages or better yet, put together release notes.
A capability was added for sending arbitrary standard replies and a
MSGREFTYPES ISUPPORT token was added to the chathistory spec.
Modern IRC Client Protocol docs received updates and clarifications related to replies,
MODE and nicknames.
goguma - for mobile Linux and Android
There is now support for replies via the reply client tag, a gallery view for images and the app scrolls to the unread indicator when a conversation is opened. Initial iOS support was added.
IRCCloud - Connect to any IRC server out there, and even Slack workspaces
Both the Android and iOS apps received improvements to the file upload dialog and text snippets.
Revolution IRC – Android client with Material design
After a two-year hiatus, a release was made with maintenace updates and bug fixes.
Many of these include support for persistent history, so there is some overlap with the bouncer category.
Convos - Mojolicious in the backend and Svelte in the frontend
System emojis are now used instead of a third party service
gamja – a bare-bones web client
A keyboard-driven fast tab switcher was added.
Additions include ability to use custom notification sounds, log file rotation and ability to manage web server configuration using UNIX environment variables. The server setup was made easier.
An option was introduced for not adding hidden messages to the list, support for emojis was reworked, country is now displayed in whois info, channel topic is now shown in buffer header, chathistory implementation was updated and the ability was added for inviting users to a channel via the UI.
The Lounge - modern web client utilising Node.js
The application was rewritten in TypeScript / Vue 3 framework.
AdiIRC – freeware client for Windows
Version 4.3 was released with new commands, identifiers and events for making scripted webirc frontends, ability to dock any custom window (including picture windows) as Monitor Panels, a new sound API, a visual indicator on tabs with matching text when searching the Options dialog and URL recognition for gemini://, ws:// and wss://.
ERC - an Emacs IRC client
Improvements and additions include better compatibility with soju bouncer, better user experience when connecting interactively, smarter reconnect handling via
erc-server-reconnect-function option and more control over the layout of messages via the
Halloy – cross-platform client written in Rust
Public development started last year and now even IRCv3.2 capability support is being implemented.
HexChat - client for Windows and UNIX-like operating systems
An option was added to exclude nickname in window title and URL handling was made more robust.
KVIrc – client built with Qt
KDE4 support was dropped in favour of KDE5.
mIRC – 95 ‘til infinity (Windows-only)
Additions and improvements in version 7.73 include support for IRCv3 standard-replies capability, smarter “keep channels open” feature, more complete SASL authentication support and improved Find dialog in Scripts Editor.
Pidgin - a multi-network/protocol chat application
The old IRC protocol plugin was removed in favour of the IRCv3 plugin. Additions include support for SASL authentication, message-tags and msgid.
Polari - GNOME’s client
Developers continued the UI code rework making use of libadwaita.
Smuxi – multi-protocol and cross-platform
Lots of maintenance work went in, for example dropping the Glade# UI dependency in favour of GtkBuilder.
SweetIRC – client for macOS written with Swift and SwiftUI
It’s pretty fresh with public development starting last October, but there are not many macOS clients around, so maybe spread the word and lend a hand?
girc - client written in Common Lisp
me commands as well as a way to specify a server host and nick on startup.
glirc - Haskell library and console client
Support was added for socks5 authentication.
Irssi - your text mode chatting application since 1999
Listmodes and their timestamps are now properly formatted and Irssi can receive monospace formatting characters.
rirc - a minimalistic irc client written in C
Home and end keys are now supported in buffer scrollback, inline formatting characters are now supported and support was added for
whowas commands alongside many other additions and fixes.
senpai - TUI client made for bouncers
Additions include a setup assistant, improved handling of chathistory and an option to hide join/part messages.
Swirc - lightweight ICB and IRC client
Additions include a stats command, expanded support for tab completion in commands, support for external SASL authentication, a SOCKS proxy client, spelling support with Hunspell and improved unicode support in the printtext and readline modules.
tiny – client written in Rust
Text formatting rendering was implemented and an ability to configure
/notify defaults for tabs was added.
WeeChat - the extensible chat client
Development was very active with some highlights being addition of new IRC capabilities draft/multiline, batch and echo-message, new commands
/knock, 256 colors by default and multiline support.
They stay online, so you don’t have to!
pounce - multi-client, TLS-only IRC bouncer. Uses server-time extension to communicate with clients
JOIN is now handled during registration.
soju – multi-user bouncer
Support was added for admins to run a command as another user, Unix admin sockets to run any BouncerServ command from the shell, external authentication (PAM and OAuth 2.0 for now) and storing message history in a database rather than plain-text files. An example systemd service file was added.
Ergo - combining the features of an ircd, a services framework, and a bouncer
Additions and improvements include standard-replies capability, better handling of websockets, support for draft/pre-away and draft/message-redaction, support for implicit TLS for mail submission agents and an init script for bsd-rc.
gossip - server written in Go
Support was added for invite-notify and registering channels.
InspIRCd - stable, high-performance and modular
Additions include support for standard-replies, warning about expiring or expired client certificates and support for cloaking users by their ident/username.
miniircd - a small and limited server with no configuration required
Version 2.2 was released with various bug fixes.
ngIRCd – lightweight IRC server
Ircops can now use
WHO on any channel and handling of channel modes was made more robust.
Solanum - an IRCd for unified networks
Various fixes and improvements were made.
UnrealIRCd - the most widely deployed IRCd
JSON-RPC support was expanded, adding to the usability of the Administration Webpanel. Channel modes, chathistory and
whowas were improved and an experimental spam filter was added
This and the next section has been curated with programming language diversity in mind.
Search commands for YouTube videos and channel logs were added and many commands were improved.
cbot - bot with features implemented as dynamically loaded plugins (C)
APIs were added for reactions and callbacks.
Eggdrop - the oldest bot still in active development (C/Tcl)
Support was added for
chghost IRCv3 capability, which allows servers to send a notification when clients change their username or host.
Honeybot - a bot with simple plugin development experience (Python)
New plugin additions include IMDb search and basketball medal lookup.
kameloso - IRC and Twitch bot (D)
IRC colours 16 and above are now mapped to terminal ANSI colouring.
Limnoria - robust, full-featured, and user/programmer-friendly bot (Python)
Various fixes and code cleanups were made.
Nibblrjr - bot framework for creating custom behaviour dynamically (Node.js)
A paste API was added for hosting content as HTML or text (HTML is sandboxed).
PBot – a pragmatic bot (Perl)
Support was added for IRCv3 message tags and
Shadow - a modular and event driven bot (Perl)
This old bot grew a web administration panel.
Skybot - multithreaded and multinetwork bot (Python)
Plugins were added for ChatGPT and SoundCloud track metadata.
Sopel - lightweight, easy-to-use utility bot (Python)
STATUSMSG is now handled and an IRCv3 capabilities submodule was added.
Libraries, frameworks and utilities
birchwood - a sane IRC framework (D)
This framework entered public development last October and recently the creator wrote a blog post about it.
Dialect - IRC parsing library (D)
IRC event parsing now retains more information.
hii – a file-based client inspired by ii
Support was added for SASL authentication using the
irc-framework – for bots and full clients (Node.js)
SASL failure handling was added.
irc-go - libraries to help with IRC development (Go)
Additions include an optional callback for customizing how IRC connections are created (with proxy support), a splitter function to turn messages containing formatting codes into machine-readable representations and a colour parser to do the same for colour code strings.
ircrobots - asynchronous bare-bones IRC bot framework (Python)
Support was added for specifying a tls client keypair.
superseriousstats - a fast and efficient program to create statistics out of various types of IRC chat logs (PHP)
URL handling was made more robust.
The irc crate - thread-safe and async-friendly client library (Rust)
Colour code handling was made more robust and modes with no prefix are now allowed.
vinezombie - a modular client library (Rust)
The code for this young project was rewritten and the goal is now to be a lower-level library.
VIRC - a simple IRC library (D)
Support was added for draft/multiline and partial support was added for message-tags, typing and replies.
BitlBee – gateway to other chat networks
There was a fix to Jabber protocol support and lots of under the hood maintenance work.
discord-ircv3 – bridge with support for IRCv3 features
Support was added for message replies and message redaction.
Discord Relay Chat - an IRC client using Discord as the frontend
There is now no limit to the number of channels and command history tracking and querying was added alongside many quality of life improvements.
Heisenbridge - a bouncer-style Matrix IRC bridge
Websocket support was added.
localslackirc - gateway for Slack, running on localhost for one user
JOINs was made more robust.
Matrix2051 - IRC server backed by Matrix
draft/message-redaction was implemented.
Reliable Discord-client IRC Daemon (rdircd) - personal discord-client to irc-server translation daemon
Channel name deduplication was made more robust and regexp-filtering for received messages was added.
Taking care of user accounts and channels among other things.
Anope – highly modular set of services
Version 2.0.13 was released in June with bug fixes.
Atheme - for large networks with high scalability requirements
Login failure notices were made opt-in and modules were added for password-based login throttling and channel join rate monitoring.