Staying Always Online in IRC using Riot - The Right Way™

Credits: Josh Riemer on Unsplash

IRC (Internet Relay Chat) online chat protocol has been in use since 1988 which makes it the veteran among all chat systems available today. It is a network of large chat rooms. Each room lets members talk to one another across the world. The most appreciated strengths of IRC’s is the decentralized and open architecture, making it easy for anyone to participate by running a network of their own. Also, the protocol being simple, it is easy to extend and run bots on IRC. Though IRC usage has been in decline since the 2000s, it is still widely used across many open-source communities.

But on the flip side, IRC’s usability is a major concern. Most of the IRC clients aren’t always intuitive to new users, and the major annoyance — IRC requires you to stay connected to the network always, else you miss messages.You may have noticed some groups of users who seem to always available in the channel, each time you connect. Do you think they are really sitting in front of their computers with their IRC clients all day?

Nope. There are many solutions to this, including running WeeChat (a terminal based IRC client) on a tmux session on a cloud VM, or a full-fledged bouncer like ZNC. Still, they are not intuitive enough. They need special, non-portable software to run and no good mobile interface. Really does not meet the needs of the 21st century.

Enter Riot!

Riot is a modern chat client for a newer decentralized chat protocol called the Matrix protocol. Matrix is a decentralized, secure messaging protocol using HTTP / JSON APIs, is capable of sending and receiving messages with full end-to-end encryption, supports WebRTC VoIP/video calling and offers integration capabilities. Matrix integrates with IRC servers and other communication protocols.

Riot is a cross-platform web and desktop application that allows you to connect to a Matrix home-server (including the server at Matrix.org). This effectively means that meaning you can use the Riot client as an IRC bouncer. Matrix by default has servers bridged with Freenode, Mozilla IRC, and more. This lets you use Riot as a persistent client that keeps you connected to IRC Seven when you’re not there.

Riot is available at a web-app as Riot.im. Desktop and mobile applications are also available.

IRC with Riot

Riot currently integrates with eight IRC networks: Freenode, Moznet, Snoonet, OFTC, GIMPNet, Foonetic, Rizon, and EsperNet. You can join any channel with the notation #freenode_#channelname:matrix.org Alternatively, you can search and join a channel from the interface itself. Many IRC channels require registration, for which you need to register to Matrix.org first.

Riot.IM desktop app

Your IRC nick will be similar to your display name in Riot with an [m] appended to the end. However, after you connect to a channel, you can change your nick. You’ll need to initiate a new conversation with the IRC app service of the Matrix home server.

The following instructions are for Freenode, but it is relevant for other networks like GIMPNet or Mozilla IRC as well.

Start a new chat with @appservice-irc:matrix.org. To change your nick, send the following message to the bot:

!nick irc.freenode.net <IRC nick>

Authenticating with NickServ

If you want to use your registered IRC nick or are a member of invite-only channels, you will need to authenticate yourself to NickServ to be able to use your nick.

Direct message on Riot

Open a direct chat with @freenode_NickServ:matrix.org. And send the identify message

IDENTIFY <username> <password>

Remember that this password will be logged as plaintext in the chat history. If for some reason you are disconnected from the IRC network, you will need to re-auth again. However, you can store the password.

Start a new chat with @appservice-irc:matrix.org and send the following message:

!storepass chat.freenode.net <username>:<password>

This will save your password with Matrix.org servers and will be automatically used on a reconnect.

Conclusion

Riot is the chat client for the 21st century. You can move across devices and still not miss any conversation. And not only IRC/Freenode, but it also allows integration to many other networks like Gitter.