Samir Parikh / Blog

Originally published on 07 August 2021

If you’ve been following me on Mastodon, you probably know that I’ve been dabbling with XMPP, an open source protocol that provides for a federated way of communicating:

Over the few weeks or so, I’ve been researching and experimenting with standing up my own XMPP server using an open source application called Prosody. During the course of these tests, I’ve been documenting my notes and capturing key steps of the process, many of which I found in other tutorials. Like I’ve done before, my aim was to clean up the notes and publish the steps on this site, mainly for my own future reference.

Last week, I was finally able to finish my write up and getting ready to publish it. The timing was fortuitous as we were preparing to take the kids outside to enjoy a rare warm and dry New England summer evening. After publishing it to my site, I dispatched a quick update about it to the Fediverse, sent out a few other “toots” and then, with a spring in my step, went out the door with my family.

When I got back, I did not expect to see the response that I did. Most of my Mastodon posts regarding my blog entries don’t get much interaction which is fine; the majority of my posts are really to document my notes for my future self. What I did see was not one, not two, but five responses to my blog article from the founder of Prosody himself! Technically, the responses were direct messages, meaning that they weren’t public. But I was blown away at the time and attention to detail he put into his response, especially since it was well into Friday night in his timezone.

Because his replies were direct messages, I reached out to him asking him if I could write about them publicly and he agreed. I’m not going to post all of them here but this is the first response he sent back:

Impressively detailed write-up! It’s great when people share knowledge in this way 🙂

I try to review Prosody tutorials when I can. More often than not they contain various issues (by their nature, many are written by people not too familiar with Prosody). I’m committed to helping people put out high-quality tutorials!

There are, therefore, a few things I would note about your write-up. I realise that many of them are based on advice from another tutorial, it’s hard to keep up with them all!

Over the course of subsequent DMs, Matt constructively went through all of the items he felt could improve my guide, the most important one being how Prosody handles the TLS certificates. The summary is that Prosody has built-in functionality to import Let’s Encrypt certificates. You don’t need to go through all of the machinations I described in my initial post. The other items he suggested improvements for were around how to handle HTTP uploads, OMEMO encryption and how to handle your server’s roster when you’ve got multiple users.

As you can probably notice, I’ve been directly linking heavily to Prosody’s documentation because it’s so good. My original mistake was in relying on third-party tutorials when I should have gone straight to the source. In addition, I’ve been lurking on Prosody’s chat room where Matt and Zash, another Prosody developer, hang out and provide timely and useful answers to even the most basic questions.

I’m still in the process of updating my original notes on how to stand up a Prosody XMPP server and hope to publish my steps soon. But if you’re looking for an example of how to run an open source project, support your users and engage with your community, look no further than the team at Prosody.