Friday, February 5, 2016

Reflections on the XMPP Summit 2016

I 've been writing most of this in the airplane. I have to because my head is full of ideas and new thoughts are buzzing! Now I finally had the time to write the last bit and parts which was stuck in my brain.

So I arrived in Brussels Last Wednesday (27th Jan.) so I could get up early the next day for the XMPP summit. We were split out on different hotels, so it was a bit messy and I though I had to be by my self all Wedensday night, but happily +Winfried Tilanus showed up for a couple of beers and so the XMPP discussion and summit began... Yeah!

The Summit

The Summit started thursday and we were not many but the discussions and presentations that where there was really good and very relevant for the future of XMPP. Even though my head was not that fresh (thanks for the beers +Winfried Tilanus - fun as always) - I quickly got psyched about the agenda. +Kevin Smith  banged the gravel, lead the  and we began the summit..

+Dave Cridland started out by presenting the account model (PAM) and an intro to  MIX (see XEP-0369: Mediated Information eXchange (MIX). I really like the idea behind mix: to have a context around a mediating service where you can subscribe to multiple types of nodes, like: message, presence, participants etc. It really serve as a multi purpose service, but a low hanging fruit to take would of course be MUC (multi user chat) - which would be easy to model through MIX and Pub/Sub (

After some longer discussions about MIX, Winfried then talked about his new and potential huge project regarding the mental health industry and XMPP. Very inspiring to hear about new real life projects coming up. I like the idea of open communities, open distributed data and social network.. It seems like a rather huge task, but an interesting one! :-)

During the friday we started discussed about making faster reconnects from the client to the server and making fewer roundtrips.. I and many other know that a few implementations already do all kind of tricks to make it simpler and faster - but this was about to standardise it.

We then started to talk about the never ending story: end-to-end encryption (E2E). We talked a bit how to tackle this subject for a while and then +Dave Cridland  threw in an interesting idea. He's been reading up on some papers and discussed with some security people about a crypto system called Proxy re-encryption. He proposed the idea and showed how it could be used to sole the E2E problems in XMPP. It was really interesting but also state-of-the art. I personally hope that some will implement it and try it out this year even though no standard exists yet.  As I recall it, this solution would be working if we will start to use PAM and move the account state to the server and not the client. So both PAM and Proxy re-encryption is quite new, we won't probably see it before the end of this year - but hopefully people will start to experiment!

After E2E and MIX we then split up and talked a bit the two biggest issues at the summit: MIX (again) and E2E encryption and the different mechanisms. I followed the E2E discussion where we taked bit about OTR and OMEMO and how it would fit in different scenarios. I am not that into crypto standard, so I did not contribute that much, but I followed the discussion with quite an interest.

So besides the official summit talk which I alway love to mingle and to be inspired. So under the summit I started to implement the push notification extension for the Tigase server - something I actually needed ad something that was not still available for Tigase. It's almost done - and I'll make a PR to the tigase people when well tested so you guys can enjoy it as well. :-)

I also mingled, talked and got inspired from the really nice guys from mongooseIM (+Michał Piotrowski  and +Nicolas Vérité ) and +Tobias M. We talked a bit about clustering, load balancing and load testing in XMPP systems, because its a bit of my favourite topics for XMPP. My idea was just to make a very simple load balancer based on the from attribute in the initial stream. This would at least put every of your clients onto the same server and reduce the traffic a bit (cluttering wise). I also have a customer which only uses communication between its own clients (IoT) and here if I put this load balancer we would not even have to use a XMPP server in a cluster. So for now I have only investigated how to implement this into HA-Proxy or Nginx (which is my preferred proxies). Next step is to implement it.

Even though the meetup in the summit was about 15 and not the normal 30-40 people we still got a lot of really good discussion and some real work done (proto XEPs etc). Good karma to all of you guys from me to you!

Next post will be about FOSDEM..

E2E Links