If you are new here, read my selection journey post. First of all, sorry for the huge delay in this blog post. Due to some unexpected time commitments, I had been really busy for the past couple of weeks. I couldn’t get much done in this time, but thankfully, I am not lagging as much in the coding scene. So, let’s begin.

Ever wondered how instant messaging works?

At the very least you need a server somewhere and an app to communicate with the server. So, what happens behind the scenes, what type of requests are sent over the network from the clients to the servers? Well, there is nothing special about the requests themselves, it’s just that there are certain rules that both the clients and servers adhere to while communicating.

So, where does XMPP fit into it?

Well, one such set of ‘rules’ that the servers and clients can choose to adhere to is XMPP(eXtensible Messaging and Presence Protocol). Unlike applications like Whatsapp, the XMPP standard is open and can be used in any server or client, as it is just a set of rules accessible to everyone. You can even host your own XMPP server, create your own XMPP client and have a homemade IM application, which will be compatible with any XMPP based IM application and server.

Fun fact: Whatsapp originally ran on ejabberd, a XMPP server. However, they switched to a modified version later.

Ok, if all is so great in XMPP ecosystem, how come I have never heard of it?

First is the business aspect of IM applications. All IM applications want to maximize user retention. They can’t afford to have an easy way for users to switch from one application to another. But, more importantly, the original XMPP specification was written at a time, when IM on a phone was simply not feasible. So, how do we solve the problem of staying relevant when applications like Whatsapp have full control over each and every aspect of these ‘rules’ and make changes instantly across all their servers and clients seamlessly? Here comes the extensible part of XMPP. It is a ‘living’ protocol, in that, there are frequent additions to XMPP using extensions(also known as XEPs) like multi end-to-end encryption, keeping it relevant. These additions are done by regular people like you and me, who want an open alternative to the proprietary walled gardens of other IM applications like Whatsapp. However, just writing a document is not enough to actually have it implemented in all the varied servers and clients that come under the XMPP umbrella.

Here is where my project comes into play.

Currently, Conversations.im offers a command line tool to check which of these new extensions are supported by a server. Through this project, I am taking that project to the next level. I will work on turning it to a web service. Moreover, I will add these features:

  • Running periodic tests on XMPP servers
  • Visualizing historical data for the test results
  • Generating badges showing the test results.
  • Sending periodic reports and alerts to subscribers about their XMPP server
  • Information for the server admins on how to have those XEPs implemented, if they are using popular XMPP server softwares.
  • General improvements to the codebase
UI mockup
UI mockup

I am very happy to contribute a tiny bit to making the life of XMPP server admins a bit easier. Stay tuned for weekly updates.

P.S. : This blog post was a bit rushed. Here is the link to the project’s repository: https://github.com/iNPUTmice/caas