If so, does that mean that IRC is basically like instant messaging along the lines of AOL Instant Messanger, or Google chat? Or is there something that makes IRC very different?
If so, does that mean that IRC is basically like instant messaging along the lines of AOL Instant Messanger, or Google chat? Or is there something that makes IRC very different?
To whom does each message get sent? This is where channels come in: a "channel" is just a list of currently connected people, and the server relays every message sent to the channel to all the people who's in it.
You can also open "private consversations" (i.e.: channels between only you and another person in the server).
From this very simple model, new features where added over time. Most notably:
- Very early on people realized that trolls are annoying. So... whenever a chanel is created, the first person to join gets "operator" status and can kick other people from the channel, silence them, etc. They can also make other people operators.
- Some severs are federated to form an "IRC Network" (like freenet). These servers are relaying messages between them. For end-clients, it should not matter to which of the servers in the network you are connected to. Federation only works between servers on the same network (there's no federation between networks!).
- Some networks created a small layer of authentication. You can "register" your nickname so the network won't allow other people to use it. Furthermore, you can "register" channels so when they get created the first person to enter doesn't get operator status. The network will only grant such status on that channel to whatever (registered) nicknames you specify, etc.
On this basis, people started creating bots to:
- Build archives of conversations (remember that all of this is ephemeral!)
- Auto-reply to certain "messages" in certain channels.
- Whatever else crosses your mind it has probably been done at some point. IRC is old ;)
The difference over something like AOL is that IRC is more open. Anyone can run an IRC server, so there was a lot of niche irc networks.
https://freenode.net/ is a popular IRC server for various open source communities.
They all require a server to relay messages.
IRC is "very different" in the sense that it's more open and more freewheeling than, say, Slack. Slack is basically IRC with a slicker coat of paint and more monetization.
But I think I'm getting the idea now. It's a similar idea to a typical instant messenger, except that since the protocol is standard, you have federation that actually works, much like someone who uses gmail can email someone else who uses yahoo.
Plus you have the concept of a channel, which seems to have no direct analog in a typical instant messenger, but seems to be essentially a persistent chatroom that doesn't vanish even if nobody is in the channel at the moment.
Is that about right?
Also these persistent channels are created just by joining the channel with that name; they disappear when the last person leaves. Notably, the first person to join a chatroom gets "operator" status, and thus the rights to change channel settings and kick/ban people etc. So there evolved a culture of bots, who would sit in channels with op status and 'occupy' it in case someone came along; these bots had op status themselves, and were programmed to auto-ban certain users or even domains, and auto-op their owners and their owners' friends. slap me summa dat +o.
And of course, there were the bot wars and the attempts at deliberate netsplits to try and steal op status, which were fun games for the script kiddies, but would really take the piss out of your evening chat when they would come by.
shifto slaps rabidrat around a bit with a large trout
* <nick> <action text>
More generally, on most clients you could use "/me <text" command to do the same thing. And on the protocol level, it was done by a mini-protocol on top of IRC, called DCC (direct client-connection), that would look like:
PRIVMSG #channel :^AACTION text^A
(where "PRIVMSG #channel :text" was a way to send a normal message, and ^A is Ctrl-A).
DCC was also used as signalling for file transfer. Clients wishing to send files would open a high-end port on their machine and send a DCC message with the file name, IP and port to connect to (similar to active FTP).
(yes, I spent an inordinate amount on time on IRC...)