Reviewing the past decade
A little over 11 years ago, a group of us started the project that would snowball to become Prosody. There were a number of reasons for embarking on this new project, but one of our primary objectives was to make running your own server much easier than it was back then in 2008.
Looking back, I think we’ve made significant progress. Not only in Prosody, but across the XMPP ecosystem there has been a renewed focus on improving the user experience of projects. This is great news in a world where striving to decentralize communication and the internet is more critical than ever before.
While I believe we have achieved a lot in this area, the feeling has been growing for a while that we could be doing more. Reflecting on the Prosody project, and hearing some critics of Prosody and XMPP in general, we realised that it was time for a refocus.
For over a decade we have strived to meet the needs of Prosody’s users: the server operators. We have worked on easing pain points like certificates (something we couldn’t have achieved without Let’s Encrypt!), adding features, modules and configuration options for every kind of deployment you might imagine possible. Throughout the development our thoughts primarily circled around the server operators that we interacted with daily.
Looking at the larger picture
Although improving the lives of server operators was of course a worthy cause, we now realise that our aim for making good-quality and easy-to-use software should not end with the operators of services. Rather, we need to extend our thoughts to the people who use these services also.
In the past, ensuring a good user experience was largely left in the hands of client developers. Obviously client developers and server developers have always worked together within the XMPP community to ensure interoperability and collaborate on implementing features. But overall it has still been a very ad-hoc and fragmented “protocol-first” approach.
What if we had a project with the primary focus not to develop a server, and not to develop a client, but to develop a complete and self-contained messaging solution for people who simply want a low-effort way to communicate privately and securely with each other?
With this in mind, we’d like to present you with an early preview of Snikket. It’s essentially a self-contained XMPP distribution. Multiple projects (so far Prosody, Conversations) have been combined to produce something that we believe is greater than the sum of individual parts.
Although we are very excited about the initial version of Snikket we have just announced, it represents only a fraction of our plans - ultimately to provide a viable, simple and self-hosted alternative to mainstream messengers.
At this point we are looking for early adopters to try out the initial version, give us feedback and and help imagine and shape the future of the project.
Some example features from our roadmap include essential functionality such as a self-service account portal, including providing users with full account view/import/export of their data, and clients for iOS, web and eventually desktop.
What does this all mean for the Prosody project? Prosody will continue as an independent project for now, and very little will change. A lot of work we’ve put into Snikket is flowing back into Prosody already, for example the new easy onboarding support. Prosody will remain as it is today, an amazingly flexible XMPP server for people who want ultimate control over their XMPP deployment, and compatibility with a wide range of clients.
Snikket’s goal is just to provide a simple, secure, self-hostable and federated way for people to communicate. It happens that we strongly believe XMPP to be the best protocol, network and ecosystem for that today - but XMPP is not Snikket’s focus.
That’s all for now! There will be further blog posts here aimed at the Prosody and XMPP community. For Snikket news and updates aimed at users, we currently post to Mastodon and Twitter. We also have (of course) a channel at email@example.com.
Wow, can’t believe that was published in Feb 2020. Since then I’ve been hanging with XMPP operators and builders, in their respective channels.
Snikket is exciting, because it is contributing “upstream” to clients across the ecosystem so users will have a simple and easy onboarding process. The two main mobile clients to emerge are derived from Conversations for Android and Siskin IM for iOS (there’s a lot more interesting stuff, but this is about onboarding with impact).
The Snikket server is also porvided as a Docker image, so it should lower the bar for deployment, making it even easier to use for small groups, families and friends, and small businesses; and they would all want to, because it then provides high-quality one-on-one audio and video calling over IP!
The work put into the invitation system has been released into Prosody as well, so let me be clear on why this rocks: Snikket is giving us the cake and telling us to eat it too! All the good stuff is shared back into the component projects, so everyone benefits from this effort.
I’m waiting to set it up for a very personal reason: all the Android users I talk to already have an XMPP account I provide to them, and I’m constantly testing iOS client capabilities, but it has kinda stalled (because Apple is a bastard, BTW, that is not a prudent company to support if you want a free and open lifestyle).
So I’m keeping track of Snikket and awaiting development. But it is close, so it may be time to start testing deployments…