IRC technology news from the second half of 2022
Categories: IRC
The IRC world was bustling as ever during the past six months, with new projects springing up and existing ones being enriched and polished.
Protocol specifications
The IRCv3 Working Group published a 2022 spec round-up article.
Extended monitor was ratified and the requirement to set account-tag on all messages was relaxed.
Documentation
Modern IRC Client Protocol docs received updates related to messages such as WHOIS and AWAY.
Mobile clients
Communi for Sailfish - The first and foremost IRC client for Sailfish OS
Many improvements were made to notifications.
goguma - for mobile Linux and Android
Lots of work went into this new client. It now supports UnifiedPush for push notifications, avoiding the requirement for Google Play Services. An optional image preview is available.
IRCCloud - Connect to any IRC server out there, and even Slack workspaces
Both the Android and iOS apps gained support for quickly jumping between channels, typing indicators and message editing. Additionally the Android app now supports themed icons on version 13. A blog post gives a summary of things that happened on the server side during the past couple of years.
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
The user interface received many fixes and tweaks for better behaviour.
gamja β a bare-bones web client
OAuth 2.0 authentication support was implemented, a config option was added to generate random nicknames and infinite scrolling got special handling of messages to avoid triggering unnecessary notifications.
irc-hybrid-client β Single user hybrid client using JavaScript frontend and Node.js/Express backend
Additions include a page to view and edit the list of IRC server definitions, an API to manage servers, an option to automatically save and restore the message cache across web server restarts, unread message counters, support for SASL authentication and a better message cache.
KiwiIRC β uses static files and supports theming and plugins (JavaScript)
Many bug fixes went in and support was added for secret channels.
The Lounge - modern web client utilising Node.js
Realname is now set to nickname on first connect to avoid confusing display in some other clients and search was improved.
Desktop clients
Circe - a client for IRC in Emacs
Support was added for strikethrough/monospace format codes.
ERC - an Emacs IRC client
Additions include a new option to quote new items added to match lists, SASL authentication (non-IRCv3) and improved irc:// url handling.
HexChat - client for Windows and UNIX-like operating systems
Various fixes went in and /SERVER and /SERVCHAN now use SSL by default.
Konversation β KDEβs IRC client for Windows, Linux and BSDs
Many code cleanups were made related to Qt6 UI toolkit support and buttons were enriched with icons.
mIRC β 95 βtil infinity (Windows-only)
A bunch of new versions were released with 7.72 being the latest. Additions include support for UTF8ONLY and bot mode tokens, echo-message and various WATCH list numerics.
Pidgin - a multi-network/protocol chat application
IRCv3 features started being added into a new protocol plugin.
Polari - GNOMEβs client
Notifications were made more robust and UI code was modified to make more use of libadwaita.
Srain β modern client built with GTK
Many bug fixes and code cleanups were made.
Terminal clients
catgirl - TLS-only client
Various fixes and code refactorings went in.
circo - a simple client for the terminal
Nick count per channel was added and connections now use a non-blocking socket.
girc
This client implemented in Common Lisp doesn’t have much in the way of docs, but recently gained support for SASL authentication among other things.
glirc - Haskell library and console client
Better away status handling was implemented.
Irssi - your text mode chatting application since 1999
Many fixes were made and the documentation was updated.
senpai - TUI client made for bouncers
Additions include /whois command, support for hex colours, config option to beep on highlight, support for soju.im/bouncer-networks-notify and WHOX. A library was created to support an /NP command for sending the name of the current song being played on the system.
Swirc - lightweight ICB and IRC client
An optional ident protocol daemon was added and support for tab completion in commands was expanded. Swirc can now be run under GNU Hurd.
tiny β client written in Rust
PART and QUIT messages can now be given as arguments for /close and /quit commands, passwords can now be read from external commands such as password managers and support was added for SASL EXTERNAL.
WeeChat - the extensible chat client
Versions 3.6 and 3.7 were released with additions such as an /item command for creating custom bar items, possibility to do case conversion in expressions, ability to remove multiple filters at once with “/filter del”, support for IRC messages RPL_HELPSTART, RPL_HELPTXT and RPL_ENDOFHELP as well as options for rotating and compressing log files.
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
Various fixes and refactorings were made.
soju β multi-user bouncer
Stability of WHO was improved, also benefiting from a cache to avoid hitting server rate limits. TLS certificate pinning was implemented to allow connecting to servers using self-signed certificates.
ZNC - an advanced bouncer
Python support for writing modules was expanded and notification logic was reworked.
Daemons
Ergo - combining the features of an ircd, a services framework, and a bouncer
Version 2.11 was released with draft/persistence capability, debugging improvements and many bug fixes.
gossip - server written in Go
Support was added for account-notify.
InspIRCd - stable, high-performance and modular
Additions include support for extended-monitor, a regex_pcre2 module, ability for remote servers to specify the context of a message, support for logging JSON to stdout and stderr, WHO request data enriched with the matched channel, accountnicks metadata as a base for nicer account and nick management, improved stats responses, support for per-oper/opertype operator MOTDs and improved oper features. Some of these changes were only toward the unreleased version 4.
Ircd-hybrid - a lightweight, high-performance daemon
Support for WHOX was added and three new channels modes were added to control private messages, kicks and invites.
ngIRCd β lightweight IRC server
Various fixes and cleanups were made.
Solanum - an IRCd for unified networks
The code was made compatible with OpenSSL 3.0 and user mode +I was added to allow users to hide their idle time.
UnrealIRCd - the most widely deployed IRCd
Feature release 6.0.5 brought experimental JSON-RPC support, a new TLINE command and improved logging.
Bots
This and the next section has been curated with programming language diversity in mind.
Botto (Node.js)
Missed commands now display a “did you mean…” message for similar available commands, ban handling was added and many improvements to commands were made.
Cardinal β bot built with Twisted library with a focus on ease of development (Python)
Support was added for censored words to avoid tricking the bot into getting itself banned.
cbot - bot with features implemented as dynamically loaded plugins (C)
The http server based on libmicrohttpd got an API for sending plaintext responses and a buttcoin plugin was added.
Codybot β a Linux bot with C compilation and shell access (C)
Various fixes and refactorings were made.
Eggdrop - the oldest bot still in active development (C/Tcl)
A systemd service installer was added alongside many fixes.
Honeybot - a bot with simple plugin development experience (Python)
Tons of improvements were made to code quality and security. Plugins were added for Duckduckgo search, random images and excuses and URL shortening.
kameloso - IRC and Twitch bot (D)
Additions include a new example SamePlugin to showcase bot reactions to plain messages, a simple Time plugin and rewritten Quotes and Notes plugins.
Limnoria - robust, full-featured, and user/programmer-friendly bot (Python)
Fediverse plugin got support for videos (PeerTube), poll plugin got a list command, chathistory support was improved and numerous other fixes and improvements were made.
PBot β a pragmatic bot (Perl)
The C standard citation applet now supports C99, C11 and C23 standards and a word morph game plugin was added.
Pybot β an extensible, modular, configurable, and multi-threaded bot (Python)
A .schedulelist command was added to list scheduled task per channel.
Sopel - lightweight, easy-to-use utility bot (Python)
The anti-looping mechanism was made configurable, built-in help plugin was replaced by sopel-help package, support for LINELEN token was added to send longer messages than the RFC limit of 512 bytes when possible and UTF8ONLY handling was improved.
Libraries, frameworks and utilities
chathistorysync - a synchronization tool for IRC chat history
Passwords are now accepted from stdin.
Dart IRC (Dart)
Some code cleanups were made.
Dialect - IRC parsing library (D)
Build configurations were added, so now Twitch server support is opt-in.
Godot irc client - client for the Godot game engine (GDScript)
The code was made public in June. Basics of the IRC protocol are implemented.
goirc - Event-based stateful client framework (Go)
SASL authentication support was added.
irc β a full-featured library (Python)
Failed connection attempts are now handled properly.
irc3 β pluggable client library based on Python’s asyncio (Python)
Thread safety of the code was improved alongside smaller fixes.
irc-framework β for bots and full clients (Node.js)
Handling of WHOX and server capabilities was improved.
miniirc - a mini IRC framework (Python)
The socket code was made non-blocking to make connections more stable and nick recovery was implemented.
Mojo::IRC - a client for the Mojo IOLoop (Perl/Raku)
Some fixes and code cleanups were made.
superseriousstats - a fast and efficient program to create statistics out of various types of IRC chat logs (PHP)
The layout was made more mobile-friendly, handling of URLs was improved and many code cleanups were made.
vinezombie - a modular client library (Rust)
First public release was in September and while the API is not yet stable, features are being added at a fair clip.
Bridges
Discord Relay Chat - an IRC client using Discord as the frontend
Launched in 2021, this bridge now has sensational features such as ChatGPT integration.
Heisenbridge - a bouncer-style Matrix IRC bridge
Some stability and reliability improvements were made.
localslackirc - gateway for Slack, running on localhost for one user
Message parsing performance was improved and several bug fixes were made.
Matrix2051 - IRC server backed by Matrix
A systemd unit is now available, support was added for m.room.redaction, WHOIS, CHATHISTORY LATEST, MSGREFTYPES=msgid ISUPPORT token alongside tons of other improvements.
matterbridge - bridges between a growing number of protocols
A problem with sending empty messages was fixed and substitution of the bot’s nick is now allowed when sending raw IRC commands.
Reliable Discord-client IRC Daemon (rdircd) - personal discord-client to irc-server translation daemon
Support was added for deleting and editing the last sent message and optional TLS wrapping.
teleirc β bridge to Telegram
mIRC formatting is now stripped and support for Telegram location sharing messages was added.
Services
Taking care of user accounts and channels among other things.
Anope β highly modular set of services
Version 2.0.12 was released in April with account confirmation via the web panel and a regex_pcre2 module.
Atheme - for large networks with high scalability requirements
Handling and workflow regarding flags was improved, hooks were added for adding and removing a certificate fingerprint and IPv6 support was added to DNS blacklist.
DalekIRC Services - Services with UnrealIRCd & WordPress integration
This project was started by Valware in June 2021. It looks rather featureful at this point. The idea is to move away from service bots to server-side commands. A complementary module for UnrealIRCd is available.