Serverless chat to reduce office distance
This idea comes out for an old university-time idea: to write a serverless chat application. Of course, I’m aware of the complications and the problems that using Broadcasting could create, so this problems would be took in consideration by design.
But why now? I was thinking of a way to reduce the “office distances”: making easy to connect with a person who works in your own office. I know, it sounds a bit “creepy” to depend on an application to do that. After all you could just stand up and go to the colleague’s desk. And that’s what I’d normally do: nothing impossible.
But I can see that this is not always the case for every personality, and, sometimes, I fall in the same “shyness” (since in UK, no one believes me when I say “I’m shy”, but I actually am: I just use jokes to relax and break-the-ice). So months passes by, you never learn the name of some colleagues and so on. After all how many times you work in projects where more than 10 people are involved?
Acceptance-less
A system like this could explicitly avoid concepts like “accept a contact in your contact-list”: the contact list would be the list of all the clients connected to the network, no one excluded. I know you could probably do this kind of stuff configuring accordingly some server chat, but you need:
- Infrastructure, set up by an IT department
- Maintenance, provided by an IT department
Both this things are normally very rare resources to have in a classical office environment. IT is always evil
. Am I not right?
Cross platform by design
I have in mind Qt as the framework to build something like that. It already covers the most of the desktop environments, and it can be set to integrate nicely. Not like Java.
Features? No, for now brainstorming
Yeah, I could start to write a long list of all the features I think such software should have, but this post was more to ask the micro-crowd that reads my blog “what do you think of such an idea?”. Any idea will be took in consideration.
Features
Ok, that’s what I have in mind for now:
- Acceptance-less contact-list (I believe that’s a core one)
- Chat layout built into a WebView: styling through plugins of CSS(3) files
- Drag and Drop file-transfer (no-passthrough-server: imagine the speed on a lan!)
- Encryption: communication can be encrypted, encrypting the socket traffic one has opened with another client
- Position: this could be like a “status” info, but allowing the person to pin him/herself on a Office map, so that can be easy to find
Please advice for more
And after this chat?
Just stand up and go there: it’s not like your colleague is going to harm you or something.

about 1 month ago
Hi Ivan,
no broadcasting needed for actual communication, just relying on multicast DNS for nodes discovery (Zeroconf, or Bonjour in apple-land) is enough, check out Link-Local XMPP: http://xmpp.org/extensions/xep-0174.html
Since it’s XMPP I guess you can use all the cool stuff on top of it, audio and video calls via jingle, end-to-end encryption, and whatnot; I haven’t tried such advanced uses tho, I just use it to chat on the lan.
There are already IM clients supporting this; it’s curios I’ve been thinking about blogging just about that lately, maybe I should really do it. Let me know if you need more details.
Take care,
Antonio
about 1 month ago
I was sure someone would have had something great to suggest.
Please, Antonio, pass me anything you believe could help me to understand more about what you mentioned.
Thanks a lot.
about 1 month ago
Reading about XMPP in Serverless mode, I see that this kind of usage is a sort of “specially crafted client”, where Zeroconf and mDNS is used in conjuction with the XMPP protocol.
But XMPP is solely used for the messaging, so I could mix Zeroconf with something handcrafted for the messaging.
Not sure. I’ll try to compile Avahi, that seems to be the most “known and stable” opensource implementation of Zeroconf, and take it from there.
about 1 month ago
Sure, you can build your own custom system on top of Zeroconf, for fun and to learn stuff, just don’t fall in the Not-Invented-Here tunnel. In the end I’d suggest using an already existing solution.
Some IM clients have Link-Local XMPP already: iChat should support it, pidgin (and maybe other libpurple based clients) does, the teleapthy framework used by the GNOME DE also has good support for it. You can even get it to work on MS Windows.
I am collecting some links for the blog post to come. I’ll ping you here when it’s up.
about 2 weeks ago
Here it is after almost a month:
http://ao2.it/en/blog/2010/02/22/extremely-brief-survey-link-local-xmpp
maybe not exactly what you were expecting Detro, but still…
about 2 weeks ago
Thanks to take the time to post back here Antonio.
I already started to take a look to your post.