» XMPP PubSub aka “death by a thousand cuts”

XMPP PubSub aka “death by a thousand cuts”

We launched the new Seesmic UI and most comments I see about it are positive. What’s even more important than the UI is what is hidden behind it. We have a very innovative XMPP PubSub architecture and our team is starting to share how it is done, I felt like reblogging that post from Bear

“Well, ok, not quite that dramatic – but for sure the final 20% is going to turn the last of my beard gray before the year ends.

Lately Nathan and I have been battling subtle bugs in Tigase (which Artur and Bart have been great at fixing), subtle bugs in our code (oh yea, even there! ;) ) and the usual other 30 distractions as the team delivered the beta version of the new site.

With this latest round of tweaks we are very close to calling it “shipped”:

  • We turned on thenode that delivers the public timeline data (or what others call the “firehose”) and that is now sending Atom payload events to it’s subscribers,
  • We are seeing a more stable auto-refresh of the timelines (well, more stable after this last tweak)
  • We can now dial the BOSH timeout up or down to find that sweet spot for load management
  • The Tigase team delivered a great new feature: Server Monitoring which I’m hoping we can wire into our infrastructure for much more accurate stats

All in all it’s been a really crazy couple of weeks – but man is this stuff fun!

So I’m hoping that the XMPP community allows us a bit of boasting as we have a XMPP PubSub system running “in the wild”. I’m sure there are others out there, but so far they have been rather quiet on how things are done or they have quietly gone away. We are working on an architecture article for the Seesmic Developer’s site that goes into more details on how and why.

Special thanks to Jack for taking the time to review how we structured our Atom payload — hopefully it’s less messy now :)

Update by Nathan on FF:
XMPP allows us to avoid polling on the site and enables us to push live content to 3rd party apps and services. It’s the whole push vs. pull thing. It’ll also enable us to do some pretty cool Web 2.0 kind of services like “live search / track” in a much more painless way than traditionally. It’ll enable us to have live interactions between users on and off the site. It’s simply another tool on our belt, and we intend to make the most of it. It will also provide a means for IM interaction with the service like Friendfeed and Identi.ca provides. Remember when Twitter had this?
To summarize: 1) push vs. pull. 2) really enabling our 3rd party devs to do cool things with the service. 3) Live interaction between users on and off the site. 4) IM interaction with the service. – Nathan Fritz
It also started an interesting conversation in Seesmic about pushing our Bosh up or down