Never tried Slack, so that comparison doesn't help too much :)
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.
Most of IRC is on those 'channels' (#whatever). and most channels (at least back in the day) were public, so you could just go to #books or whatever. For example, I spent my formative years on #uiuc, where there was a healthy community of 50-100 people from the university I was at. Newcomers would stop by on a regular basis and ask a question or just start chatting or troll or even grief--there were kickbans and scripts and bots to help manage larger communities.
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.
Fun fact: slap was a client command that just sent "action" over the channel/privmsg, which would get rendered as something like:
* <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...)
Fun fact indeed! I knew all these things but never how they actually worked. When I was deep into IRC I was a bit too young to understand the technical side of it but I sure knew how to download a lot of warez over DCC!
As far as typical user-experience goes, you shouldn't think of IRC as "an instant messenger with channels as a kind of extra thing on the side". The public multiple-participants ongoing conversations in channels are the primary thing an IRC user is involved in. Direct private messages to a single other user are the extra-thing-on-the-side.
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?