[this document is from 1993 approximately, but is still true in many points. of course file sharing and IM technologies have come closer to the goal in the meantime, but still not close enough!] REQUIREMENTS (marked with a ?) & SOLUTION SUGGESTIONS (marked with a !) *** end-user simplicity (?) Nowadays we need a system that's easier than a phone: click on a channel name in WWW and a chat window pops up. The protocol must be an infrastructure permitting the biggest variety of trivial solutions. (!) URLs! Replace the builtin directory services with the URL concept. This I think is a fundamental issue which simplyfies things greatly. Once a person and a channel has not just a one-time identifier, but a long-term URI, thousands of ways open up for people to get in touch without the need of having them related with the protocol. How does it work: A person's or a channel's URI is a pointer to a server which simply holds information about this person. The server doesn't relay for the person, it just tells where the person currently is. Truly simple, yet no protocol does it like that. *** what to do with the global database? (?) IRC spends most of the time updating its database. How can we free ourselves from this? URLs? (!) Yes URLs!! Once we have URLs we can put them in our homepages, signatures, web-based databases, even in books! Noone will miss the /who command. (?) I can't imagine finding people without the /who command. (!) Well you can still have /who for the people around you and the people on your favourite servers, but an internet-wide /who is crazy anyway, and that's what IRC has always been trying to do. no, it's better to search for an interesting person's web pages, emails or news postings and then add their URL to your contact list. +++ suitable for business: secure & stable (?) No more hackable channels and stuff. (!) No centralistic structures that make anything depend on anything else. Let the "clients" communicate directly, keep routing on lower layers that cannot interfere. Then again, if it's better to have your server route everything in your channel, you can configure it that way, too. It's a per-channel design choice. +++ open for future developments/protocols (?) Today we have the worries of TCP, UDP or Multicast IP. Tomorrow we could be running on incredible new protocols. (!) Why provide *one* multicasting subprotocol if we can sort-of define an API on how to handle several types of transport mechanisms? Say network object URI is accessable by the following set of protocols (mcast:URL, udp:URL, isdn:URL). Total flexibility. +++ open for multimedia (?) We can't make a protocol that can't gif or video! (!) That doesn't mean we have to implement real-time protocols. Others are doing that for us. We just need to provide the one true conferencing control that glues all protocols together and gives a person a true network identity independently from the protocols he can currently handle. But additionally to that, we can provide a default subprotocol which supports content-types - so you can start chatting in text/html or text/x-moo instead of just having IRCs text/x-ctcp. +++ centralized ergo programmable channels (?) Everyone wants to have his own fancy extensions and features to a channel, therefore everyone wants to run a bot. A bot is bad. Why? Because the IRC protocol can't deal with it. A bot shouldn't consume *any* resources except for when it's being used. (!) Seen from the URI approach, the server answering at the URI can be a "bot", or a system of "bot" programs. Since every time someone wants to join a channel he depends on the server to tell him who the people are (including hosts and protocols) the server can implement all the channel access politics he wants. The subprotocols should ensure the ability to centralize channel control (although chat is multicast of course). No more channels out of synch!! Just imagine: You could hack up a channel program which does democratic voting in the channel before letting someone in - and you won't need to upgrade >100 servers on the planet!! +++ answering machines (?) Of course we still want /notify (!) But this time we do it better. This time the server that responds to a persons URI can hold pending "NOTIFY_ME" requests from friends till the person logs on. No more polling!! Additional freedom: You can have all the personalized commands and away messages you desire (and remember: they could be audio files!). +++ seperate infosystem from transfer protocols (?) To make it clear: We need to distinguish the pursuit of contacting a person or joining a channel from the actual communication. They are two totally different things worth having different protocols! (!) When I say server I'm really talking about something a bit more intelligent than an httpd, but not actively internetworked with other servers. The new situation demands that whatever there will be to multicast the communication, it shouldn't be the same thing which does the politics of it (channel control etc.). POINTS OF CRITIQUE: You might think it's risky to depend on one machine to have a network identity. Yeah well.. (a) on the web we're doing it all of the time (b) I can still think of "multiple channel authorities" if implemented properly - not the irc way - and similar things for persons. Another thing is, this may sound like putting a lot of intelligence into the client. I think it *can* be that way if it's *useful* that way.. but most of the time I like to think we can have "user-agent servers" which do the hard networking job (handling multiple protocols, talking to many servers, etc.) while letting user interfaces just do the display-part of the job. In the end it could optionally emulate an IRC server so we get a smooth transition by letting plain IRC clients in, too. == 2003 remark: psyced is available and does just that! :)) http://www.psyced.org THE DREAM: There should be no need for any other conference control protocol in the internet. Once it's clear how you find out things about people you can implement thousands of ways to actually get conversation going -- makes things extremely easier to coders! They just code the multicast layer with a lot less worries. THE FUNNY THING: I believe a chat system using direct client-to-client links would already be a step forward out of the IRC swamp. But of course I won't mind a good multicast infrastructure! ;-)