Ilmari Lauhakangas

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

IRCv3 logo

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

goguma screenshot showing image previews

goguma screenshot showing image previews

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.