IRC technology news from the second half of 2020
Categories: IRC
In this article we look at the happenings in the IRC ecosystem during the second half of 2020. The great number of active software projects demonstrates a broad interest in specifying and implementing modern IRC standards.
The article was written in January 2021 and was supposed to be published somewhere else, but due to delays I decided to create this blog site to finally get it out.
It seems that the pandemic of 2020 with its influence on remote work and communication also had an impact on the interest in IRC. During the research phase of this article, it became clear that many were dusting off their old IRC projects and making them run on the latest software stacks. Numerous new projects had also entered development. For every active project included in this article, several others were left out due to being clearly personal, too young or still experimental.
From the perspective of the free and open source software community, the biggest news was freenode and OFTC staff collaborating on an IRCd called Solanum. Solanum is a fork of Charybdis, which has now been archived. For years, freenode has been using IRCd-Seven, which is based on Charybdis. OFTC has been using a modified version of Hybrid IRCd (still actively developed).
Note: freenode was later abandoned by most of its free and open source software communities in favour of Libera Chat due to an unfortunate ownership conflict. The collaboration on Solanum continues between Libera Chat and OFTC staff.
Protocol specifications
A draft spec for channel renaming was published (Sadie Powell, James Wheare and reviewers).
A draft spec for CHATHISTORY was published (MuffinMedic, Darren Whitlen, Shivaram Lingamneni and reviewers).
The draft multiline specification received clarifications on handling blank lines and line feeds (James Wheare and reviewers).
CHGHOST capability spec was rewritten for clarity (James Wheare and reviewers).
Documentation
IRC Definition Files, Modern IRC Client Protocol and the collection for best practices all received some improvements and additions.
Mobile clients
Colloquy - an advanced IRC, SILC & ICB client for macOS and iOS
The iOS app got some macOS platform compatibility fixes (unreleased).
CoreIRC – Android client
CoreIRC started offering a Lite version of its app. New features include experimental support for bouncers and /znc commands, improved nickname completion, sending commands to the server automatically after connecting and automatic reconnection support.
IRC for Android
The app was updated to include extended mIRC type color support.
IRCCloud - Connect to any IRC server out there, and even Slack workspaces
In their new releases, IRCCloud’s Android app got support for notification bubbles and the iOS app got UI and stability improvements. IRCCloud’s IRCv3 Working Group representative James Wheare was very active in specification writing and reviewing.
Palaver - advanced client for iPhone and iPad
Two releases included adding support for additional character sets such as GBK and ZNC-related improvements.
Revolution IRC – Android client with Material design
The app was updated for security and platform compatibility.
Web clients
Many of these include support for persistent history, so there is some overlap with the bouncer category.
Convos
There was a continous stream of releases, totalling over 20. Things added include SASL authentication support, bot functionality, disk usage display, user management, IRCv3 capability negotiation support, backing up user input to browser’s localStorage and Jitsi integration
dispatch
Support for I2P anonymous network was added
ep_irc – a client inside your Etherpad page
JohnMcLear revived this alternate chat plugin for Etherpad.
gamja – a bare-bones web client
Simon Ser started developing the client in April 2020 and actively refined it throughout the summer. Gamja requires an IRC WebSocket server.
Glowing Bear - WeeChat web frontend
Version 0.9.0 added tab completion. Unreleased changes include support for new authentication methods.
KiwiIRC – uses static files and supports theming and plugins (JavaScript)
Commits for the next release include improved multi-line message support.
The Lounge
Release v4.2.0 added a mentions panel, custom highlight exceptions and a new section for configuring SASL on the connect screen. Commits towards the next version include accessibility improvements.
Desktop clients
AdiIRC – freeware client for Windows
Release 3.9 among other things added an option to set custom icons for the default toolbar buttons. The next version will add serverlist options to set IRCv3 echo-message/server-time/SASL error/STS support per server.
Adium – multi-protocol client for macOS
Some macOS platform compatibility fixes were made (unreleased).
Circe - a client for IRC in Emacs
Unreleased improvements include faster nickname colouring and Emacs compatibility fixes.
GrumpyChat - Modern, yet oldschool client with distributed core, written in C++
The headless version of the client, grumpyd, which can be run like a bouncer, gained support for PostgreSQL databases.
HexChat - client for Windows and UNIX-like operating systems
Commits for the next release include improvements to font rendering and word splitting.
IceChat – client for Windows
Version 9.50 was released in July 2020 and it includes a year’s worth of improvements. Windows XP support was dropped and the nick list functionality was made more versatile.
Iridium – a native Linux client built in Vala and GTK for elementary OS
Additions include support for changing usernames.
Konversation – KDE’s IRC client for Windows, Linux and BSDs
Several releases were made with features and improvements including support for nick icon themes from store.kde.org, capability negotiation spec v3.2 and znc.in/self-message capability
KVIrc – client built with Qt
Some minor fixes went in.
Lax - client built with Electron & React (JavaScript)
Maintenance work and a crash fix (unreleased)
mIRC – 95 ‘til infinity (Windows-only)
Three releases were made. A “Do Not Disturb” option was added to disable notifications along with many fixes.
Polari - GNOME’s client
Improvements were made to the thumbnailer and URL preview.
Smuxi – multi-protocol and cross-platform
Smuxi received some macOS build process improvements.
Srain – modern client built with GTK
Release 1.1.2 had improvements for Windows usage and build process. Most of the work after that was centered around a move to Meson build system.
Textual – client for macOS
Release 7.1.7 contained macOS platform compatibility fixes.
Thunderbird – email client with chat support
Version 78.0 added echo-message capability
Ərk - cross-platform client written in Python 3, Qt 5, and Twisted
Version 0.822 was released with official Linux support and many improvements to the in-built plugin editor alongside over a hundred fixes and tweaks.
Terminal clients
catgirl - TLS-only client
Part of the same IRC suite as pounce the bouncer. Had three releases, latest being 1.3. Line wrapping and new shortcuts were added and improvements were made to tab-completion.
glirc - Haskell library and console client
Eric Mertens released two new versions of glirc and the irc-core library. Improvements were made to SASL authentication and STARTTLS support was added. Unreleased improvements include new text formatting features and better rendering for stats and the output of many other commands.
Irssi - your text mode chatting application since 1999
Unreleased commits include many bug fixes and improvements to Perl scripting.
kirc - a tiny client written in POSIX C99
Initial release happened in August 2020 and over twenty releases followed.
Swirc - lightweight ICB and IRC client
Release 3.2.5 added commands related to network services and ZNC.
rirc - a minimalistic irc client written in C
Version 0.1.3 was released with support for TLS and IRCv3 CAP support.
tiny – client written in Rust
Two releases were made. Enhancements include more robust joining to channels requiring identification with NickServ, new /help command and lexicographical sorting of nicks.
WeeChat - the extensible chat client
Releases 2.9 and 3.0 contained many useful additions to WeeChat’s relay and scripting functionality. UTF-8 support with IRC was improved.
Bouncers
They stay online, so you don’t have to!
KiwiBNC – for one person or 10,000 people (Node.js)
There is still no official release or a stability guarantee, but this new bouncer is getting more solid. Additions include custom message stores, support for the BOUNCER spec, a status endpoint, user mode tracking, STATUSMSG support, network blacklist
pounce - multi-client, TLS-only IRC bouncer. Uses IRCv3.2 server-time extension to communicate with clients
Pounce was created in late 2019. It is part of a whole IRC suite.
It saw three releases, 2.1 being the latest. Changes include better client compatibility, docs, support for OpenBSD.
Quassel IRC - cross-platform, distributed IRC client with a central core
Quassel is a bit unique in how it implements things, but is now aligning with the IRCv3 protocol. Several IRCv3 capabilities were added to Quassel core in late 2020.
Soju – multi-user bouncer
Simon Ser started developing the bouncer in February 2020 and managed to quickly attract an active contributor community. Soju supports multiple clients for a single user and connecting to multiple upstream servers via a single connection to the bouncer. Soju comes with a ZNC importer tool. Simon also started contributing to the discussions around IRCv3 specification proposals.
ZNC - an advanced bouncer
The 1.8.2 release contained a few bug fixes. The next release will have improvements to the channel view of the webadmin.
Daemons
eris - modern IRC Server / Daemon written in Go that has a heavy focus on security and privacy
Support was added for I2P and Tor.
InspIRCd - stable, high-performance and modular
Three releases with additions such as options for forcing bots to use NOTICEs instead of PRIVMSGs, and disengaging channel mode j (joinflood) when a server first starts up or splits from the network.
Ircd-hybrid - a lightweight, high-performance daemon
Six releases were made with changes such as replacing the WATCH implementation with IRCv3.2 MONITOR, implementing client capability negotiation and cap-notify as well as implementing user mode B for bots.
miniircd - a small and limited server with no configuration required
Version 2.0 was released with minimum Python requirement bumped to 3.6+.
ngIRCd – lightweight IRC server
Started in 2001, this IRCd is still going strong. Commits went in to improve the build process and to fix a channel listing issue.
Oragono - combining the features of an ircd, a services framework, and a bouncer
Oragono saw three new releases with highlight additions such as tracking seen/missed messages across multiple devices, authentication of users via external scripts, import support for an Anope or Atheme database. Unreleased changes include an implementation for account renaming (NS RENAME) and improved support for reverse proxies.
Note: Oragono recently changed its name to Ergo.
txircd - Modular IRCd built using Twisted Python library
Some fixes were committed towards the next release.
UnrealIRCd - the most widely deployed IRCd
Two releases were made with fixes and minor enhancements were released. The next version extends the reputation command to make it easier to look for potential troublemakers.
Bots
BitBot – Event-driven modular bot (Python)
BitBot v1.20.0 was released in August with several features and fixes, including a ban enforcement module and much better line truncation
Bot::IRC (Perl)
Two releases were made with improved IPv6 and UTF-8 support
Botto (Node.js)
Additions include a reminder module and URL parsing for 4chan, Amazon and Twitter.
Cardinal – bot built with Twisted library with a focus on ease of development (Python)
Release 3.0.0 added plugins for 8ball, seen, sed correction, ticker for stock information. The plugin support was made to be fully asynchronous and the codebase was migrated to Python 3.
cbot - bot with features implemented as dynamically loaded plugins (C)
Additions include sqlite database and functions to track users.
CloudBot – a simple, fast and expandable bot (Python)
Additions towards the next release include support for channel keys.
Codybot – a Linux bot with C compilation and shell access (C)
Over a dozen releases were made with additions such as an admin list and improved CTCP support.
JRobo - Advanced bot with tons of features (Java)
Support was added for OpenWeatherMap API.
kameloso (D)
Two releases were made with new plugins for stopwatch and counter functionality.
Limnoria - robust, full-featured, and user/programmer-friendly bot (Python)
Five releases were made with fixes and documentation updates.
MrNodeBot (Node.js)
Various fixes and cleanups went in.
PBot – a pragmatic bot (Perl)
Many improvements were made to the embedded scripting language Plang and its documentation.
Pybot – an extensible, modular, configurable, and multi-threaded bot (Python)
Version 1.1 was released with cleanups and bug fixes. Unreleased changes include the addition of optional –nick –server –channels flags for convenience.
Sopel - lightweight, easy-to-use utility bot (Python)
Three releases were made with fixes and compatibility improvements. Unreleased commits include the addition of a .chanlist command to show what channels Sopel is in.
Wild IRC-bot – an advanced and scriptable bot (PHP)
Code cleanups were made and tests were improved.
Yetibot - extreme chatops bot for Slack and IRC (Clojure)
Three releases were made with improvements such as dynamic loading of plugins.
Yossarian-bot - an entertaining bot that’s easy to extend (Ruby)
Two new releases include the addition of a server ID to correctly match data files with a particular server.
Libraries, frameworks and utilities
Calculon – library for writing bots and a collection of plugins (OCaml)
Some fixes and cleanups were made.
Communi - framework written with Qt (C++)
After a four year break between releases, version 3.6.0 was published with lots of compatibility improvements and codebase modernisation.
Deno-irc - client protocol module for Deno (JavaScript)
Deno is a new JS runtime created by the creator of Node.js, Ryan Dahl and now there is an IRC library for it!
Grinch - lightly maintained fork of Cinch bot framework (Ruby)
After Cinch was declared unmaintained in 2019, Grinch continues to keep it functional. Small fixes were pushed.
HellaBot - a hella awesome bot framework written in go
Improvements were made to SASL authentication handling, IRCv3 user mode compatibility and documentation.
hii – a file-based client inspired by ii
Handling of NOTICE and PRIVMSG commands was changed to be distinct.
ident-proxy - forwards requests to multiple backend daemons (Go)
Created by Simon Ser to help with running multiple IRC servers on the same machine
irc – a full-featured library (Python)
Several bug fixes and improvements to the docs and compatibility were made.
irc3 – pluggable client library based on Python’s asyncio (Python)
Compatibility fixes and cleanups were made.
irc-framework – for bots and full clients (Node.js)
Release 4.9.0 made it so from_server property is included in action/ctcp/privmsg/tagmsg events.
ircrobots Asynchronous bare-bones IRC bot framework (Python)
ircstates sans-I/O IRC session state parsing library (Python)
irctokens RFC1459 and IRCv3 protocol tokeniser library (Python)
Jess published these projects in spring 2020 and all of them were actively refined throughout the year.
Kitteh IRC Client Library (Java)
Release 7.3.0 fixed a reconnection issue.
Nibblrjr - bot framework for creating custom behaviour dynamically (Node.js)
Various fixes and tweaks were made.
PircBotX – library with IRCv3 CAP negotiation support (Java)
Received a couple of fixes.
Pydle – IRCv3-compliant library (Python)
Fixes were made to IRCv3 tags parsing among other areas.
PyLink - multi-network IRC Services & server-side relayer
PyLink developer James Lu is looking for new maintainers for his ambitious project. More information on the situation can be read in his blog post.
The irc crate - thread-safe and async-friendly client library (Rust)
Some fixes and tweaks were made.
Bridges
BitlBee – gateway to other chat networks
The Facebook plugin saw a new release with a couple of crucial fixes and the main application got build process improvements.
discord-irc
October’s 2.9.0 release brought big compatibility improvements with the Discord API
irc-slack
Alongside bug fixes and refactoring, multi-factor authentication support and a user cache were added.
matterbridge - bridges between a growing number of protocols
This ambitious bridge project had seven releases. Support was added for Nextcloud Talk and Mumble and stateless IRC bridging via draft/relaymsg.
teleirc – bridge to Telegram
Two releases included fixes and the addition of the ability to filter out messages with a configurable prefix.
Services
Taking care of user accounts and channels among other things.
Anope – highly modular set of services
Two releases were made with fixes and improvements to ircd-hybrid and InspIRCd modules
Atheme - for large networks with high scalability requirements
Commits for the next release include adding a silent rejection feature and no subsequent vhost requests feature.