RFC 1459, IRC : Current problems


9. Current problems

   There are a number of recognized problems with this protocol, all  of
   which  hope to be solved sometime in the near future during its
   rewrite.  Currently, work is underway to find working solutions to
   these problems.

9.1. Scalability

   It is widely recognized that this protocol does not scale
   sufficiently well when used in a large arena.  The main problem comes
   from the requirement that all servers know about all other servers
   and users and that information regarding them be updated as soon as
   it changes.  It is also desirable to keep the number of servers low
   so that the path length between any two points is kept minimal and
   the spanning tree as strongly branched as possible.

9.2. Labels

   The current IRC protocol has 3 types of labels: the nickname, the
   channel name and the server name.  Each of the three types has its
   own domain and no duplicates are allowed inside that domain.
   Currently, it is possible for users to pick the label for any of the
   three, resulting in collisions.  It is widely recognized that this
   needs reworking, with a plan for unique names for channels and nicks
   that don't collide being desirable as well as a solution allowing a
   cyclic tree.

9.2.1. Nicknames

   The idea of the nickname on IRC is very convenient for users to use
   when talking to each other outside of a channel, but there is only a
   finite nickname space and being what they are, its not uncommon for
   several people to want to use the same nick.  If a nickname is chosen
   by two people using this protocol, either one will not succeed or

   both will removed by use of KILL (4.6.1).

9.2.2. Channels

   The current channel layout requires that all servers know about all
   channels, their inhabitants and properties.  Besides not scaling
   well, the issue of privacy is also a concern.  A collision of
   channels is treated as an inclusive event (both people who create the
   new channel are considered to be members of it) rather than an
   exclusive one such as used to solve nickname collisions.

9.2.3. Servers

   Although the number of servers is usually small relative to the
   number of users and channels, they two currently required to be known
   globally, either each one separately or hidden behind a mask.

9.3. Algorithms

   In some places within the server code, it has not  been  possible  to
   avoid  N^2  algorithms  such  as  checking  the channel list of a set
   of clients.

   In current server versions, there are no database consistency checks,
   each server assumes that a neighbouring server is correct.  This
   opens the door to large problems if a connecting server is buggy or
   otherwise tries to introduce contradictions to the existing net.

   Currently, because of the lack of unique internal and global labels,
   there are a multitude of race conditions that exist.  These race
   conditions generally arise from the problem of it taking time for
   messages to traverse and effect the IRC network.  Even by changing to
   unique labels, there are problems with channel-related commands being
   disrupted.