Frequently asked questions

Using Snikket to Chat

Q: What on Earth is this Snikket thing?

A: Snikket is a chat service, designed to be as simple and user-friendly as possible, and to provide all the features people have come to expect from modern chat software. Snikket is decentralized, which means that it’s made up of a network of independent servers, not a cluster of “cloud” servers controlled exclusively by a single company, as in apps like WhatsApp, Telegram, and Signal.

Q: Are there Snikket apps for all major platforms?

A: This is the end goal. As of mid-2021, an Android app is available in F-Droid and the Google Play store. We also have an iOS app in beta testing.

After the iOS app is released we plan to focus on a web app. Native desktop apps will come later. But you don’t need to be using Snikket to talk to Snikket users, see ‘What if my friends aren’t on Snikket?’.

For more information on our future plans, see our goals.

Q: How many languages are the Snikket apps available in?

A: We aim to support as many languages as humanly possible. Our Android app is translated by wonderful volunteers into over 30 languages, which very likely includes yours! Our web portal has translations for over 10 languages, and more are being added.

Our iOS app is not currently translated (English only), but we want to change that very soon!

If you want to help out with translation efforts, come join the community chat and say hi!

Q: What if my friends aren’t on Snikket?

A: Snikket is designed to make it quick and easy to invite your friends to your server, and to get them set up with an account and a Snikket app for their device. But even if you are the only user on a new Snikket server, you can still chat with a wide range of people. Chat apps like WhatsApp, Telegram, and Signal, are centralized, which means they require you to create an account on their servers before you can chat with anyone else using their service. But if you have an account on a Snikket server you can chat with people using accounts on other servers, not only other Snikket servers, but any chat server that supports the XMPP protocol.

Q: Is a Snikket server like a Discord server?

A: Yes and no. On Discord, the word “server” is used to mean a cluster of chat channels run by one group of people. But all of these “servers” are running on a cluster of servers managed and controlled by the company behind Discord.

Snikket servers are totally independent of each other, even servers run by the Snikket hosting service are designed to be easily moved to another host at any time.

Q: How do I get my own Snikket server?

A: To get started with Snikket you need to set up a Snikket instance for yourself. There are two options, depending on your skill level.

For an easy non-technical route to joining the Snikket network, you can sign up for Snikket Hosting and have your own personal Snikket instance in just a few clicks.

Alternatively, if you are familiar with Linux and SSH, our software is designed to make it easy to install Snikket on your own server. This could be a physical server, VPS, or even a small device in your home such as a Raspberry Pi (as long as it is accessible from the internet). To set up Snikket on your own server, visit the Snikket service setup guide.

Whichever route you choose, after setup you will be able to easily invite your contacts to join you on your shiny new Snikket service!

Q: Doesn’t running a hosting service clash with your stated goal of creating a chat network that’s decentralized?

A: Using our hosting service is (and always will be) optional. We encourage people who can self-host to do so (you can still help sustain the Snikket project through donations!).

We have a strong belief in decentralization, and strive to make self-hosting as easy as possible. But we have to balance that with our mission to provide everyone with a privacy-friendly alternative to proprietary networks, and we recognise that not everyone who wants to escape those networks has the necessary skills to run their own server safely and securely.

For the future we are investigating partnerships with other organizations that would be able to offer Snikket hosting independently on their own infrastructure, so that we do not become a central piece of the network.

We are also working on making migration between hosted and self-hosted (and vice-versa) as easy as possible.

Q: Do you have any major partners, or organizations willing to help with the development of Snikket?

A: Snikket’s primary partners are the developers of existing XMPP software, including Prosody, Conversations, and Siskin. Without their work Snikket development would be much slower and more expensive, because we would have to develop all the necessary software from scratch instead of building on their freely-licensed code.

The Snikket project has been accepted into a Next Generation Internet (NGI) programme called DAPSI (Data Portability and Services Incubator). This includes funding, mentorship and other opportunities.

Other possible partnerships are being actively explored and we welcome approaches from anyone interested in supporting us, either with funding or development assistance.

Q: Can I use the Snikket apps with a non-Snikket server?

A: You can, but you may not get the best experience. All the Snikket apps use the open standard XMPP protocol and you can use them with any compatible service. However non-Snikket services may not support all the features that the app requires, and some features of the app may not be available or they may work unreliably.

We encourage you to look at other general-purpose XMPP clients if you just want to connect to third-party XMPP services.

Some suggested clients for use with non-Snikket servers:

If you report a bug in a Snikket app to us while using a third-party server, please state this clearly in your bug report.

Q: Can I use non-Snikket apps to connect to a Snikket server?

A: You can, but you may not get the best experience. Depending on the app you choose, some features may not be available or they may work unreliably.

