I’ve written about my views and demands on the future Instant Messaging Client world several times. It’s a fact for me that the common Instant Messenger protocols and applications are not suitable for my needs. Maybe I represent the power-user group, maybe not. But without doubt the limits of ICQ and MSN are reached.
1. The Problem
Every available Instant Messaging protocol was designed to be used by one user at a time on one machine at a time. Since mobility is becoming more important these days slowly but surely everybody will reach this protocol given limit of one login at a time.
For example: When you log into ICQ on one machine. And then on your smartphone you do the same. Only the last client that logged into ICQ stays logged in. But why? Because the protocol and the server infrastructure is not designed to handle multiple logins.
2. The Goals
The goals are:
design a comprehensive architecture to extend given instant messaging protocols (ICQ,MSN,…) with multi client capabilities
implement the architecture platform independent
create a specialised platform independent client to make it feel good (*g*)
If you want to join us. Feel free to mail.
4. The Architecture
I told namenlos about my problems with the instant messaging world during a dinner last week. And he came up with several great ideas. We took the chance, went to the office and started the brainstorming.
First we looked at all the protocols once again. And Jabber seemed to provide a quite good base for further thinking. But there was another idea. More simple. Maybe even easier to implement.
4.1 Plan A
in few words:
- take Jabber as initial point
- create some kind of Jabber “NAT” / Jabber Proxy which represents a Jabber client to the rest of the Jabber Network
we scribbled it on the whiteboard:
4.2 Plan B
The second plan is based on the IRC (Internet Relay Chat) idea which is described in RFC1459. Namenlos had the idea we could take a standard IRC Server and implement the Instant Messaging Protocols like ICQ,MSN,… as Modules.
After some brainstorming we realised that it should be possible to map all the Instant Messaging Features like Buddy-List, Chat, Chat-Conference, Filetransfer,… to the IRC idea. Query for Chatting, Channels represent the Buddylist. Even the synchronised chat across multiple clients would be possible. Filetransfers would become DCC….you get the idea.
This is our Whiteboard for this idea:
Shortly after the brainstorming I started the Implementation of an IRC Server. Because we wanted a platform independent Implementation I decided to use .NET and C#. Since there is a .NET Framework for all Windows Operating Systems and Mono for all unixoid Operating Systems we got what we want. Even more: With Visual Studio we have a great development environment. (Well actually Namenlos won’t use Visual Studio…but at the moment the major part of the code is made in Visual Studio 2003)
When I started to write the first lines of code I thought about possible names. We started on the whiteboard with “Projekt Buffen” (don’t ask!) … I thought that “Jabbernaught” would be a great name… and after some Skype-Sessions we both thought that “multeem” would be a great name for the baby.
After some days of implementing I am proud to present the first sourcecode package: Multeem01src.zip (61,54 KB)
This version of multeem implements an IRC Server without any Server 2 Server Communication and a load of bugs especially in the Channel Management. See it as a first prototype for the IRC Implementation and as a base for the future development.
7. The License
We release this and the following sourcecode packages under a BSD-like license (see license.txt).
8. What now?
Please comment and criticise our plans and ideas. Feel free to ask anything you would like to know. If you are interested in helping us in any way feel free to contact us.