• Sn chevron_right

      Products vs Protocols: What Signal got right

      pubsub.do.nohost.me / Snikket Blog · Tuesday, 9 February, 2021 - 12:51 · 11 minutes

    There is a significant difference between developing and promoting a protocol (such as XMPP) and a product (such as Signal). Both approaches have their advantages and disadvantages. This post details how and why Snikket aims to strike a balance between the two.

    Products vs Protocols

    This past weekend I gave a talk at the (virtual) FOSDEM conference about a topic I’ve been thinking about a lot the past few years - the differences between developing a product and developing a protocol.

    You can watch the talk here , but there were many things I wanted to touch upon that wouldn’t fit into the 20 minute slot. This post will cover the same topics, but expands on some of the points I discussed.

    Previously, in open protocols…

    I’ve been involved with XMPP (once known as Jabber) for over 15 years. It is now over 20 years since XMPP’s inception, and over this time XMPP, along with the rest of the tech industry, has seen significant change.

    XMPP began life in the late 1990s, as an attempt to break into the messaging silos of that era. The names and logos may have been different, but it was a very similar landscape to today - oversized tech companies fighting each other for control over people who simply want to use the internet for what it was designed, communicating with one another.

    Email got lucky. A standard protocol managed to break down the walls of even the final fortress of resistance, AOL. This was achieved largely because the adoption of standard protocols by smaller providers allowed them to form a network together that began to threaten even America’s largest ISP.

    Unfortunately we never quite reached that point with instant messaging. However that hasn’t stopped many of us from continuing to strive for a similar outcome even as our symbol of hope, the open email network, is under threat today more than ever before.

    Despite numerous projects, communities and organizations campaigning for decades in favour of open messaging systems, the space is still dominated by large silos. The largest the world has ever known. WhatsApp alone has over 2 billion users. That means a significant portion of the world’s communications are flowing through a single company. A company that has a simple business model - amassing data about people and leveraging that data to help their actual customers (other businesses) influence the beliefs, biases and behaviour of the users of their platforms.

    The slippery slope

    Despite the dizzying numbers associated with WhatsApp today, it had more humble beginnings. Founded by two ex-Yahoo employees, Brian Acton and Jan Koum, it began as a simple messaging app for iPhones. The server was originally based on an open-source XMPP server , and used the XMPP protocol. However the goal of WhatsApp was not openness and federation, and they soon diverged far from standard XMPP.

    As WhatsApp grew, early users may recall that they also began charging a small fee for accounts ($1/year). Their reasoning was simple:

    “Remember, when advertising is involved you the user are the product.

    Your data isn't even in the picture. We are simply not interested in any of it.

    When people ask us why we charge for WhatsApp, we say ‘Have you considered the alternative?’“

    WhatsApp blog post “Why we don't sell ads“, June 2012

    Nevertheless, just two years later it was announced that WhatsApp had been acquired by the internet’s fastest-growing advertising platform, Facebook.

    Despite declaring to the EU competition commission that linking an individual’s data between WhatsApp and Facebook was not technically feasible this is exactly what they went on to do, leading to a €94 million fine . Little by little, Facebook has been loosening their privacy policies to allow them to absorb WhatsApp data into their daily operations.

    So when, in early 2021, the latest update to the privacy policy gave users of the platform a clear ultimatum to allow this sharing or close their account, many users wisely began to seek alternatives. Finally, the moment we had been waiting for had arrived.

    Many of us advocates of open communications seized the opportunity, and recommendations were soon flying around for the wide range of alternative messaging systems we’ve been building these past years. “Use XMPP!”, “Use Matrix!”, “Use Signal!”, to name a few.

    Despite a marked increase of signups on XMPP and Matrix servers, of these three it was Signal that won by far the largest share of new users. Millions of people flocked from WhatsApp and overloaded Signal’s servers, resulting in disrupted message delivery across Signal’s service for days.

    This service disruption was possible because, unlike XMPP and Matrix, Signal is centralized, and all messages flow through a single set of servers, the same model as WhatsApp.

    XMPP and Matrix are both federated networks. Rather than a single entity controlling the network, there are many servers to choose from, run by many different independent providers. Even with a server down, overloaded or closed to new users, the rest of the network continues functioning.

    So why did Signal receive millions of users, and XMPP/Matrix did not?

    Signal

    At this point it’s impossible not to reference The Ecosystem is Moving , a 2016 blog post by Signal’s founder and CEO, Moxie Marlinspike. In this post Moxie details all the problems he sees with protocols becoming open internet standards. In particular, that they lose their ability to evolve, and that evolution is vital to compete in our industry’s “moving ecosystem”.

    We got to HTTP version 1.1 in 1997, and have been stuck there until now. Likewise, SMTP, IRC, DNS, XMPP, are all similarly frozen in time circa the late 1990s.

    Signal blog post “The ecosystem is moving“, May 2016

    Well. Far from being frozen in time, XMPP has changed significantly in the past 20 years.

    xmpp_2004_2021.png

    Just some of the things we have now that we didn’t have in the beginning:

    • End-to-end encryption using OMEMO (based on Signal’s protocol and audited), with multi-device and offline capabilities
    • Audio/video calling (now 2nd generation, encrypted, WebRTC-compatible)
    • Mobile optimizations (bandwidth, connectivity, push notifications)
    • Full cross-device message synchronization

    Many of these things didn’t even exist as concepts back when XMPP began. Adding them was only possible due to XMPP’s smart design: a core protocol, with a suite of extensions (known as XEPs). New extensions are added as needed, and irrelevant ones get deprecated.

    To help keep everyone on the same page as the protocol evolves, the XMPP Standards Foundation (XSF) annually publishes the recommended XEPs that different classes of software (e.g. instant messaging, social networking , or smart devices ) should be implementing. These round-ups are known as compliance suites .

    The documentation site Modern XMPP also serves as a useful reference guide for modern XMPP implementations (including UI/UX considerations, which are not covered by the protocol-level documentation).

    The unfortunate truth

    The effort required in advancing the protocol is significant. And that’s not even counting the implementation work. XMPP has a diverse and open ecosystem. There is no single “XMPP client”, instead the ecosystem is composed of… just about anyone who decides to write XMPP software. The vast majority of this software is free/open-source, and developed by volunteers and communities.

    Publishing protocol updates does not magically mean the changes are implemented in all XMPP software overnight. Some projects are more active than others, and each contributor is an individual with their own life and work schedule. Unfortunately this means that it’s very difficult to evolve the protocol and keep everyone 100% in sync. Luckily XMPP’s modular design makes it easy for some software to advance ahead of others without having to lose backwards compatibility with the rest of the network. If we didn’t have this feature, we would always be in a state where half of the network is unable to communicate with the other half of the network, or more likely we would be stuck with the initial set of features because nobody would want to be the first ones to become incompatible with everyone else.

    But Moxie is right. We could move much faster if we didn’t care about interoperability, software diversity, and decentralization.

    And that is the approach Signal is taking.

    Product or protocol?

    It’s clear that there are trade-offs to be made here. Signal’s product-led development excludes others from participating in the Signal network. But it allows them to remain agile, and implement new features as fast as they can write and ship code.

    I put together some of the trade-offs into the following table:

    Building an ecosystem Building a product
    Focus on protocol Focus on implementation
    Mostly documentation Mostly code
    Cross-project collaboration Single project/team
    Building for developers Building for end-users
    Slow evolution Evolves as fast as you want
    Achieve diversity Achieve a monoculture
    Robust Single point of failure

    I think that Signal’s approach is laudable for the number of people that they have helped divert from data-mining platforms, and helping to remind people that surveillance capitalism isn’t the only way to do things.

    They’ve built a good user-friendly product, and they have done it with security and privacy at its heart.

    But we have to aspire to more than this. Signal is a centralized, closed system. That means to communicate with your contacts who use Signal, you must also consent to their terms, their software, their US jurisdiction. You have to be okay with their servers being hosted with large cloud providers such as Amazon and Google.

    But one thing the past has shown us is that things change. Technologies evolve, business leaders come and go, motives adjust. Signal today may be as benign as WhatsApp before its acquisition by Facebook. But change is inevitable, from whatever direction it comes. Signal is a technical, organizational and political point of failure.

    Best of both worlds

    Thinking about the table I presented above. Consider that perhaps the options on each row are just the extreme positions. Perhaps we can try to strike a balance between them - making intelligent choices as we go.

    What if we could make a Signal that was a little more open? And an XMPP that was a little bit less diverse? Accept that we would trade some of the agility for robustness, and some of our diversity in favour of consistent usability.

    Can we move beyond Signal’s flaws to build something that is open, interoperable, user-friendly, consistent and decentralized? I believe so, and as they say, there’s only one way to find out.

    Snikket

    Snikket is an initiative to bring a more product-led approach to the XMPP ecosystem. It’s a project that will deliver a suite of XMPP software: a single app for each platform, and an easy to deploy server for self-hosting.

    The goal is to reduce fragmentation in the XMPP ecosystem, and ensure that people have access to a familiar brand across all platforms. This brand will represent a consistent set of features, and no interoperability issues. The software is all open-source, and of course still (the latest and greatest) XMPP.

    Hopefully Snikket will also become an easy gateway to the world of XMPP for users who may previously have found it inaccessible due to the need to understand the ecosystem and choose the best software for each platform. All the other XMPP software continues to exist, and people are free to use anything that better suits their needs.

    Starting from scratch would be a massive undertaking, and would require resources beyond the reach of an unfunded open-source project. Instead we are building on top of the amazing work that is already being done in XMPP implementations. For our Android client we selected Conversations . For iOS, Siskin . The server is based on Prosody .

    All of these projects are good projects on their own. But by combining them under a single brand, performing focused interoperability testing and improving UI/UX consistency, we gain a new project that is greater than the sum of its components.

    To be clear, these are not “hard forks” of the projects. Quite the opposite. We work closely with the developers, and have sponsored features in both Conversations and Siskin to get to where we are today. Our work on invite-based onboarding grew into a whole new feature in Prosody. Everything that makes sense in the upstream project gets pushed upstream. Lessons learned in UI/UX will likewise get added to the Modern XMPP documentation for other client developers to benefit from.

    Snikket is not about replacing any of the individual projects, but about joining them together in a neat way and extending XMPP’s reach to new audiences.

    Back to the future

    Will Snikket alone turn the tide against proprietary communication platforms? Maybe, maybe not. But we’re part of a growing movement that agrees it’s time to stop repeating history , and finally redecentralize the internet, the way it was intended.

    Thanks to Kim Alvefur, Georg Lukas and Jonas Schäfer for their editorial review during the writing of this post.


    Want to help support the project? Donations are welcome! All contributions will help us to continue work on the project and accomplish the goals on our roadmap. Want to talk? Join our community chat .

    • wifi_tethering open_in_new

      This post is public

      snikket.org /blog/products-vs-protocols/

    • Sn chevron_right

      February 2021 server release

      pubsub.do.nohost.me / Snikket Blog · Tuesday, 2 February, 2021 - 12:45 · 3 minutes

    A year ago, Snikket was first announced publicly, at the FOSDEM conference in Brussels. FOSDEM 2021 is next week, online of course, and I’ll be giving a talk about some of the thoughts that led to me starting the Snikket project.

    A year is a long time on the internet! Since that initial announcement we’ve incorporated as a not-for-profit , formalized our goals and made significant progress towards them.

    Today that progress continues, as we release the largest update to our self-hosted server software yet! This release includes a web administration dashboard, support for multiple distinct groups of users, and finally… support for Raspberry Pi and other ARM devices.

    Admin dashboard

    Until now the only way to manage your Snikket server - for example to invite new users or reset passwords - was by using the command-line. That is all about to change, as we now have a lovely web interface to perform all kinds of management tasks!

    web-admin-multilingual.png

    The Snikket web interface

    The dashboard is already translated into multiple languages (currently English, French, German, Italian, Indonesian and Polish).

    We also have a simple portal for non-administrative users to log in and manage their account. Currently this contains a profile editor, and will grow to include other account settings, and data import/export.

    web-user-profile.png

    The user profile editor

    This project has been the work of Jonas Schäfer, without whom it wouldn’t have been possible to ship anything quite as extensive or polished by now! Many thanks also to the community members who have contributed the initial translations.

    Raspberry Pi and ARM support

    We have grown our build infrastructure to include two Raspberry Pi servers, which now provide continous builds for ARM (32-bit and 64-bit) architectures. This means that finally the Snikket Docker images work out of the box on just about any Raspberry Pi device.

    Due to the relatively low resource requirements of the Snikket server, and the relative affordability of Raspberry Pi devices, they make a great device to begin your self-hosting journey!

    Circles

    Snikket is designed with small groups of people in mind. Whether your Snikket instance is serving your family, club or workplace, we chose to make contact discovery easier by automatically showing all other users on the same Snikket service in your contact list.

    However this could be problematic if you wanted to share the same server across multiple social groups. Maybe you want to invite your gaming buddies to your Snikket server, but without them awkwardly finding all your family members in their contact list.

    We have added a new feature which allows you to have multiple groups of people, which we refer to as “circles”. When you create an invitation you can choose which circle to assign the new user(s) to.

    If you are upgrading from a previous version of the Snikket server, there will be an initial migration process that automatically moves all users to a new default circle.

    Finally, circles have an associated private group chat to which all circle members are invited. This replaces the clunky ‘general’ chat that was created in previous releases.

    Other changes

    We’ve made some architectural changes in this release. If you’re upgrading from a previous release, make sure you follow the upgrade notes in the changelog .

    The file upload limit is now 16MB (the same as WhatsApp’s limit). We are working on allowing even higher limits but with per-user quotas for a future release, to ensure you don’t run out of precious disk space :)

    Finally, if you’re setting up Snikket for the first time, we now have a collection of scripts and resources to help you get started, over at snikket-selfhosted !

    We’re looking forward to hearing feedback about this release. Let us hear your success stories 😉


    A quick reminder that this is an independent open-source project working to provide a free (as in freedom) alternative to proprietary mainstream messaging services. If you benefit from the software we produce, or simply want to support our work, feel free to donate , no matter how small!

    • wifi_tethering open_in_new

      This post is public

      snikket.org /blog/feb-2021-server-release/

    • Sn chevron_right

      Sponsoring Group Chat Encryption in Siskin

      pubsub.do.nohost.me / Snikket Blog · Monday, 30 November, 2020 - 13:45 · 1 minute

    For some time XMPP has been in need of a good solution for Apple’s mobile operating system, iOS. In 2020 we now have a number of active projects. Work on the long-standing iOS (and now also MacOS) client Monal IM has really picked up in recent months, in no small part thanks to the efforts of tmolitor , who has been contributing a lot of modernization to both the UI and the internals.

    Tigase also released an open-source iOS client, Siskin IM that has been making steady progress recently .

    Monal IM

    Monal IM

    Siskin IM

    Siskin IM

    It’s exciting to see so much activity happening around XMPP on iOS now, and both projects are adding more modern XMPP features with every release. Snikket does not currently have an official iOS client, so we’ve obviously been keeping a close eye on these advancements.

    A major interoperability problem between the current version of Siskin and other modern XMPP clients is that it does not support end-to-end encryption (OMEMO) in group chats. This means that users of Siskin cannot participate in private group chats started by Conversations or the Snikket client on Android, because they are end-to-end encrypted by default.

    OMEMO is a form of “end-to-end encryption”, which means that it hides message contents from the servers and operators of each chat participant. Siskin already supports OMEMO for one-to-one conversations, but not group conversations.

    One of the goals of Snikket’s CIC is supporting and advancing the XMPP ecosystem. With that in mind, we’ve been working in recent months to obtain funding to close this gap in Siskin. Today we are pleased to announce that thanks to a private donor, the project can now move forward. The Tigase team will commence work on OMEMO in MUC in the coming weeks!

    This is really exciting news, and will bring the XMPP experience for iOS users an important step closer to that of other platforms. There will be more announcements in the future, stay tuned!


    If you want to help us with our goals and other projects like this, consider a donation , contribute in some other way , or simply help spread the word! The future of XMPP is coming :)

    • wifi_tethering open_in_new

      This post is public

      snikket.org /blog/sponsoring-group-omemo-in-siskin/

    • Sn chevron_right

      Snikket App Update 2.9.0

      pubsub.do.nohost.me / Snikket Blog · Tuesday, 3 November, 2020 - 13:14 · 1 minute

    A new version of the Android app landed in Google Play and F-Droid this week. Snikket for Android 2.9.0 is based on Conversations 2.9.0 and sees a number of new features and improvements:

    Audio/video call improvements

    Firstly, there is now the option to leave a voice message if the person you are calling does not answer or is busy. Simply press the green voicemail button to record a message!

    snikket-voicemail.png

    Snikket voicemail screenshot

    There are also many small fixes and improvements, such as the ability to switch back to the chat view during the call, and using the loudspeaker for dial tone and busy tones when making a video call. Finally, a small number of specific devices produced echo during calls, this is now fixed.

    Message search

    As well as searching for messages across all your conversations, you can now also search within just a specific conversation. Simply go to the conversation you want to search in, and choose ‘Search messages’ from the conversation menu.

    Notifications

    A notification has been added when message delivery fails, so you know if your contact did not receive a message, even if you aren’t actively looking at their conversation. A bug was also fixed that meant notifications sometimes wouldn’t be shown in some circumstances.

    Support for GPX files

    If you’re a regular trekker, this one will be of interest to you. Although sharing and receiving logs of travels via GPX files was always possible in previous versions, they are now automatically identified and show up with a friendly icon. With a single tap you can easily open them in the app of your choice, such as OSMAnd or Trekarta (both open-source and available on F-Droid!).

    Performance and bug fixes

    Some other changes in this release include making it much quicker to restore your account from a backup file, and a fix for a bug that made it impossible to log in when your password included certain special characters.

    That’s all for now. Grab version 2.9.0 of the Snikket app from F-Droid or Google Play !

    As always, the Snikket app requires an invite or account on a Snikket service to get started. If you’re new to Snikket, learn more about the Snikket app to find out how to get started.

    • wifi_tethering open_in_new

      This post is public

      snikket.org /blog/snikket-app-update-2.9.0/

    • Sn chevron_right

      Announcing Snikket CIC

      pubsub.do.nohost.me / Snikket Blog · Wednesday, 28 October, 2020 - 12:05 · 3 minutes

    We’re pleased to announce that Snikket is now backed by a legal entity, Snikket Community Interest Company , registered in the UK.

    A Community Interest Company (CIC) is a form of organisation that lies somewhere between a traditional limited company and a traditional charity. All CICs are “not for profit”, which means rather than focus on generating profits and increasing value for shareholders, they have other goals - serving a “community” in some way.

    The exact “community” differs between CICs, but must be declared when the organisation is registered with the CIC regulator. Snikket’s “community interest statement” declares that the CIC is for the benefit of:

    People and organisations in need of safe and private digital communication. This includes in particular family groups, clubs, local interest groups and other organisations that may be non-commercial in nature.

    and that it will also:

    […] provide support to open and non-commercial projects that have similar objectives.

    The the term social enterprise has been coined to cover this kind of organisation, regardless of the legal structure used (the options for which may vary from country to country). Although there is no strict definition of what a social enterprise is, they generally all have in common a goal of maximizing their “social impact” alongside or above generating profits.

    And this is where a social enterprise formed as a CIC or similar structure differs from a traditional non-profit or charitable organisation. Although the laws vary between countries, a non-profit typically receives tax benefits in exchange for compliance with strict regulations about how it receives and spends its money. Such an entity is usually restricted from trading goods and services for example, and must rely 100% on donations to achieve its goals.

    A CIC does not receive the same tax breaks as a charity, however it is free to trade in many of the same ways that a normal company would. This allows for more creative and sustainable ways to sustain the organisation financially, while the CIC protections ensure it keeps a focus on its social mission.

    The legal structure of a CIC (particularly the variant that we chose for Snikket) means that it is not possible for us to sell shares, or raise money through venture capital. We feel that this is a good thing - VC funding introduces a certain pressure to ensure a good financial return on the investment. That expectation of return is precisely what makes VC money so very different to a donation (where there is no expectation of return) or a simple transaction where a service or product is received directly in exchange for the money. We wanted to take this option off the table.

    What does all this mean for the project?

    Well, having a dedicated legal entity means we were also able to open a bank account, which means we can finally accept donations and more easily fund various things. For example, we are seeking funding (e.g. through grants or donations) to help finish the iOS client (if you know anyone who may be able to help get this funded, get in touch! ) And even the simple day-to-day expenses such as server costs are now able to be paid from the project’s bank account rather than my personal one. Obviously I’ll still be covering these costs for a while, but I hope in the long run that Snikket will become self-sustaining. This is the first step on that journey!

    As for the future, don’t be surprised if we explore additional ways to raise an income - for example through offering services to Snikket users, such as hosting Snikket servers for people who are less able to run their own, or possibly services to help make running a Snikket at home easier. Contact us if you have an interest in either of these, or if you have ideas for other things we could look into offering.

    As a not-for-profit, all income raised goes into Snikket and its objectives, such as funding development of the project and the projects it depends upon, and the ecosystem it is part of.

    Want to contact us? Email team@snikket.org or join our chatroom .

    Interested in learning more about starting a CIC or other form of social enterprise? See these resources:

    UK

    International

    • wifi_tethering open_in_new

      This post is public

      snikket.org /blog/snikket-cic/

    • Sn chevron_right

      Introducing Snikket

      pubsub.do.nohost.me / Snikket Blog · Saturday, 24 October, 2020 - 13:05 · 4 minutes

    The Snikket project was officially unveiled earlier this year at FOSDEM in Brussels. We’re thankful to all the great feedback we received from people who came to see first-hand what we’re building.

    What is Snikket?

    For people who didn’t make it to the demo at FOSDEM, what is Snikket all about?!

    Snikket is actually a collection of open-source components that together form a complete messaging platform that anyone can deploy. You can think of it as a self-hosted open-source alternative to commercial messengers such as WhatsApp, Facebook Messenger, Telegram or Signal.

    Snikket provides:

    • A minimal-configuration server component that can be deployed onto your own system, either in the cloud or on your own device, such as a Raspberry Pi. Currently this is provided as a single Docker image , but we plan to add other distribution methods soon.
    • Software for users - currently we have an app for Android users (distributed via Google Play and F-Droid), and an app for iOS will be next to launch.

    Who is Snikket for?

    The primary audience for Snikket is people who want to set up their own safe, secure, and private realtime communication for small groups, such as families, communities, clubs and small businesses.

    The mainstream alternatives to Snikket today are operated by commercial entities that profit from exploiting personal data gathered from their users. We believe that people should have the freedom to communicate on their own terms, rather than being forced to accept unacceptable privacy policies of a service just because their friends are using it.

    We believe that everyone should have the choice of using a service run by someone that they trust. That is why we make running a Snikket server as easy as possible, and allow users of different Snikket servers to easily communicate with each other through a feature known as “federation”.

    How does it work?

    Snikket is based on the open standard messaging protocol XMPP . This means that we’re not inventing any fundamentally new technology (the world definitely has plenty of messaging protocols already!). In fact XMPP is a mature technology that has been in active developed for over 20 years. Because we are using an existing standard, there is a whole ecosystem of software that is compatible with Snikket. It also means that every Snikket server launched can immediately become a part of an existing global network of other XMPP-compatible servers.

    The Snikket software itself is based on existing open-source projects. For example, the server component utilizes Prosody , and the Android app is based on Conversations . We are not forking these projects. Instead innovations that we introduce to Snikket are pushed upstream wherever possible. An example of this is the invitation based sign-up that we required to make signing up with a Snikket service as easy as possible. This involved creating a new extension to XMPP, and implementing it in multiple open-source projects, including Prosody and Conversations.

    But why?

    On hearing about Snikket for the first time, a question people often ask is, “why are you developing Snikket when plenty of XMPP software already exists?”

    There are a number of reasons that Snikket’s existence is important.

    Snikket aims to be an entrypoint for new users into the XMPP universe. This is something that a project that is just a client, or just a server, can’t do alone. We’re providing a complete package for people to get started easily even with zero knowledge of XMPP and how everything fits together.

    Even for experienced users of XMPP, there are benefits to having such a package of integrated XMPP software. Knowing that Snikket client on platform A has the same set of interoperable features, same terminology, and same UX paradigms as the Snikket client on platform B makes for an attractive solution to many use-cases.

    The design principles that Snikket adheres to can be found at modernxmpp.org , which is a parallel project aiming to align as many clients as possible in terms of UI/UX and protocol implementations. It is a natural extension to the Compliance Suites published by the XSF (but these only cover protocols, not features, terminology or UX).

    Finally, since “Jabber” (the original user-friendly name for XMPP) is now a trademark owned by Cisco, it is unsuitable for use in many contexts and has been declining in recent years. However telling people to “use XMPP” (a protocol standard made for developers) leaves them confused and directionless. It’s a much better option to be able to tell people to “use Snikket”, which leads them to a suite of user-friendly XMPP software.

    The future

    There is a lot more planned! We have two primary focuses right now: launching an iOS client, and finishing the web interface for the server (so that users can manage their account, and admins can inspect and manage the server).

    To keep up to date with developments, follow this blog , or our accounts on Mastodon or Twitter !

    • wifi_tethering open_in_new

      This post is public

      snikket.org /blog/introducing-snikket/