Comparing Icecap to other protocols
Icecap is primarily a protocol for implementing a client-server architecture IRC/IM client. As far as I know, there doesn't exist any other protocol with the same goal.
Partially overlapping functionality is provided by:
All of these primarily just want to group several instant messaging protocols together and let clients access them in a unified way. Their idea is that instead of clients having to support 10 different IM protocols, they can just support one. The clients however still have to implement all the other functionality themselves.
Although Icecap also provides the same IM protocol unification, it also offers (or will offer) many other things:
- Event logging with search functionality, allowing clients to have unlimited scrollback functionality
- Configurable event tagging, allowing various forms of ignoring and highlighting
- Storing/retrieving client configuration, allowing near-zero configuration of clients when eg. running one at your friend's home
- Guidelines for client configuration, allowing inter-client communication between different clients. The most important benefit of this is that all the clients can know which messages you have read and which you haven't. After a full day of chatting with one client at work, your home client isn't showing tens of private message windows as being unread or showing highlights of messages you already read hours ago.
- User configuration, allowing implementation of notify lists and in general making it easy to talk to users no matter what nick or protocol they're using at the time you're chatting.
- Permanent manual event tagging, allowing for example bookmarking messages or entire discussions
- Generic question/answer dialogs between Icecap server and client
- File transfers between Icecap server and client
IRC protocol is also converted into something that's much more easily manageable:
- Request/reply pairing commands, so you can easily eg. ask a WHOIS on someone
- Converting numeric error messages to error strings. Many numerics are used for different purposes by different IRC servers, while error strings are always unambiguous.
- Netsplits/netjoins are marked as such to join/quit events
- IRC-server specific features are automatically used internally when available, eg. WATCH is used for checking when users come to IRC instead of ISON polling
Since Icecap is primarily a client implementation protocol, support for non-IRC protocols could just as well be implemented by supporting one or more of the IM-grouping-protocols.
I've been thinking about making XMPP the primary protocol for Icecap servers to talk to each others.