Armchair Scientist Blog Thoughts on an open internet (and IRC!)

Make Your Own Privacy

If your privacy is in the hands of others alone, you don't have any.

The web is built on open standards and there are many ways to communicate freely and securely, but due to the proliferation of social media companies, almost no one outside of the geek communities seem to place the importance I do on controlling their own data and not being beholden to a proprietary, profit driven third party for their basic communication needs.

There are a number of promising free technologies we should be looking to embrace. Among them are Mastodon (joinmastodon.org), an open source version of Twitter, and PeerTube (joinpeertube.org) a decentralised video platform. Here though, I'd like to talk about a platform that celebrated it's 30th anniversary last year; Internet Relay Chat - IRC.

IRC

Internet Relay Chat isn't an product like the links above, it's a protocol that facilities communication in the form of text. You can choose from a list of servers to host it, and a list of clients to access it, or you can create your own.

As you may already know, IRC is basically a system of big group chats (called channels) all represented as hashtags i.e. #glasgow or #cookingrecipies (two decades before Twitter popularised usage of the term). It allows people to join or leave these channels, the channels can be private, or public, topics can be set, ban lists and rules can be enforced or relaxed, everything you'd expect to enable communities to come together and discuss.

By design, IRC doesn't store the chats, it has a number of caveats and limitations and there are some better options out there... That all said, IRC is free, it's been battle tested throughout the years - it does the one thing it sets out to do reliably and well plus it's extendable - it's a great platform to build upon.

Network layout

First, lets compare IRC to Facebook (or any third party company like WhatsApp, Twitter, Discord, Slack etc - they are all the same). This is what Facebook looks like from a very simplified network point of view. All communication between two Facebook users is routed through a Facebook server. The cloud here represents one, or multiple servers:

Facebook user graph

The path in orange shows how messages are sent between two Facebook (Messenger) users, i.e. to Facebook, then back to the user. This allows Facebook to monitor the messages for marketing purposes as described in their terms and conditions.

IRC operates identically by default (especially for the channels which are synoymous with group chats):

IRC user graph

The difference here is that IRC supports Direct Client-to-Client protocol, which means, if clients choose to (clients in this context means the program a user uses to connect/chat with on IRC), they can use the server only to facilitate their first introduction, and then all subsequent communication is done directly from client to client, bypassing the server and providing much greater privacy - something that isn't available in any of the other popular platforms. This is illustrated in orange:

IRC user graph

This direct communcation can be further encrypted (in addition to SSL) using any methods the clients can agree upon, and, as this is a direct client-to-client connection, file and data transfers occur at the maximum speeds both parties can support.

Other servers can be connected to the network and secured using a common key (an SSL certificate or similar), and those users can use the server to facilitate direct communcation from one server to another:

IRC user graph

In this example, the green line represents two IRC networks (or servers) that have been linked together (and therefore share a common configuration and private key). Users can be connected to (and only aware of) one server, but still be able to make direct and secure connections to users on any other server that is also connected to the IRC network they are using. In the above example in purple, two users can communicate directly without being on the same server.

Redundancy

When a connection is made to any server in the network, the Message of the Day (MOTD) can display a list of the URLs of the other servers in the network - clients can be configured with that list of servers so if anything happens to the current connection/server, it can reconnect to an alternative address transparently in the background.

This ensures redunancy - if anything happens to one of the servers (or domains) then the network will still continue to exist. More servers can be added at any time.

This network topology can be easily deployed on basic hardware to support tens of thousands of users and the bandwidth and resource usage is negligible.

What now?

Come join us using any IRC client and say hello. Connect to irc.armchairscientist.co.uk port 6697, there are more detailed instructions here: https://irc.armchairscientist.co.uk

You can also use the guest web login available at https://irc.armchairscientist.co.uk/guest/

Some related posts:

Return to index