We routinely test the compatibility between official Snikket apps and the Snikket server, but we do not have the resources to do this testing for all third-party XMPP applications.

If you report a Snikket server bug to us while using a third-party app, please state this clearly in your bug report.

For a list of suggested non-Snikket client apps, see the previous answer.

Hosting a Snikket Server

Q: What are the system requirements?

We recommend a machine with at least 1GB RAM to set up and run Snikket comfortably. The server software supports Linux on 64-bit (i.e. amd64), and ARM devices of ARMv7 or ARMv8. This includes Raspberry Pi 2/3/4 devices.

The server memory usage scales with the number of active users. Expect to fit 10-15 users comfortably in as little as 128MB RAM, but this may vary based on activity (video calls, media sharing, etc.). If you’re not already running docker on your system then you also need to account for resource usage by the docker service. As with most things, spare RAM is always good to have :)

CPU requirements are generally minimal. A slow CPU may slow down some operations, but this is generally not noticeable unless you have a significant number of users.

Q: When will Snikket be made available for my favourite self-hosting platform (eg YunoHost, FreedomBox, FreedomBone)?

A: We aspire to support as many self-hosting options as humanly possible, but Snikket has limited development resources and has to prioritize. If anyone volunteers to package the Snikket server for a particular self-hosting platform, we’ll do our best to help them do that. But in the longer term we hope to attract more funding so we can pay people to work on a wider range of development and distribution work.

Q: Is is possible to use a different domain for my Snikket address and the web portal?

A: No, it’s not currently possible. When you configure the domain for your Snikket instance (e.g. chat.example.com), that domain will be part of your Snikket address (e.g. username@chat.example.com) and also the web address of your instance, e.g. https://chat.example.com/.

Sometimes we get asked if it is possible to have a different address for users, such as user@example.com. Technically XMPP supports this (by adding custom SRV records in DNS), but it’s made complex by the requirement for certificates for that domain. Snikket would need certificates for example.com, which is quite tricky unless the A record for that domain is also pointing at Snikket - Let’s Encrypt does not follow SRV records (see letsencrypt/boulder#1309 for discussion around this).

There are some workarounds we are planning in the future, such as support for using DNS challenges, which will hopefully be a workable option for many people. There is also promising work being done at the IETF for certificate delegation techniques that may provide some interesting alternatives in the future.

Under the Hood

Q: What is XMPP?

A: The internet is a worldwide network of computers (most of which we usually call “servers”). Every time you use an internet-based service, whether that is browsing websites, sending an email, chatting or calling, it requires computers to communicate with each other and exchange data.

But the computers need to understand the same data format (known as a “protocol”). When you browse websites, your computer speaks a protocol called HTTP with the website’s server. When you email to someone, the computers use a protocol called SMTP.

XMPP is a protocol for real-time communication, such as messaging and calling. It is an open standard, which allows any developers or server operators to add support for XMPP to their software and services.

Q: Why does Snikket use XMPP?

A: Rather than invent our own protocol, Snikket builds upon the existing open ecosystem of XMPP. We believe that this is a more healthy approach for the internet - it allows for software diversity, and gives people additional freedom to communicate with their contacts using the software of their choice.

For more information on how Snikket fits into the XMPP ecosystem, see Snikket’s goals.

Q: Isn’t XMPP outdated?

A: We sometimes encounter people who have heard about XMPP in the past, and assume that it’s no longer in use. Although the protocol was officially born in 1999 (as “Jabber”), many people first heard about XMPP in 2005 when it was used to power Google Talk, one of Google’s most successful communication services, based on principles of open communication that we strongly believe in.

Unfortunately when Google announced the end of Talk during a change of strategy, it closed many people off from the rest of the XMPP network.

But XMPP never went away. Although Google was for 8 years the largest XMPP service around, there are many other smaller services - public and private, that continue to participate on the XMPP network. The XMPP community is active, and you can follow activities in the XMPP community newsletter that is published monthly by the XMPP Standards Foundation.

Q: Why not the Matrix protocol?

A: Matrix is another communication protocol with similar goals to XMPP, though based on a different technical design. There are a number of ways to answer this. XMPP and its standards foundation are much older than Matrix. XMPP has been standardized by the IETF (Internet Engineering Task Force), an open standards organization where basic protocols for the internet, email, the web and so on are discussed and agreed on.

In theory, any federation protocol can be used for any kind of application, for example, Delta Chat using the email protocols for chat, or Movim using XMPP for social media. But in practice, some protocols force software to do more work than is really necessary to do a particular job. There are a number of technical reasons that we think make XMPP a more efficient protocol for the kind of informal personal and group messaging Snikket aims to support. We intend to expand on these details in an upcoming blog post :)