Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

An IRC server is extremely minimal. It:

- keeps a list of nicknames<->IP sockets,

- keeps a list of channels, which nicknames is in what channel, and the mode of each nickname in the channel (operator, etc.). First join command to a channel creates the channel and sets the creator with operator privileges.

- when a command to send a message is received (which must specify a channel), it forwards the chat text to the appropriate sockets based who is in the channel.

That's it. Honestly it's about the least you can do to turn TCP into a multiuser chat protocol. Because of this minimality, IRC was able to handle hundreds or thousands of simultaneous users on 1990 hardware.

Channel operators can kick malicious users, set topics, etc. Again, when you create a channel, you're op. An operator can give operator privileges to other users, so it's possible for a channel to have multiple ops and they can look out for each other - if connected.

When your TCP connection to IRC ends, classic IRC forgets all about you. If all channel operators lose their connection, then your channel may be opless and you might lose control of it. A classic IRC server is not like a modern chat server, it keeps no database or persistent record of chat text, nicknames, or channels. So you can't log off and back on and get your chat history, look at messages in the channel while you were gone, or get automatically joined back to the channels you were part of, or "own" channels. That was all offloaded to the client.

Eggdrop was a program that would let you create an IRC bot - you would run this on your early 90's UNIX shell account you got from your university and it would stay connected when you weren't dialed in. Eggdrop will connect to the IRC server you tell it under the nickname you provide, join the channels you tell it, and then sits in the channel.

You can give it op privileges, and would basically occupy the channel so it would not get taken over. It could also be set to auto-op people who joined (you could talk to the bot via IRC and authenticate). It was also possible to create multiple eggdrops that worked together and would look out for each others channels (a botnet) - ideally you would have multiple running from different IPs such as your friends from different universities.

Eggdrop could also talk in the channel, respond to chat text in the channels, and provide access to files or memos.

You could also telnet into the eggdrop directly and manage it, and talk with others on any botnet you setup. So if a channel or IRC server was being attacked or down, you had an out of band way to talk.

Most modern IRC servers have "NickServ", "ChanServ" services that provide things like persistent users, channel ownership, and such, but that didn't come around until the 2000's I believe. You might still use an Eggdrop to do IRC games or file distribution.



Excellent description. I haven't thought about IRC since I was a kid (and not a software engineer). This brings about beautiful nostalgia and new found sense of elegance.

Fond memories of staying up late into the night.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: