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

Posts tagged with 'irc'

How IRC can change the world

A list of ways IRC can be utilised to replace closed systems;

Game networks and friend lists

I was reading this reddit comment about developers moving away from Steam as a content delivery platform. It ended with the sentence:

I hope everyone loves having 6-10 logins, friends lists, etc. because that's the land we're in now.

If I made a game, rather than (or in addition to) using my publisher's friend system (like Steam, or Origin/EA etc), it wouldn't be difficult to build an open system based on IRC.

You give the user an option for IRC details (a server, a channel and a password). You share these details with friends (you could have multiple servers/channels to keep groups seperate if required) and then, each game client that listens/posts to that channel can keep it's friends list updated.

It would be easy to implement/support:

  • Who is online (the nature of IRC shows who has joined/left the channel when they launch their game client)
  • Away status can be used to show what's being played e.g. /away is playing Civilisation IV (click here to request to join)
  • It supports chat, obviously
  • We could develop a convention/standard for invites/alerts that would work cross platform
  • This IRC server could be self-hosted, or a default provided as part of the game client (which would allow larger communities to discover each other)

Problem #5891 solved.

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:

IRC in Glasgow in 2019

This is a account of how I'd like to see IRC used to bring together like minded communities in Glasgow in 2019 in video format.

I'll create some fictional channels/examples to illustrate what could be possible and show how users from different groups might interact.

You can read more about IRC, and why I think it's a good choice on my blog post "Make your own privacy".

Points to describe in a video about how to use IRC

  • Connecting to a server
  • Listing what channels are available
  • Joining channels
  • Creating channels
  • Using services
  • Channel modes, operators and banning/kicking users

Points to describe in a video about why to use IRC

  • Freedom of censorship (if you can't do what you want to do, then create your own network)
  • Redundancy. Multi domain name availability; for example, if you connect two servers together irc.glasgowskeptics.com and irc.humanism.scot then those two communities can interact and if something happens to one group i.e. their website expires, then the community can still exist - each time a connection is made the Message of the Day (MOTD) informs the user of alternative ways to reach the server if needed.
  • Ownership of data, it can be as open or as private as you wish

Points to describe about how to use IRC for the geeks/advanced users

  • Creating bots and importing information into channels
  • Using services for authentication/administration
  • Development of IRC services

Videos to follow.

My Website in 2019

It frustrates me when I see businesses or interest groups that focus their entire online presence on one platform that they don't control.

"Join our Facebook group to find out more!" or "Follow us on Twitter for updates!"

Then, once their group has grown to a certain size, they find out that they are only able to reach 10% of their audience unless they upgrade to the premium package, or pay a fee per 500 users and they have no option but to capitulate or slowly try to move their users to a new platform (which might not even be possible if you can't reach the audience in the first place).

Not to mention the censorship that some groups may face, whether that's objections from inside their own group, or clashes with the site-wide policies of whatever company they are using to host their communications.

The advice in 2019, is the same as the advice from 2005. Your website should be your main point of contact no matter if you are business, a community or if it's a personal page.

Once someone has been directed to your site, there you can point them to your Facebook, Instagram, Twitter or whatever social media you are using this year.

I'd recommend the addition of one extra line though. Something like:

Reach us on IRC at #yourgroup on irc.yourdomain.com

Then, in this channel, you can summarise the activity on the rest of your platforms in one place:

  • Whenever you, or someone in your approved list tweets, it's summarised there
  • Facebook posts from you or your list can be posted
  • An overview of updates to blogs or forums of interest
  • New posts to Instagram, reddit, or whatever other sites you use can be announced

This information leads to discussion and the instant nature of IRC allows the community to develop in ways that are much more difficult to achieve on forums etc.

Due to the nature of IRC you can immediately see who's active in your community and it bypasses the restrictions on contacting your customers/community introduced by the GDPR because you aren't emailing this information, and instead, the users are coming to your channel precisely because they want to be informed of what's going on.

See also A fictional case study of IRC in Glasgow in 2019

Return to index