IRC technology news from the first half of 2023
Categories: IRC
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.
Protocol specifications
A capability was added for sending arbitrary standard replies and a MSGREFTYPES
ISUPPORT token was added to the chathistory spec.
Documentation
Modern IRC Client Protocol docs received updates and clarifications related to replies, MODE
and nicknames.
Mobile clients
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.
Web clients
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.
irc-hybrid-client β Single user hybrid client using JavaScript frontend and Node.js/Express backend
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.
KiwiIRC β uses static files and supports theming and plugins (JavaScript)
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.
Desktop clients
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 fill
module.
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?
Terminal clients
girc - client written in Common Lisp
Additions include ctcp
, ctcp action
, query
, channel
and 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 names
, who
, whois
and 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 /ignore
and /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 /action
, /rules
and /knock
, 256 colors by default and multiline support.
Bouncers
They stay online, so you donβt have to!
pounce - multi-client, TLS-only IRC bouncer. Uses server-time extension to communicate with clients
Irssi’s invalid 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.
Daemons
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
Bots
This and the next section has been curated with programming language diversity in mind.
Botto (Node.js)
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 chghost
.
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 EXTERNAL
mechanism.
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.
Bridges
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
Handling of JOIN
s 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.
Services
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.