<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Snikket Blog on Snikket Chat</title>
    <link>https://snikket.org/blog/</link>
    <description>Recent content in Snikket Blog on Snikket Chat</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>team@snikket.org (Snikket Team)</managingEditor>
    <webMaster>team@snikket.org (Snikket Team)</webMaster>
    <lastBuildDate>Wed, 11 Sep 2024 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://snikket.org/blog/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Snikket Server - September 2024 release</title>
      <link>https://snikket.org/blog/snikket-server-sept-2024-release/</link>
      <pubDate>Wed, 11 Sep 2024 00:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-server-sept-2024-release/</guid>
      <description>&lt;p&gt;We hope you&amp;rsquo;ve been having a good summer (at least if you&amp;rsquo;re up here in the
northern hemisphere). Today we&amp;rsquo;re back with a new release of the self-hosted
Snikket server software.&lt;/p&gt;
&lt;p&gt;This software is what&amp;rsquo;s at the core of the Snikket project - a self-hostable
&amp;ldquo;personal messaging server in a box&amp;rdquo;. If you wish for something like
Messenger, WhatsApp or Signal, but not using their servers, Snikket is for
you. Once deployed, you can create invitation links for family, friends,
colleagues&amp;hellip; any kind of social group is the main target audience for
Snikket. The invitation links walk even the least-technical people safely
through downloading the &lt;a href=&#34;https://snikket.org/app/features/&#34;&gt;Snikket app&lt;/a&gt; and
joining your private Snikket instance.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re not a self-hoster, we also have a &lt;a href=&#34;https://snikket.org/hosting/&#34;&gt;hosted version&lt;/a&gt;
which lets you get your own instance started in just a few clicks.&lt;/p&gt;
&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s new&lt;/h2&gt;
&lt;p&gt;Some highlights of what changes this release brings:&lt;/p&gt;
&lt;h3 id=&#34;invitations&#34;&gt;Invitations&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve made a number of small but important improvements to the way invitations
are created and managed.&lt;/p&gt;
&lt;p&gt;For example, people often told us that after creating a few invitation links
and sending them out, they would forget who each link was created for and why.
Now Snikket allows you to attach a brief custom note to invitations, visible
only to admins in the list of pending invitations, making it easy to see at a
glance who has yet to accept their invitation.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;img src=&#34;https://snikket.org/blog/snikket-server-sept-2024-release/snikket-invitation-comment.png&#34; alt=&#34;Screenshot of the new invitation form comment field&#34; &gt;
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Example of the new invitation form, which allows adding an optional comment&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Meanwhile we&amp;rsquo;ve added an important feature that was missing from invitations -
you can now specify the role that will be applied to anyone who joins using
a given invitation link. Previously, if you wanted to set up e.g. a child with
a &amp;ldquo;limited&amp;rdquo; account, they would first join as a normal user, and then you
would need to navigate to the user management page and assign them the
&amp;ldquo;Limited&amp;rdquo; role. With this new release, you are able to assign the role
directly when you create the invitation, which is much simpler and more
secure.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;img src=&#34;https://snikket.org/blog/snikket-server-sept-2024-release/snikket-invitation-roles.png&#34; alt=&#34;Screenshot of the invitation role selection options&#34; &gt;
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;Invitations now allow selecting the user&amp;rsquo;s role before they sign up&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;A really handy feature we&amp;rsquo;ve added is the ability to share the invitation link
directly through other apps, if your web browser supports it (which most
mobile browsers do). This can make it much easier to send invitation links via
SMS/email or other apps in a couple of taps, without manual copy and pasting.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;img src=&#34;https://snikket.org/blog/snikket-server-sept-2024-release/snikket-invitation-share.png&#34; alt=&#34;Screenshot showing an invitation, and a list of apps the link can be shared to&#34; &gt;
&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;An example of the invitation sharing feature in Firefox on Android&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;changes-to-blocking&#34;&gt;Changes to blocking&lt;/h3&gt;
&lt;p&gt;Though uncommonly used on private servers, it&amp;rsquo;s nevertheless possible to block
people in Snikket. When you do this, the blocked person would receive a
delivery error when attempting to send a message to someone who had blocked
them. From this error, it&amp;rsquo;s possible to deduce that you have been blocked.&lt;/p&gt;
&lt;p&gt;Based on feedback, we have adjusted this so that no delivery error is sent to
people you have blocked.&lt;/p&gt;
&lt;h3 id=&#34;technical-stuff&#34;&gt;Technical stuff&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve added a few new things that are not present in the interface, but are of
interest to people deploying Snikket.&lt;/p&gt;
&lt;p&gt;It is now possible to adjust the port of the STUN/TURN server. By default this
adjusts the port of the internal server that is provided with Snikket, but if
you have configured an external TURN server then it means you are now able to
host that on non-standard ports too.&lt;/p&gt;
&lt;p&gt;Self-hosted instances are now able to use International Domain Names (IDNs),
i.e. domain names that contain unicode characters. This feature is not yet
available for instances hosted by Snikket, but let us know if you&amp;rsquo;re
interested.&lt;/p&gt;
&lt;h3 id=&#34;other&#34;&gt;Other&lt;/h3&gt;
&lt;p&gt;Of course these are just the highlights. We&amp;rsquo;ve also improved a bunch of things
under the hood, either in Snikket or as part of &lt;a href=&#34;https://prosody.im/&#34;&gt;Prosody&lt;/a&gt;,
the open-source project which powers Snikket&amp;rsquo;s chat connections, and has been
updated in this new release.&lt;/p&gt;
&lt;p&gt;For more information, and more changes in this release, check out the &lt;a href=&#34;https://snikket.org/updates/release/20240904/&#34;&gt;release
notes&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;upgrading&#34;&gt;Upgrading&lt;/h2&gt;
&lt;p&gt;Upgrading an existing installation is super simple and takes less than a
minute! You can find instructions in the &lt;a href=&#34;https://snikket.org/updates/release/20240904/#upgrading&#34;&gt;&amp;lsquo;Upgrading&amp;rsquo; section&lt;/a&gt;
of the release notes.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you have any questions or feedback about the new release, come and join the
discussion in our &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;community chat&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We hope you enjoy Snikket. Happy chatting!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Snikket Server - July 2024 release</title>
      <link>https://snikket.org/blog/july-2024-server-release/</link>
      <pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/july-2024-server-release/</guid>
      <description>&lt;p&gt;We&amp;rsquo;re happy to introduce the July 2024 Snikket Server release.&lt;/p&gt;
&lt;p&gt;This is the core software of the Snikket project - a self-hostable &amp;ldquo;personal
messaging server in a box&amp;rdquo;. If you wish for something like Messenger, WhatsApp
or Signal, but not using their servers, Snikket is for you. Once deployed, you
can create invitation links for family, friends, colleagues&amp;hellip; any kind of
social group is a good fit for Snikket. The invitation links walk people through
downloading the &lt;a href=&#34;https://snikket.org/app/features/&#34;&gt;Snikket app&lt;/a&gt; and joining
your private Snikket instance.&lt;/p&gt;
&lt;h2 id=&#34;whats-new-in-this-release&#34;&gt;What&amp;rsquo;s new in this release?&lt;/h2&gt;
&lt;h3 id=&#34;web-portal&#34;&gt;Web portal&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve made some improvements to the admin dashboard, particularly around the
management of invitations.&lt;/p&gt;
&lt;h4 id=&#34;role-selection&#34;&gt;Role selection&lt;/h4&gt;
&lt;p&gt;Snikket supports roles, so that you can control who has access to admin
functions, but also who you may want to restrict from accessing some functions
(guests, kids, etc.).&lt;/p&gt;
&lt;p&gt;Previously, all invited users would be assigned the default &lt;a href=&#34;https://snikket.org/service/help/features/user_roles/&#34;&gt;user role&lt;/a&gt;
when they created their account. If you wanted the person to be an admin, or
more importantly, a limited user, you would have to scramble to the dashboard
to update their role after they registered.&lt;/p&gt;
&lt;p&gt;Now you can select the desired role when you create the create the invitation:&lt;/p&gt;
&lt;!-- TODO: screenshot --&gt;
&lt;h4 id=&#34;comments&#34;&gt;Comments&lt;/h4&gt;
&lt;p&gt;Another piece of feedback we had, was that after creating a bunch of
invitations, it was sometimes awkward to remember what a particular invitation
was meant for. Now you can add a brief note to an invitation when you create
it. This is for your information only, the invited user will not see what you
write, but you and other admins can see it when you view the list of pending
invitations.&lt;/p&gt;
&lt;!-- TODO: screenshot --&gt;
&lt;h4 id=&#34;sharing&#34;&gt;Sharing&lt;/h4&gt;
&lt;p&gt;After you have made your invitation, the next step is almost always to send it
to the person you want to invite. Currently we have a feature to help you copy
the link to your clipboard, so you can paste it into an email or text message,
or whatever. But some platforms offer a built-in &amp;ldquo;share&amp;rdquo; functionality:&lt;/p&gt;
&lt;!-- TODO: screenshot --&gt;
&lt;h4 id=&#34;new-setup-guidance&#34;&gt;New setup guidance&lt;/h4&gt;
&lt;p&gt;We&amp;rsquo;ve added some hints to nudge people in the right direction when they might
need it. For example, if you have no other users on the instance yet, we will
show a link to the invitation section so people can get their
friends, family and whoever on board.&lt;/p&gt;
&lt;p&gt;Relatedly, we now show the number of active user accounts on the instance in
the admin dashboard. This will be especially useful as we work towards
features to (optionally) allow non-admins to invite people to an instance.&lt;/p&gt;
&lt;h3 id=&#34;privacy-and-security&#34;&gt;Privacy and security&lt;/h3&gt;
&lt;p&gt;A couple of tweaks in this release:&lt;/p&gt;
&lt;p&gt;Snikket will no longer send a delivery error to someone you have blocked when
they send you a message. This makes it harder for them to detect that you have
blocked them (vs. just not reading their messages).&lt;/p&gt;
&lt;p&gt;We also updated the security headers sent by our web dashboard, and removed
the server version header from the web frontend. While not really a
privacy/security issue in itself, it&amp;rsquo;s simply nobody else&amp;rsquo;s business!&lt;/p&gt;
&lt;h3 id=&#34;for-admins&#34;&gt;For admins&lt;/h3&gt;
&lt;p&gt;We now support configuring the primary port used for STUN/TURN communication.
This is sometimes necessary if you are using an external TURN service that
uses a different port. Even if you are using Snikket&amp;rsquo;s built-in TURN server,
it can be used to avoid port conflicts.&lt;/p&gt;
&lt;p&gt;Snikket now supports deployment with International Domain Names (IDN). This
means that domains containing certain special characters should now work,
while previously some functionality was a bit buggy when using one of these
domains. If you encounter any issues, please let us know! Also note that this
only works for self-hosted installations right now, IDN is not yet supported
by our hosting service.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;announcement&amp;rdquo; functionality has been updated in this release. This is
mostly invisible, though we plan to expand this functionality in the future.
For now you will mostly benefit from the Snikket logo and the server name
accompanying the update notification messages you receive, and when an admin
sends announcements via the admin dashboard.&lt;/p&gt;
&lt;p&gt;Obtaining certificates should be a bit more robust since this release (that
is, going from something like 99% reliability to 99.9% reliability). We
noticed that occasionally certain temporary errors from Let&amp;rsquo;s Encrypt were not
handled very well. This mostly affects people setting up an instance for the
first time.&lt;/p&gt;
&lt;h3 id=&#34;translations&#34;&gt;Translations&lt;/h3&gt;
&lt;p&gt;Many thanks to people who added or updated the following languages for this
release: Chinese (Simplified), French, Italian, Polish, Spanish, Swedish and
Russian.&lt;/p&gt;
&lt;p&gt;If your language is missing or in need of updates and you think you could
help, let us know!&lt;/p&gt;
&lt;h3 id=&#34;everything-else&#34;&gt;Everything else&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve made many other fixes and improvements in this release, many of them
coming via our sister project &lt;a href=&#34;https://prosody.im&#34;&gt;Prosody&lt;/a&gt;. Thanks to
everyone who contributed with code, testing, documentation and feedback ❤️&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Snikket Android app temporarily unavailable in Google Play store [RESOLVED]</title>
      <link>https://snikket.org/blog/snikket-google-play-removal/</link>
      <pubDate>Sat, 13 Apr 2024 11:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-google-play-removal/</guid>
      <description>&lt;p&gt;We initially shared this news on our &lt;a href=&#34;https://fosstodon.org/@snikket_im/112251593085105632&#34;&gt;social media&lt;/a&gt; page, thinking
this was a temporary issue. But we&amp;rsquo;ve had no response from Google for several
days, and want to explain the situation in more detail.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 16th April:&lt;/strong&gt; Over a week after this began, Google have reinstated
the Snikket app on the Play Store and everything works again. Thanks to
everyone who gave us encouragement and support during this time! Feel free to
read on for details of what happened.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;We merged some changes from our upstream project, Conversations, and we
submitted the new version to Google for review. Before responding, they
removed the existing published version from the store. We have submitted a
new version (on 10th April) that we believe should satisfy Google, but they
have not yet published it or provided any feedback.&lt;/p&gt;
&lt;p&gt;This means that it&amp;rsquo;s not currently possible for Android users to install the
app using Google Play. We recommend that you install it via F-Droid instead.&lt;/p&gt;
&lt;h2 id=&#34;workaround-for-android-users&#34;&gt;Workaround for Android users&lt;/h2&gt;
&lt;p&gt;If you receive an invitation to Snikket, the Play Store link in the invitation
will not work. The best course of action is to install the app using an
open-source marketplace instead: F-Droid.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Follow the instructions on &lt;a href=&#34;https://f-droid.org&#34;&gt;f-droid.org&lt;/a&gt; to download and install F-Droid.&lt;/li&gt;
&lt;li&gt;Install &lt;a href=&#34;https://f-droid.org/en/packages/org.snikket.android/&#34;&gt;Snikket&lt;/a&gt; using F-Droid.&lt;/li&gt;
&lt;li&gt;After the Snikket app is installed, open your Snikket invitation link again.&lt;/li&gt;
&lt;li&gt;Tap the &amp;lsquo;Open the app&amp;rsquo; button.&lt;/li&gt;
&lt;li&gt;Follow the Snikket app&amp;rsquo;s instructions to set up your new Snikket account.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;the-full-story&#34;&gt;The full story&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m Matthew, founder of Snikket and lead developer. This is the story of how
we arrived at this situation with Google.&lt;/p&gt;
&lt;h3 id=&#34;it-all-began-when&#34;&gt;It all began when&amp;hellip;&lt;/h3&gt;
&lt;p&gt;A few months ago, Snikket, along with a number of other XMPP apps, found our
updates rejected by Google&amp;rsquo;s review team, claiming that because we upload the
address book entries of users to our servers, we need a &amp;ldquo;prominent disclosure&amp;rdquo;
of this within the app. The problem is&amp;hellip; &lt;strong&gt;we don&amp;rsquo;t upload the user&amp;rsquo;s address
book anywhere!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The app requests permission to read the address book. Granting this permission
is optional, and the reason is explained before the permission is requested.
If you grant the permission, the app has a local-only (no upload!) feature
that allows you to &amp;ldquo;link&amp;rdquo; your XMPP contacts with your phone address book
contacts, allowing you to unify things like contact photos. Contact
information from your address book is never uploaded.&lt;/p&gt;
&lt;p&gt;Many messaging apps, such as WhatsApp, Signal, and others, request access to
your address book so they can upload them to their servers and determine who
else you know that is using their service. Google have decided that&amp;rsquo;s what
we&amp;rsquo;re doing, and they won&amp;rsquo;t accept any evidence that we&amp;rsquo;re not.&lt;/p&gt;
&lt;p&gt;We don&amp;rsquo;t have telemetry in our app, but we assumed that this feature is
probably not used by most people, so we decided to remove it from the Play
Store version of the app rather than continue fighting with Google.&lt;/p&gt;
&lt;p&gt;Amusingly, Google also rejected the update that removed the &amp;lsquo;READ_CONTACTS&amp;rsquo;
permission. Multiple times. It took an appeal before they revealed that they
were rejecting the new version it because one of the beta tracks still had an
older version with the READ_CONTACTS permission. Weird.&lt;/p&gt;
&lt;p&gt;I fixed that, and submitted again. They rejected it again. This time they
said that they required a test login for the app. Funny, because we already
provided one long ago. I assumed the old test account was no longer working,
so I made them a new one and resubmitted the app. They rejected it again with
the same reason - saying we had not provided valid test account credentials.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;You didn’t provide an active demo/guest account or a valid username and password which we need to access your app.&amp;rdquo;
&amp;ndash; Google reviewers&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The weird thing was, when I logged in to that account to test it, I saw
that they &lt;em&gt;had&lt;/em&gt; logged in and even sent some messages. So they were lying?!&lt;/p&gt;
&lt;p&gt;We submitted an appeal with all the evidence that the account was working, and
their reviewers had even logged in and used it successfully. After some time,
they eventually responded that they wanted a &lt;em&gt;second&lt;/em&gt; test account. Why
couldn&amp;rsquo;t they just say that in the first place?!&lt;/p&gt;
&lt;p&gt;After adding credentials for a second account, and using the Snikket circles
features to ensure they could find each other easily, we resubmitted.&lt;/p&gt;
&lt;p&gt;Rejected again.&lt;/p&gt;
&lt;p&gt;This time the rejection reason was really the best one so far: they claimed
the app was unable to send or receive messages. Rather funny for a messaging
app that thousands of people use to send and receive messages daily.&lt;/p&gt;
&lt;h3 id=&#34;wait-a-messaging-app-that-cant-send-messages&#34;&gt;Wait, a messaging app that can&amp;rsquo;t send messages?&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://snikket.org/blog/snikket-google-play-removal/app-rejected-messaging-functionality.png&#34; alt=&#34;Screenshot of Google&amp;rsquo;s response: Issue found: Message functionality. The message sending and/or receiving functionality on your app doesn&amp;rsquo;t work as expected. For example: Your app is not able to send outgoing messages. Your app is not able to receive incoming messages.&#34; &gt;
&lt;/p&gt;
&lt;p&gt;Once again, I logged into the test account we had provided to Google, and once
again saw that they &lt;em&gt;had&lt;/em&gt; successfully exchanged messages between their two
test accounts. We submitted another appeal, with evidence.&lt;/p&gt;
&lt;p&gt;Eventually they responded, clarifying that their complaint was specifically
about the app when used with &lt;em&gt;Android Auto&lt;/em&gt;, their smart car integration. I do
not have such a car, and couldn&amp;rsquo;t find any contributor who had, but I found
that Google provide an emulator that can run on a PC, so I set that up on my
laptop and proceeded to test.&lt;/p&gt;
&lt;p&gt;You won&amp;rsquo;t be surprised to learn at this point that the messaging functionality
worked fine. We responded to the appeal, including a screencast I made of the
messaging functionality working with Android Auto. They informed us that they
were &amp;ldquo;unable to assist with the implementation&amp;rdquo; of their policies. Then at the
end of their response, suggested that if we think the app is compliant, that
we should resubmit it for review.&lt;/p&gt;
&lt;p&gt;So we resubmitted the app, which by this point had already been rejected &lt;strong&gt;7
times&lt;/strong&gt;. We resubmitted it &lt;strong&gt;with no modification at all&lt;/strong&gt;. We resubmitted the
version they rejected. They emailed us later that day to say it was live.&lt;/p&gt;
&lt;p&gt;How would I rate the developer experience of publishing an app with Google
Play? An unsurprising 1 star out of 5. If I could give zero, I would.&lt;/p&gt;
&lt;h3 id=&#34;the-removal&#34;&gt;The removal&lt;/h3&gt;
&lt;p&gt;But this was all a couple of months ago. Everything was fine. Until I merged
some of the nice things Daniel has been working on recently in Conversations,
the app upon which Snikket Android is based. We put the new version out for
beta testing and everything was going fine - the app passed review, and a few
weeks later with no major issues reported, we pushed the button to promote the
new version from beta to live on the store.&lt;/p&gt;
&lt;p&gt;On the 8th April we received an email from Google with the subject line:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Action Required: Your app is not compliant with Google Play Policies (Snikket)&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was ill this day, and barely working. For reasons that, if you have read
this far, you will hopefully understand, I decided to take up this fight when
I was feeling better. Confusingly, a couple of days later we received another
email with the same subject. At this point I realised with horror that the
first email was &lt;em&gt;not&lt;/em&gt; about the new update - they had reviewed the current
published version and decided to remove it entirely from the store.&lt;/p&gt;
&lt;p&gt;With Snikket unavailable, anyone trying to add a new Android user to their
Snikket instance (whether hosted or self-hosted) is going to have a hard time.
This is not good.&lt;/p&gt;
&lt;p&gt;Their complaint was that the privacy policy was not prominent enough within
the app. They had previously hit Conversations with the same thing. Daniel had
already put a link to the privacy policy in the main menu of that app and
&lt;strong&gt;this was already in the update waiting for their review&lt;/strong&gt;. They didn&amp;rsquo;t
reject the update until a couple of days later, and for a different reason.&lt;/p&gt;
&lt;p&gt;Unknown to me, Daniel had tried to re-add the &amp;lsquo;READ_CONTACTS&amp;rsquo; permission to
Conversations, hoping that with the new privacy policy link and other
disclaimers in place, that would be enough. They had already rejected that,
and he had removed the permission again. But he did this after I had already
started testing the new beta release of Snikket. The order of events went
something like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Daniel experimentally re-adds READ_CONTACTS permission to Conversations&lt;/li&gt;
&lt;li&gt;I merge Conversations changes into Snikket, and begin beta testing&lt;/li&gt;
&lt;li&gt;Conversations update gets rejected due to the permission, and Daniel reverts the READ_CONTACTS change&lt;/li&gt;
&lt;li&gt;Without knowing of the Conversations rejection, I promote the Snikket beta to the store.&lt;/li&gt;
&lt;li&gt;Google rejects the Snikket update&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What&amp;rsquo;s interesting is that Google rejected &lt;em&gt;only&lt;/em&gt; on the permission change.
The contacts integration itself was still disabled in Snikket. This is strong
evidence that Google just assumes that if you have the permission (and
presumably network permission too) then of course you must be uploading the
user&amp;rsquo;s contacts somewhere.&lt;/p&gt;
&lt;p&gt;As soon as I realised the problem, I merged the new changes from Conversations
and rushed a new upload to Google Play. However at the time of writing this,
several days later, Snikket remains unavailable in the store and no feedback
has been received from Google.&lt;/p&gt;
&lt;h3 id=&#34;this-is-an-unsustainable-situation&#34;&gt;This is an unsustainable situation&lt;/h3&gt;
&lt;p&gt;During this period we have had multiple people sign up for hosted Snikket
instances, and then cancel shortly after. This is almost certainly because a
vital step of the onboarding process (installing the app) is currently broken.
This is providing a bad experience for our users and customers, &lt;strong&gt;negatively
affecting the project&amp;rsquo;s reputation and income&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We are grateful that alternatives such as F-Droid exist, and allow people
access to open-source apps via a transparent process and without the tyranny
of Google and their faceless unaccountable review team. We need to ensure
these projects are supported, and continue to improve their functionality,
usability and user awareness.&lt;/p&gt;
&lt;p&gt;Finally, we also welcome the efforts that the EU has been working on with
things like the Digital Markets Act, to help break up the control that
Google&amp;rsquo;s (demonstrably) arbitrary review process has over the the success and
failure of projects, and the livelihoods of app developers.&lt;/p&gt;
&lt;p&gt;Google, are you there?&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://snikket.org/blog/snikket-google-play-removal/app-in-review.png&#34; alt=&#34;Screenshot of Google Play dashboard: Release summary: &amp;ldquo;in review&amp;rdquo;&#34; &gt;
&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Security notice: Snikket not affected by CVE-2024-3094</title>
      <link>https://snikket.org/blog/xz-backdoor-cve-2024-3094/</link>
      <pubDate>Sat, 30 Mar 2024 09:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/xz-backdoor-cve-2024-3094/</guid>
      <description>&lt;p&gt;A security vulnerability was intentionally added to a widely used open-source
project known as &amp;lsquo;xz&amp;rsquo;. This project is packaged in many operating systems, and
a lot of software depends upon it. The vulnerability has been assigned the
identifier &lt;em&gt;CVE-2024-3094&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Systems with the vulnerable package may allow an attacker to gain unauthorized
access to the system via SSH, if your system&amp;rsquo;s SSH server was linked to the
affected packages.&lt;/p&gt;
&lt;p&gt;Thankfully, the vulnerability was discovered before it reached most operating
systems. However if you are using a pre-release version of any Debian or Red
Hat distribution, you may be affected and should install the available
security updates and check for any signs of unauthorized access.&lt;/p&gt;
&lt;h2 id=&#34;snikket-server&#34;&gt;Snikket server&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/snikket-im/snikket-server&#34;&gt;Snikket server software&lt;/a&gt;
builds upon Debian base images. We can confirm that Snikket uses the stable
Debian release, and &lt;strong&gt;does not have the vulnerable packages&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;snikket-hosting&#34;&gt;Snikket Hosting&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://snikket.org/hosting/&#34;&gt;Snikket Hosting&lt;/a&gt; platform is run on Debian
servers. We also use the stable Debian release, and can confirm this
vulnerability &lt;strong&gt;has not affected our service&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;more-information&#34;&gt;More information&lt;/h2&gt;
&lt;p&gt;Although the vulnerability does not affect Snikket itself, always ensure you
install all available security updates for your host system to keep it secure.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://lists.debian.org/debian-security-announce/2024/msg00057.html&#34;&gt;Debian Security Advisory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2024-3094&#34;&gt;Red Hat CVE report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Snikket Hosting is now available!</title>
      <link>https://snikket.org/blog/snikket-hosting-launched/</link>
      <pubDate>Thu, 21 Mar 2024 00:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-hosting-launched/</guid>
      <description>&lt;p&gt;We originally launched the Snikket project because we believe that people need
an alternative to centralized single-owner communication systems. Those platforms,
including WhatsApp, Telegram, Messenger, require consent to undesirable terms
and privacy policies. Even Signal, while cryptographically a marvel, is still
subject to the control of a single organization and a single jurisdiction. Plus,
most of these platforms are tied to your phone number, which makes them unusable
or unsafe for some people.&lt;/p&gt;
&lt;p&gt;We believe that the ideal online communication network is larger than any
single organization, and that it should offer people &lt;strong&gt;freedom and choice&lt;/strong&gt;.
That&amp;rsquo;s why we built Snikket on open standards (XMPP) and everything we produce
is open source, so that people can inspect it and run it themselves.&lt;/p&gt;
&lt;p&gt;However, it became increasingly clear that, as easy as we make self-hosting,
it&amp;rsquo;s always going to require skills or time that people don&amp;rsquo;t have. If we want
everyone to be a part of this network, we can&amp;rsquo;t expect them all to learn
Linux, SSH and system administration!&lt;/p&gt;
&lt;p&gt;For some time now, we have been working on &lt;strong&gt;Snikket Hosting&lt;/strong&gt;, a simple
solution that enables anyone to get their own Snikket instance running for
their family, friends, clubs, etc. with no technical knowledge and just a few
clicks.&lt;/p&gt;
&lt;p&gt;Thanks to the help and feedback from all our beta testers, we&amp;rsquo;re happy to
announce that &lt;a href=&#34;https://snikket.org/hosting/&#34;&gt;Snikket Hosting&lt;/a&gt; is &lt;strong&gt;now
publicly available!&lt;/strong&gt; 🚀&lt;/p&gt;
&lt;p&gt;Our goal, as a not-for-profit organization, is to run this sustainably. Our
business model is a simple one that does not involve data harvesting/mining.
Instead we charge a simple fee per instance that you host with us (each
instance can have multiple users). This fee pays for the servers, maintenance
and other associated costs. Any extra revenue is used to further our goals -
building and promoting sustainable communication solutions.&lt;/p&gt;
&lt;p&gt;Snikket will continue to be available for self-hosting, as always. Today&amp;rsquo;s
launch is about providing new ways to get started with Snikket, not replacing
the options that are already available. If you are already self-hosting
Snikket, or planning to, nothing is changing for you. Though please do &lt;a href=&#34;https://snikket.org/donate/&#34;&gt;donate
to support the project&lt;/a&gt;, even a little helps!&lt;/p&gt;
&lt;h3 id=&#34;-pricing&#34;&gt;🪙 Pricing&lt;/h3&gt;
&lt;p&gt;The current cost for a hosted instance is roughly $6 USD or €5.50 EUR per
month, however the exact price may vary depending on your currency, region and
how you pay - to take into account taxes, fees and the affordability in
different regions.&lt;/p&gt;
&lt;p&gt;This last point was a concern that several people raised with us during
the beta period. After currency conversion, the average income between
countries can still vary dramatically, sometimes up to 2x or more. This puts
people from some regions at a disadvantage when purchasing many online
services that focus only on people in the US or Europe. We believe in a
&lt;strong&gt;global&lt;/strong&gt; communication network, so we hope that factoring this into our
price calculation will help to bridge that divide.&lt;/p&gt;
&lt;p&gt;All our plans include a 14-day trial period, so you can see what you&amp;rsquo;re
getting before we take any payment.&lt;/p&gt;
&lt;h3 id=&#34;-beta-users&#34;&gt;🦸 Beta users&lt;/h3&gt;
&lt;p&gt;As we promised when adding you to the beta, all beta users will be able to
continue using the service for free for a period of time. We will roll out
pricing for beta users in the coming months, including a special offer in
recognition of your support! You will have at least 2 months of notice before
we require you to upgrade to a paid plan. We will email you with details when
it&amp;rsquo;s ready.&lt;/p&gt;
&lt;h3 id=&#34;-jmp-partnership&#34;&gt;☎️ JMP partnership&lt;/h3&gt;
&lt;p&gt;Our partnership with &lt;a href=&#34;https://jmp.chat&#34;&gt;JMP.chat&lt;/a&gt; continues! Every active JMP
subscription is entitled to a free Snikket instance, which is a great
complement to their service when SMS is not enough (unlike SMS, Snikket
supports things like end-to-end encryption and video calling).&lt;/p&gt;
&lt;p&gt;If you are currently using a hosted Snikket instance that JMP provided to you,
nothing will change for you.&lt;/p&gt;
&lt;p&gt;However, if you signed up &lt;strong&gt;directly with Snikket&lt;/strong&gt; during the beta period (via
&lt;a href=&#34;https://my.snikket.org&#34;&gt;my.snikket.org&lt;/a&gt;), then you are not currently included
in JMP&amp;rsquo;s special offer. You can either choose to pay for your instance when
the time comes (see &amp;lsquo;Beta users&amp;rsquo; above), or we can move your instance to JMP&amp;rsquo;s
management. If you choose the latter, your instance will be managed by JMP and
you will no longer have access to it via the Snikket Hosting dashboard. Access
to your instance&amp;rsquo;s web portal will not be affected either way.&lt;/p&gt;
&lt;h3 id=&#34;-support-and-feedback&#34;&gt;💬 Support and feedback&lt;/h3&gt;
&lt;p&gt;While we are no longer in beta, this is still new ground for us. If you
encounter any problems or simply have questions, feel free to contact us
at &lt;a href=&#34;mailto:hosting@snikket.org&#34;&gt;hosting@snikket.org&lt;/a&gt; and we&amp;rsquo;ll do our best to
help.&lt;/p&gt;
&lt;h3 id=&#34;-thanks&#34;&gt;❤️ Thanks&lt;/h3&gt;
&lt;p&gt;We want to thank all of our community, beta testers, sponsors and donors,
including &lt;a href=&#34;https://jmp.chat&#34;&gt;JMP.chat&lt;/a&gt;, for their support in enabling this
launch. Thanks also to Neil from &lt;a href=&#34;https://decoded.legal/&#34;&gt;decoded.legal&lt;/a&gt; for
assistance with many of the legal aspects of launching this kind of service.&lt;/p&gt;
&lt;h3 id=&#34;-curious-to-try-out-snikket&#34;&gt;😺 Curious to try out Snikket?&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://my.snikket.org/&#34;&gt;Sign up for Snikket Hosting here!&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Snikket Server - January 2024 release</title>
      <link>https://snikket.org/blog/snikket-server-jan-2024-release/</link>
      <pubDate>Wed, 10 Jan 2024 00:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-server-jan-2024-release/</guid>
      <description>&lt;p&gt;🎉 It&amp;rsquo;s here! We&amp;rsquo;re happy to introduce the January 2024 Snikket Server release.&lt;/p&gt;
&lt;p&gt;This is the core software of the Snikket project - a self-hostable &amp;ldquo;personal
messaging server in a box&amp;rdquo;. If you wish for something like Messenger, WhatsApp
or Signal, but not using their servers, Snikket is for you. Once deployed, you
can create invitation links for family, friends, colleagues&amp;hellip; any kind of
social group is a good fit for Snikket. The invitation links walk people through
downloading the &lt;a href=&#34;https://snikket.org/app/features/&#34;&gt;Snikket app&lt;/a&gt; and joining
your private Snikket instance.&lt;/p&gt;
&lt;h2 id=&#34;whats-new-in-this-release&#34;&gt;What&amp;rsquo;s new in this release?&lt;/h2&gt;
&lt;h3 id=&#34;changes-to-circles&#34;&gt;Changes to Circles&lt;/h3&gt;
&lt;p&gt;While Snikket is designed for groups of people to easily communicate with each
other, we know that often people have multiple social groups. Our &lt;a href=&#34;https://snikket.org/service/help/features/circles/&#34;&gt;Circles&lt;/a&gt;
feature allows the admin of the Snikket instance to decide which people will
see each other within the Snikket apps, by grouping them into &amp;ldquo;circles&amp;rdquo;. For
example, you could use this to separate your family from your friends, even
within the same Snikket instance.&lt;/p&gt;
&lt;p&gt;In previous releases, the Snikket server automatically created a group chat,
and added everyone in the circle to that chat automatically. We received a lot
of feedback that these chats were either not really used, or sometimes
confusing (for example, because they are managed automatically by the server
and you cannot manage them yourself within the Snikket app). Other people
liked the group chats, but wished that more than one could be made!&lt;/p&gt;
&lt;p&gt;In this new release, creating a circle will no longer create a group chat
automatically. However you can also now create as many &amp;ldquo;circle chats&amp;rdquo; as you
want, and give them individual names. This can be useful for creating
per-topic chats for all members of a circle.&lt;/p&gt;
&lt;p&gt;Of course if you just want normal private group chats, you can still create
those within the Snikket app as usual, and manage the group yourself.&lt;/p&gt;
&lt;h3 id=&#34;last-activity-display&#34;&gt;Last activity display&lt;/h3&gt;
&lt;p&gt;Sometimes people drop off Snikket, intentionally or unintentionally. For
example, if they get a new phone and forget to reinstall the app or have
problems connecting. In the web interface you can now see when the user
was last active.&lt;/p&gt;
&lt;p&gt;You can use this information to clean up unused accounts, or reach out to
people who might need help regaining access to their account.&lt;/p&gt;
&lt;h3 id=&#34;connectivity-and-security&#34;&gt;Connectivity and security&lt;/h3&gt;
&lt;p&gt;We have made a number of connectivity improvements. Snikket now enables IPv6
by default (previously it had to be enabled manually). If you don&amp;rsquo;t have IPv6,
that&amp;rsquo;s fine&amp;hellip; thanks to new changes we have made, Snikket will now adapt
automatically to network conditions and connect using the best method that
works. We expect IPv6-only networks to become increasingly common in the years
ahead, so if your server is not currently set up for IPv6, consider doing
that.&lt;/p&gt;
&lt;p&gt;The new release now also supports DNSSEC and DANE 🔒, both of these are used to
improve connection security. Currently these are disabled by default, however,
because Snikket does not know if your system&amp;rsquo;s DNS resolver actually supports
DNSSEC. We may enable it automatically in future releases if Snikket can
determine that reliably. For now, &lt;a href=&#34;https://snikket.org/service/help/advanced/config/#snikket_tweak_dnssec&#34;&gt;it&amp;rsquo;s opt-in&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;faster-and-stronger-authentication&#34;&gt;Faster and stronger authentication&lt;/h4&gt;
&lt;p&gt;We&amp;rsquo;ve also been working on optimizing and strengthening app-to-server
authentication. A lot of this work was funded by NGI0+NLnet and is available
in our sister project, Prosody. You can read more details in the blog post
&lt;a href=&#34;https://blog.prosody.im/fast-auth/&#34;&gt;Bringing FASTer authentication to Prosody and XMPP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Snikket already supported a neat security measure called &amp;ldquo;channel binding&amp;rdquo;,
but it previously only worked over TLS 1.2 connections. TLS 1.3 usage has
increased rapidly in recent years, and we now support channel binding on
TLS 1.3 connections too. Channel binding prevents &lt;a href=&#34;https://en.wikipedia.org/wiki/Machine-in-the-middle_attack&#34;&gt;machine-in-the-middle attacks&lt;/a&gt;
if the TLS certificate is compromised somehow.&lt;/p&gt;
&lt;p&gt;All these features help protect against certain kinds of attack that were
deemed unlikely &lt;a href=&#34;https://snikket.org/blog/on-the-jabber-ru-mitm/&#34;&gt;until recently&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;dropping-older-security-protocols&#34;&gt;Dropping older security protocols&lt;/h4&gt;
&lt;p&gt;Mainly for compatibility reasons, Snikket previously supported an
authentication mechanism where the client sends the user&amp;rsquo;s password to the
server, but only over TLS-encrypted connections. This is how almost all
website login forms work today, from your webmail to your online banking.
However the Snikket apps actually use a &lt;a href=&#34;https://en.wikipedia.org/wiki/Salted_Challenge_Response_Authentication_Mechanism&#34;&gt;more secure login method&lt;/a&gt;,
which has many additional security features that you won&amp;rsquo;t find on most other
online services.&lt;/p&gt;
&lt;p&gt;Prioritizing security over compatibility, we have decided to disable less
secure mechanisms entirely. If you use your Snikket account with third-party
XMPP apps, bots or utilities that are not up to date with modern best
practices, this may affect you.&lt;/p&gt;
&lt;p&gt;Similarly, we have again reviewed and updated the TLS versions and ciphers
that Snikket supports, in line with &lt;a href=&#34;https://wiki.mozilla.org/Security/Server_Side_TLS&#34;&gt;Mozilla&amp;rsquo;s recommendations&lt;/a&gt;,
as we do in every release. This change also has the potential to affect
connectivity from some very old apps and devices.&lt;/p&gt;
&lt;h3 id=&#34;easy-account-restoration&#34;&gt;Easy account restoration&lt;/h3&gt;
&lt;p&gt;The Snikket apps, as well as many third-party apps, allow people to delete
their Snikket account from within the app.&lt;/p&gt;
&lt;p&gt;However, as the number of Snikket users has grown, so have reports from people
who accidentally deleted their account! This can be due to confusion - e.g.
intending to remove the account from the app, rather than removing it from the
server. A number of these cases were due to confusing or buggy third-party
apps. It doesn&amp;rsquo;t happen very often, but it was happening too often.&lt;/p&gt;
&lt;p&gt;Of course, deleted accounts can be restored from backups (which you have, of
course 😇) - but it was a complex time-consuming process to selectively
restore a single account without rolling back everyone else&amp;rsquo;s data.&lt;/p&gt;
&lt;p&gt;In this release, when a request is received from an app to delete a user&amp;rsquo;s
account, the server will lock the account and schedule its deletion in 7 days
(or whatever the server&amp;rsquo;s data retention time is set to). During this time,
the account can be restored easily from the web interface if it turns out to
have been a mistake.&lt;/p&gt;
&lt;h3 id=&#34;farewell-to-the-welcome-message&#34;&gt;Farewell to the welcome message&lt;/h3&gt;
&lt;p&gt;In previous releases, new accounts would receive an auto-generated &amp;ldquo;welcome
message&amp;rdquo; from the server. This had a &lt;a href=&#34;https://github.com/snikket-im/snikket-server/issues/59&#34;&gt;number of issues&lt;/a&gt;,
and we have decided to remove it for now. Instead we will work on integrating
any &amp;ldquo;welcome&amp;rdquo; functionality directly into the apps.&lt;/p&gt;
&lt;h3 id=&#34;languages-and-translations&#34;&gt;Languages and translations&lt;/h3&gt;
&lt;p&gt;Many languages received updates in this release, including French, German,
Indonesian, Polish, Italian and Swedish.&lt;/p&gt;
&lt;p&gt;We added support for two additional languages: Russian and Ukranian.&lt;/p&gt;
&lt;p&gt;Many thanks to all translators for their help with this effort!&lt;/p&gt;
&lt;div class=&#34;notification is-secondary&#34;&gt;
  Our last major release was made just weeks before the Russian invasion of
Ukraine shocked the world. We would like to take this opportunity to bring to
mind that this sad situation is ongoing. It directly affects some of the
contributors and users of our project, and many individuals, families and
communities. Please consider what you can do to help them.
&lt;/div&gt;

&lt;h3 id=&#34;other-changes&#34;&gt;Other changes&lt;/h3&gt;
&lt;p&gt;We only listed a handful of the main features here. The reality is that
beneath the hood, we have made a large number of changes to improve security,
performance and reliability. And we have in place the foundations for other
exciting things we have in the pipeline!&lt;/p&gt;
&lt;h2 id=&#34;installing-and-upgrading&#34;&gt;Installing and upgrading&lt;/h2&gt;
&lt;p&gt;Choose your adventure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you&amp;rsquo;re new to Snikket, you can head straight to the &lt;a href=&#34;https://snikket.org/quickstart/&#34;&gt;setup guide&lt;/a&gt;
for instructions on how to get started.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To upgrade an existing self-hosted instance to the new release, read the
&lt;a href=&#34;https://snikket.org/service/help/setup/upgrading/&#34;&gt;upgrading guide&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Customers on our hosting platform can expect the new release to be rolled out
soon, we&amp;rsquo;ll be in touch! If you have any questions, you can &lt;a href=&#34;https://snikket.org/hosting/#what-if-my-question-is-not-here&#34;&gt;contact support&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy chatting!&lt;/p&gt;
&lt;p&gt;P.S. If you&amp;rsquo;re planning to be at FOSDEM in a few weeks, we&amp;rsquo;ll be there, come
and say hi! We&amp;rsquo;d love to meet you :)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>On the jabber.ru MITM attack</title>
      <link>https://snikket.org/blog/on-the-jabber-ru-mitm/</link>
      <pubDate>Sat, 21 Oct 2023 16:30:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/on-the-jabber-ru-mitm/</guid>
      <description>&lt;p&gt;This post is about a recent security incident on a public XMPP service, which
provides jabber.ru and xmpp.ru. We have received a few questions from Snikket
users about whether they should be concerned about the security of their own
servers (Snikket also uses XMPP).&lt;/p&gt;
&lt;p&gt;The good news is that Snikket was not affected by this incident - this was a
targeted attack against the jabber.ru/xmpp.ru service specifically. Later in
the post we&amp;rsquo;ll share more information about what we&amp;rsquo;ve done, and what we have
planned, to ensure our systems are secure from such attacks.&lt;/p&gt;
&lt;h2 id=&#34;what-happened-with-jabberru&#34;&gt;What happened with jabber.ru?&lt;/h2&gt;
&lt;p&gt;It transpired yesterday that jabber.ru and xmpp.ru public XMPP services have
likely been subjected to interception of their encrypted traffic for at least
90 days, and possibly up to 6 months. It is not clear who performed the
interception, or why. Possibilities include law enforcement, or a compromise
of the infrastructure of two hosting providers (Hetzner and Linode) used by
the services.&lt;/p&gt;
&lt;p&gt;This post won&amp;rsquo;t go into too many technical details, for which we would refer
to &lt;a href=&#34;https://notes.valdikss.org.ru/jabber.ru-mitm/&#34;&gt;the original write-up published here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;machine in the middle&amp;rdquo; (MITM) attack targeted the jabber.ru and xmpp.ru
domains, and ended shortly after its discovery. We&amp;rsquo;re not aware of any
documented attacks of this nature on the XMPP network before, nor indeed other
internet services at this time.&lt;/p&gt;
&lt;h2 id=&#34;why-is-this-news&#34;&gt;Why is this news?&lt;/h2&gt;
&lt;p&gt;Although traffic interception is nothing new, previously it has mostly been
performed by passively observing traffic as it passed through network devices
on the internet. Snowden revealed how widespread this practice was back in
2013, prompting a large shift towards TLS encryption by default across the
internet. TLS protects traffic from observers, and today it is used to protect
everything you do online, from chatting, to checking your email, to online
banking.&lt;/p&gt;
&lt;p&gt;What makes this attack notable, is that it was an &amp;ldquo;active&amp;rdquo; attack - not just
passing traffic through, but modifying it. Specifically, they were decrypting
and re-encrypting traffic as it passed through a network device (the &amp;ldquo;machine
in the middle&amp;rdquo;) that had been placed between the jabber.ru server and the rest
of the internet.&lt;/p&gt;
&lt;p&gt;Usually TLS prevents such an attack from succeeding, as long as you verify
certificates. However in this case the attacker was able to obtain valid
certificates for the targeted domains, making all connections look like they
were genuine.&lt;/p&gt;
&lt;p&gt;With the advent of ACME-based certificate authorities such as Let&amp;rsquo;s Encrypt,
obtaining certificates is not at all hard for someone able to intercept and
respond to traffic that is sent to your server, and in this case that&amp;rsquo;s
exactly what happened.&lt;/p&gt;
&lt;h2 id=&#34;how-is-this-related-to-snikket&#34;&gt;How is this related to Snikket?&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s not, mostly. However, one thing we have in common is our hosting
provider - we use Hetzner for a number of our servers, including those that
power &lt;a href=&#34;https://snikket.org/hosting/&#34;&gt;Snikket Hosting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In response to the news of this attack, we have audited all our servers and
verified that none demonstrate the anomalous characteristics reported by the
jabber.ru team, confirming our belief that this was targeted only at
their services.&lt;/p&gt;
&lt;p&gt;We will be taking additional steps to safeguard our systems from similar
attacks, as a preventative measure. This includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Deploying a strict &lt;a href=&#34;https://letsencrypt.org/docs/caa/&#34;&gt;CAA record&lt;/a&gt;, ensuring
only our Let&amp;rsquo;s Encrypt account will be authorized to issue certificates for
our hosted domains (we already have DNSSEC in place to help secure this).
&lt;strong&gt;Update: The CAA record is now deployed.&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Setting up monitoring to alert on any suspicious certificates issued for our
hosted domains. We are not currently aware of suitable tooling that would
meet our needs (though there are some existing efforts in this area, such as
&lt;a href=&#34;https://github.com/SSLMate/certspotter&#34;&gt;certspotter&lt;/a&gt;). If we develop anything
new, we will share it with the community.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are also currently working hard on the next Snikket Server release, which
coincidentally supports the &lt;a href=&#34;https://en.wikipedia.org/wiki/Channel_binding&#34;&gt;&amp;ldquo;channel binding&amp;rdquo;&lt;/a&gt;
security feature. Channel binding is the ultimate protection against these kinds of attacks, and works even if
the attacker is able to obtain a valid TLS certificate. The protection will be
enabled by default on both hosted and self-hosted instances. This feature was
part of our &lt;a href=&#34;https://docs.modernxmpp.org/projects/auth/&#34;&gt;modern authentication and account security&lt;/a&gt;
work in Prosody, funded by NGI Assure via NLnet.&lt;/p&gt;
&lt;h3 id=&#34;custom-domains-with-snikket&#34;&gt;Custom domains with Snikket&lt;/h3&gt;
&lt;p&gt;If you use a custom domain with your hosted Snikket instance, or if you are
entirely self-hosting Snikket, you can also add a CAA record to increase
security. You need to do this with your DNS provider - we cannot do it for
you. We recommend using a relatively low TTL in case you make any mistakes.&lt;/p&gt;
&lt;p&gt;Note that although it helps improve the security of your instance, setting a
CAA record is entirely optional.&lt;/p&gt;
&lt;h5 id=&#34;custom-domains-on-our-hosting-platform&#34;&gt;Custom domains on our hosting platform&lt;/h5&gt;
&lt;p&gt;If you are using our hosting platform, your CAA record contents should look
like this &lt;strong&gt;exactly&lt;/strong&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;128 issue &amp;#34;letsencrypt.org;accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/75887657&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You only need to set it for the main domain of your Snikket instance. If you
use your domain for other things, &lt;strong&gt;do not&lt;/strong&gt; add this CAA record on your root
domain! E.g. If your Snikket instance is at &amp;lsquo;chat.example.com&amp;rsquo;, your CAA
record should also be at &amp;lsquo;chat.example.com&amp;rsquo;. Otherwise it will prevent you
from obtaining certificates for your other services.&lt;/p&gt;
&lt;h5 id=&#34;self-hosted-instances&#34;&gt;Self-hosted instances&lt;/h5&gt;
&lt;p&gt;If you are self-hosting Snikket, you can also set a CAA record, but you will
need to use your own account URI. You can run the following command in your
snikket directory to find the right URI to use:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker-compose exec snikket_server find /snikket/letsencrypt -name regr.json -exec grep uri {} +
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Remember to set the CAA only on the domain or subdomain you use for Snikket.
Put the URI (the part beginning with &lt;code&gt;https://&lt;/code&gt;) into the record, replacing
&lt;code&gt;URI-GOES-HERE&lt;/code&gt; in the example below:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;128 issue &amp;#34;letsencrypt.org;accounturi=URI-GOES-HERE&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you have a reverse proxy in front of your Snikket instance that
obtains its own certificates independently from your Snikket setup, you should
add an &lt;em&gt;additional&lt;/em&gt; CAA record in the same format with the accounturi that
your reverse proxy uses.&lt;/p&gt;
&lt;p&gt;After putting the CAA record in place, keep a close watch on Snikket and any
other services on your domain over the following weeks, to ensure they
successfully renew their certificates.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;We hope this post has been helpful! If you have any questions about your
Snikket setup, we have a helpful &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;community chat&lt;/a&gt;.
If you are using our hosted platform, you can also contact us via email at
&lt;a href=&#34;mailto:support@snikket.org&#34;&gt;support@snikket.org&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>State of Snikket 2023: Funding</title>
      <link>https://snikket.org/blog/snikket-2023-funding/</link>
      <pubDate>Mon, 18 Sep 2023 13:20:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-2023-funding/</guid>
      <description>&lt;p&gt;As promised in our ‘State of Snikket 2023’ overview post, and teased at the end of our first update post about app development, this post in the series is about that thing most of us open-source folk love to hate&amp;hellip; money.&lt;/p&gt;
&lt;p&gt;We are an open-source project, and not-for-profit. Making money is not our primary goal, but like any business we have upstream expenses to pay - to compensate for the time and specialist work we need to implement the Snikket vision. To do that, we need income.&lt;/p&gt;
&lt;p&gt;This post will cover where our funding has come from over the last couple of years and where we&amp;rsquo;ve been spending it. We&amp;rsquo;ll also talk a bit about where we anticipate finding funding over the next year or so, and what some of that is budgeted for.&lt;/p&gt;
&lt;p&gt;Our last post on this topic was two years ago, when we &lt;a href=&#34;https://snikket.org/blog/simply-secure-collaboration/&#34;&gt;announced the Open Technology Fund grant&lt;/a&gt; that allowed SuperBloom (then known as Simply Secure) to work on the UI/UX of the Snikket apps. Since then, other pieces of Snikket-related work have been supported by two more grants - both from projects managing funds dedicated to open source and open standards by the EU&amp;rsquo;s (&lt;a href=&#34;https://www.ngi.eu/about/&#34;&gt;Next Generation Internet&lt;/a&gt;) initiative.&lt;/p&gt;
&lt;p&gt;The first one was a project called DAPSI (Data Portability and Services Incubator), focused on enabling people to move their data more easily between different online services. DAPSI funded Snikket directly to support Matthew&amp;rsquo;s work on &lt;a href=&#34;https://docs.modernxmpp.org/projects/portability/&#34;&gt;account portability standards&lt;/a&gt;, which can be used not only in the software projects underlying Snikket itself, but any and all XMPP software. This one helped keep Matthew fed for much of 2021, and as we &lt;a href=&#34;https://snikket.org/blog/dapsi-fund-account-portability/&#34;&gt;described on our blog after the funding was confirmed&lt;/a&gt;, it kept him busy with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standardizing the necessary protocols and formats for account data import and export&lt;/li&gt;
&lt;li&gt;Developing open-source easy-to-use tools that allows people to export, import and migrate their account between XMPP services&lt;/li&gt;
&lt;li&gt;Building this functionality into Snikket&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The other grant was from the &lt;a href=&#34;https://nlnet.nl/assure/&#34;&gt;NGI Assure Fund administrated by NLnet&lt;/a&gt;. It was one Matthew applied for on behalf of the Prosody project, and helped keep him busy and fed through the second half of 2022 and into 2023. Prosody is the XMPP server project that the Snikket server software is built on, so any improvements there flow fairly directly to people using Snikket.&lt;/p&gt;
&lt;p&gt;NGI Assure is focused on improving the security of people&amp;rsquo;s online accounts, and their grant to Prosody was for work on bringing &lt;a href=&#34;https://docs.modernxmpp.org/projects/auth/&#34;&gt;new security features like multi-factor authentication&lt;/a&gt; to XMPP accounts. The work included in the scope of the grant is now complete, and some of it is already available to be used. The rest will be boxed up over the coming months and released, to start finding its way into XMPP software.&lt;/p&gt;
&lt;p&gt;Both of these successful grant applications are practical examples of the Snikket company serving as a way to fund important work on the software and standards that the Snikket software and services depend on. Work that can be hard to fund any other way. However, grants like these usually cover a medium-to-long-term piece of work with a very specific scope, which can divert time away from other parts of the project. It is hard to find grants with a focus on general improvements, bug fixing and maintenance. This is the main reason why there hasn&amp;rsquo;t been as much work on the app side of things, nor updates on this blog.&lt;/p&gt;
&lt;p&gt;We very much appreciate the grants we&amp;rsquo;ve received from all these funders, and the important features they have enabled us to implement. But ultimately we see &amp;ldquo;side income&amp;rdquo; like grants as a short-term way to plug the holes in our financial bucket while we&amp;rsquo;re still getting up and running. Our long term goal, as a social enterprise (&lt;a href=&#34;https://snikket.org/blog/snikket-cic/&#34;&gt;specifically a UK-based Community Interest Company&lt;/a&gt;), has always been to earn the income we need through donations and by providing commercial services to the community using Snikket software.&lt;/p&gt;
&lt;p&gt;When Snikket began, the main plan for this was to set up a hosting service, where people can pay a regular subscription to have us look after their Snikket server (more on this below). But over the last year or so we&amp;rsquo;ve discovered that there&amp;rsquo;s a lot to be gained from partnering with other social enterprises with shared values and related goals.&lt;/p&gt;
&lt;p&gt;One such company is &lt;a href=&#34;https://jmp.chat/&#34;&gt;JMP.chat&lt;/a&gt;, an innovative telephony company who provide phone numbers that can be used with XMPP apps, for both text messages and calls. They recently celebrated &lt;a href=&#34;https://blog.jmp.chat/b/launch-2023&#34;&gt;JMP&amp;rsquo;s official public launch&lt;/a&gt; a few months ago.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re very grateful to JMP for funding the other half of Matthew&amp;rsquo;s work hours while he was beavering away on the NGI Assure grant work. Why were they willing to do that? To answer that, we need to tell you a bit more about what they do.&lt;/p&gt;
&lt;p&gt;During the six years their service has been in beta testing, JMP&amp;rsquo;s first priority has been &lt;a href=&#34;https://soprani.ca/&#34;&gt;developing software gateways&lt;/a&gt; to allow XMPP apps to communicate with mobile phone networks, and vice-versa. However, many of their customers are newcomers to the world of XMPP. They would often struggle to find suitable apps with the required features for their platform, and struggle to find good servers on which they can register their XMPP accounts.&lt;/p&gt;
&lt;p&gt;What could be a better solution to this problem than a project that aims to produce a set of easy-to-use XMPP-compliant apps with a consistent set of features across multiple platforms? Yes - Snikket complements their service wonderfully!&lt;/p&gt;
&lt;p&gt;So we have been collaborating a lot with JMP (or more generally, Soprani.ca - their umbrella project for all their open-source projects, including JMP). On the app development side, we share code between Snikket Android and their Cheogram Android app (both are based on, and contribute back to,  Conversations). We have also worked to ensure that iOS is not left behind, integrating features such as an in-call dial pad to Snikket iOS as well.&lt;/p&gt;
&lt;p&gt;If JMP customers don&amp;rsquo;t already have access to a hosted XMPP server and neither the time or skills to run their own, they need one of those too. So JMP have been suggesting Snikket&amp;rsquo;s hosting service to customers who don&amp;rsquo;t have an XMPP account yet. With all the necessary features for a smooth experience, easy setup and hosting available, Snikket ticks all the boxes. In fact the latest version of Cheogram allows you to launch your own Snikket instance directly within the app!&lt;/p&gt;
&lt;p&gt;A lot of work has been put into ensuring the hosting service is easy, scalable and reliable - to be ready for JMP&amp;rsquo;s launch traffic and also well into the future.&lt;/p&gt;
&lt;p&gt;But while JMP is an excellent partner, Snikket isn&amp;rsquo;t only about JMP. We&amp;rsquo;re preparing for our own service to also exit beta before the end of this year. Once we do, revenue from the service will help us cover the costs of continuing to grow and advance all of our goals. Pricing has not been set yet, but we&amp;rsquo;re aiming for a balance between sustainable and affordable.&lt;/p&gt;
&lt;p&gt;JMP will continue to sponsor half of Matthew&amp;rsquo;s time on the project. The other half is covered by our other supporters. You know who you are and we&amp;rsquo;re very grateful for your support.&lt;/p&gt;
&lt;p&gt;The income sources we&amp;rsquo;ve talked about so far pay for Matthew&amp;rsquo;s time to work on Snikket and related projects. We also appreciate the donations a number of people have made to the project via LiberaPay and GitHub sponsorships. These help us pay for incidental expenses like;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Project infrastructure, including this website, domain names, and push
notification services and monitoring.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Development costs, like paying for an Apple developer account.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Travel costs of getting to conferences for presentations.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One other important thing these donations help to pay for is test devices.&lt;/p&gt;
&lt;p&gt;We buy, or are donated, second-hand devices for developing and testing the Snikket apps. Used devices are much cheaper, so we can get more test devices for the same budget. Also, most people don&amp;rsquo;t get a brand new device every year, so these slightly older devices are more likely to match what the average person is using.&lt;/p&gt;
&lt;p&gt;Finally, we consider the environmental benefit. Using older but functional devices gives them a second life, preventing them from being needlessly scrapped, and keeping them out of the growing e-waste piles our societies now produce.&lt;/p&gt;
&lt;p&gt;So that&amp;rsquo;s everything there is to share on the topic of Snikket&amp;rsquo;s
finances for now. But we&amp;rsquo;re not done with our &amp;lsquo;State of Snikket 2023&amp;rsquo;
updates, oh no.&lt;/p&gt;
&lt;p&gt;As we mentioned at the end of the last piece in this series, there&amp;rsquo;s at least one more coming, about new regulations for digital technology and online services. A number of governments around the world are passing or proposing laws that could affect Snikket - some of them a bit concerning - and we have a few things to say about them.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re also going to sneak in a review of the inaugural FOSSY conference Matthew presented at recently.&lt;/p&gt;
&lt;p&gt;Watch this space!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>State of Snikket 2023: The Apps</title>
      <link>https://snikket.org/blog/state-of-snikket-2023-the-apps/</link>
      <pubDate>Wed, 09 Aug 2023 14:05:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/state-of-snikket-2023-the-apps/</guid>
      <description>&lt;p&gt;As promised in our &lt;a href=&#34;https://snikket.org/blog/state-of-snikket-2023-intro/&#34;&gt;introduction to the series&lt;/a&gt;, welcome to the first of our &amp;lsquo;State of Snikket&amp;rsquo; update posts! This installment features all the app development news you could wish for.&lt;/p&gt;
&lt;p&gt;So what&amp;rsquo;s new in the world of Snikket apps?&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;uiux&#34;&gt;UI/UX&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;ve been following Snikket development for a while, you might remember that we were receiving UX advice on making our apps easier and more fun to use, thanks to the team at Simply Secure. Recently they&amp;rsquo;ve been busy with a UX transformation of their own, including renaming themselves SuperBloom. From the &lt;a href=&#34;https://simplysecure.org/blog/introducing-superbloom/&#34;&gt;blog post announcing this on their website&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;A superbloom is a rare event, when long-dormant wildflower seeds bloom together to transform a harsh landscape with renewed energy and resilience. We believe technology design is at a Superbloom inflection point, and we’re excited to be shaping it into a beautiful future.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We&amp;rsquo;re pleased to have them working with us again, creating some mock-ups (or &amp;ldquo;wireframes&amp;rdquo;) for updating the look and feel of the Snikket apps.&lt;/p&gt;
&lt;p&gt;These will guide the ongoing evolution of our existing Android and iOS apps, and we plan to use them when we begin prototyping web and desktop clients, using the new Snikket SDK (more on that later).&lt;/p&gt;
&lt;p&gt;So what about the existing apps?&lt;/p&gt;
&lt;h2 id=&#34;ios&#34;&gt;iOS&lt;/h2&gt;
&lt;p&gt;The release of our iOS app was the last big news we shared on the app front, and Snikket iOS was warmly welcomed! However it&amp;rsquo;s also fair to say it has had a couple of teething problems and is still a bit less polished than our Android app.&lt;/p&gt;
&lt;p&gt;Some of these issues are due to various constraints in iOS, requiring apps to be designed very differently to apps on other platforms. We have also had difficulties finding people who are familiar with both XMPP and iOS development, &lt;strong&gt;and&lt;/strong&gt; who have time and motivation to work with us on Snikket for iOS.&lt;/p&gt;
&lt;p&gt;Nevertheless, we have a good relationship with the developers of Siskin - which our iOS app is based on - and we&amp;rsquo;ll continue to work on improving it. If you&amp;rsquo;re keen to help, we&amp;rsquo;re always looking for additional &lt;a href=&#34;https://snikket.org/app/ios/&#34;&gt;beta testers&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;android&#34;&gt;Android&lt;/h2&gt;
&lt;p&gt;Meanwhile our Android app, the first app we released, continues to be widely used. It derives from Conversations by &lt;a href=&#34;https://gultsch.social/@daniel&#34;&gt;Daniel Gultsch&lt;/a&gt;
(iNPUTmice, also creator of the &lt;a href=&#34;https://codeberg.org/iNPUTmice/lttrs-android&#34;&gt;Ltt.rs email app for Android&lt;/a&gt;). We also maintain a good relationship with Daniel, and keep a close eye on upstream improvements.&lt;/p&gt;
&lt;p&gt;In fact, our app follows Conversations so closely that maintaining it as a build flavour upstream is under consideration as a potential option for the future. That would automate some of the work of releasing new versions, allowing us to bring new Conversations features and bug fixes to people using Snikket more quickly.&lt;/p&gt;
&lt;p&gt;Speaking of new features, the release of Conversations 3.0 will come with a whole Santa sack of them (&lt;a href=&#34;https://gist.github.com/iNPUTmice/30d3cd9bb5a66681620f15a441ee2625&#34;&gt;nitty-gritty technical details here&lt;/a&gt;), which will eventually make their way into Snikket on Android.&lt;/p&gt;
&lt;p&gt;Some of the anticipated features include emoji reactions, multimedia messages, improved message  editing (including edit histories), and full support for replies, which  Daniel says will include allowing us to jump to the original message
that was replied to.&lt;/p&gt;
&lt;p&gt;Another big change is in the handling of attachments, such as photos and  files sent in chats. Once Snikket is rebased on Conversations 3.0 these will be invisible to other apps on your device, unless and until you choose to export them. Just as you&amp;rsquo;d expect when they arrive in chats that are end-to-end encrypted, to protect your privacy.&lt;/p&gt;
&lt;p&gt;One change that we&amp;rsquo;re really excited about will finally bring the concept of &lt;a href=&#34;https://snikket.org/service/help/features/circles/&#34;&gt;Snikket&amp;rsquo;s circles&lt;/a&gt; to the app&amp;rsquo;s interface. This will allow people to easily filter their chats, for example between &amp;ldquo;Family&amp;rdquo;, &amp;ldquo;Friends&amp;rdquo; and &amp;ldquo;Work&amp;rdquo;. If you join a circle - for example one called &amp;ldquo;Family&amp;rdquo; - everyone in the Family circle will automatically be added to your contact list, and you&amp;rsquo;ll be added to theirs.&lt;/p&gt;
&lt;p&gt;After Conversations 3.0 is released, we&amp;rsquo;ll be able to group the chats associated with each circle together in your contact list, rather than having them all mixed together as they are now. Once the new interface arrives, you can safely share dank memes with your gaming friends in the &amp;ldquo;Game Night&amp;rdquo; circle, with confidence they won&amp;rsquo;t be accidentally shared with your family.&lt;/p&gt;
&lt;p&gt;So when will all these new features arrive?&lt;/p&gt;
&lt;p&gt;Initial plans aimed for &lt;a href=&#34;https://gultsch.social/@daniel/109901731906204123&#34;&gt;a November release&lt;/a&gt;, but it&amp;rsquo;s well established that software development can be unpredictable. Especially in the open-source world where maintainers are often stretched between many responsibilities. So even if it takes a bit longer to spit and polish, we&amp;rsquo;re not worried - and we&amp;rsquo;re fairly confident the first version of Snikket based on it will be appearing next year. Watch this space!&lt;/p&gt;
&lt;p&gt;Okay, we&amp;rsquo;ve covered Android and iOS. So what about these web and desktop apps we&amp;rsquo;ve listed as a goal of ours for some time?&lt;/p&gt;
&lt;p&gt;With more development time becoming available (more on that in a future post), we&amp;rsquo;ve been exploring how we might finally make these a reality.&lt;/p&gt;
&lt;h2 id=&#34;the-future-of-building-snikket-apps&#34;&gt;The future of building Snikket apps&lt;/h2&gt;
&lt;p&gt;One such exploration has resulted in a prototype &amp;lsquo;Snikket SDK&amp;rsquo; (Software Development Kit).&lt;/p&gt;
&lt;p&gt;&amp;ldquo;A what now?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Basically, it&amp;rsquo;s a cross-platform library that can handle all the digital
smoke signals involved in communicating with an XMPP server. It presents developers familiar with other chat APIs with an expert smoke signal interpreter, which they can connect to any chat app interface they design.&lt;/p&gt;
&lt;p&gt;Our hope is that this will make it easier to develop Snikket clients for
the web, desktop, and potentially other platforms. This includes
mobile GNU/Linux devices like the PinePhone, used with interfaces like
Phosh by distros like PureOS, Mobian, and postmarketOS.&lt;/p&gt;
&lt;p&gt;If this works out, whenever we make improvements to the SDK they can easily
be shared by all the apps using it, massively reducing the work involved
in supporting apps for an increasing number of platforms. But let&amp;rsquo;s not get
ahead of ourselves.&lt;/p&gt;
&lt;p&gt;So far its an early prototype - we haven&amp;rsquo;t even made a final
decision on programming language yet.&lt;/p&gt;
&lt;p&gt;Currently, we&amp;rsquo;re experimenting with Haxe, which can be compiled to a number of other languages, including JavaScript. Using this approach will allow us to build on existing XMPP libraries for the target platforms.&lt;/p&gt;
&lt;p&gt;By providing an easy-to-use development kit with all Snikket&amp;rsquo;s features already implemented, we hope to make it easier for per-platform development to focus on just the UI/UX layer, instead of getting dragged down reimplementing XMPP and business logic for every platform.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s important to note that we are not aiming to produce another XMPP library - many of those already exist. Rather, we&amp;rsquo;re focusing on a layer above that - an SDK that allows developers to easily work with a Snikket (or compatible XMPP server) with zero knowledge of how XMPP works.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll share additional progress as it happens, so once again, watch this space!&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all the news we&amp;rsquo;ve got for today.&lt;/p&gt;
&lt;p&gt;The next post will focus on the work we&amp;rsquo;ve been doing to set up
hosting of Snikket servers as a human-friendly subscription service, and
an ethical source of ongoing funding for Snikket development. It will also
cover how Snikket has been funded so far and what we&amp;rsquo;ve been spending the
money on.&lt;/p&gt;
&lt;p&gt;After that, we&amp;rsquo;re planning to take you on a deep dive into new
laws like the Digital Markets Act in the EU - and a similar ones in the
UK and elsewhere - and how they could impact social enterprises like Snikket,
developing Free Code software for use in decentralised networks. There&amp;rsquo;s
potentially some good news here and some rather worrying news.&lt;/p&gt;
&lt;p&gt;So keep an eye out for those over the coming weeks.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>State of Snikket 2023</title>
      <link>https://snikket.org/blog/state-of-snikket-2023-intro/</link>
      <pubDate>Wed, 09 Aug 2023 14:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/state-of-snikket-2023-intro/</guid>
      <description>&lt;p&gt;This is our first blog post for quite a while, and the last few have all been technical updates of various kinds about the Snikket software. In fact it&amp;rsquo;s been almost two years since the last post that gave a general progress update on the Snikket project itself, so let&amp;rsquo;s fix that!&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll be pleased to hear that Snikket is very much alive, and although there hasn&amp;rsquo;t been much of a show to see here, a bunch of stuff has been going on backstage.&lt;/p&gt;
&lt;p&gt;We plan to catch you up with our progress and various other topics through a series of upcoming blog posts. A number of these are inspired from questions we receive often, others are related to updates in the project, or changes in the industry and ecosystem which Snikket is a part of.&lt;/p&gt;
&lt;p&gt;Rather than cram a diverse range of topics into a single post, we&amp;rsquo;re going to break it up a little. Over the coming weeks, we&amp;rsquo;ll answer questions such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;What have we been working on over the last year?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What is the status of the Android and iOS apps?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What about the web and desktop apps we&amp;rsquo;ve been promising?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What did JMP.chat launch and what does that have to do with Snikket?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Where has funding come from to keep the lights lit at Snikket HQ?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What are the longer term plans for project funding?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What&amp;rsquo;s this Digital Markets Act thingy, is it good or bad, and what
implications does it (and other similar laws in the pipeline) have for
the future of Snikket, XMPP, interoperability of chat apps, and
decentralised online services more generally?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What did we get up to at the recent FOSSY conference in Portland, US?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What kind of test devices do we use and where do they come from?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Curious? Our first post is live, and it&amp;rsquo;s about the app development. Jump right in to &lt;a href=&#34;https://snikket.org/blog/state-of-snikket-2023-the-apps/&#34;&gt;State of Snikket 2023: The Apps&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>F-Droid security update</title>
      <link>https://snikket.org/blog/fdroid-security-update/</link>
      <pubDate>Sun, 11 Dec 2022 10:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/fdroid-security-update/</guid>
      <description>&lt;p&gt;Last week, Snikket Android users who installed the Snikket app via F-Droid
started &lt;a href=&#34;../fdroid-security-warning&#34;&gt;receiving a warning&lt;/a&gt; that it contained a
security vulnerability. This wasn&amp;rsquo;t entirely accurate, as the problem wasn&amp;rsquo;t
with the Snikket app itself but specifically F-Droid&amp;rsquo;s own build of the app
that was using an outdated version of the WebRTC library.&lt;/p&gt;
&lt;p&gt;As of today, F-Droid have published a &lt;a href=&#34;https://f-droid.org/packages/org.snikket.android/&#34;&gt;new build (2.10.3) of the Snikket app&lt;/a&gt;
that now uses an up-to-date version of the WebRTC component. The new WebRTC
was built by us and published to Maven Central, one of the sources that
&lt;a href=&#34;https://f-droid.org/2022/07/22/maven-central.html&#34;&gt;F-Droid trusts&lt;/a&gt; for
certain pre-built dependencies.&lt;/p&gt;
&lt;p&gt;Like many communication apps, Snikket uses WebRTC for audio and video calls.
We&amp;rsquo;ve been working on finding a way for F-Droid to build Snikket with a more
up-to-date version of the WebRTC library that meets the constraints of their
build processes and policies. We&amp;rsquo;re happy that this work has paid off!&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;d like to thank &lt;a href=&#34;https://gitlab.com/licaon-kter&#34;&gt;Licaon_Kter&lt;/a&gt; from F-Droid
for support and guidance in finding a suitable resolution to the problem. Also
thanks to &lt;a href=&#34;https://bargen.dev/&#34;&gt;Danilo Bargen&lt;/a&gt; from Threema, who worked on
incorporating Threema&amp;rsquo;s existing WebRTC build scripts into a project
publishing plain unmodified builds of the library. Our own &lt;a href=&#34;https://github.com/snikket-im/webrtc-android&#34;&gt;WebRTC build
process&lt;/a&gt; has been derived from
these projects.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve confirmed that our new WebRTC build will also be adopted by upcoming
builds of the Conversations and Cheogram apps in F-Droid, and it is also
available to any other XMPP app that would prefer to use it instead of
Threema&amp;rsquo;s patched version or maintaining their own.&lt;/p&gt;
&lt;p&gt;There is likely to be more work on this area in the future. In the long term,
the ideal solution will be F-Droid building WebRTC themselves, as they do with
apps that they publish. However this requires resources - both technical
expertise and computing power. If it sounds like something you could help the
F-Droid team with, &lt;a href=&#34;https://gitlab.com/fdroid/admin/-/issues/364&#34;&gt;check out this issue&lt;/a&gt;
for more information or to follow along on their progress.&lt;/p&gt;
&lt;p&gt;Finally, this positive news goes further than just resolving the security
warning. The older version of WebRTC that F-Droid was using for Snikket builds
was adding some friction that prevented us from easily merging new changes
from Conversations (the &lt;a href=&#34;https://snikket.org/open-source/&#34;&gt;upstream project&lt;/a&gt; for the Snikket
Android app). With a new WebRTC in place, it will now be much easier to
regularly synchronize the Snikket app with all the new improvements in
Conversations once again.&lt;/p&gt;
&lt;p&gt;(P.S. Did you know that the Conversations project recently announced funding
from NLnet to support &lt;a href=&#34;https://gultsch.social/@daniel/109381130050801061&#34;&gt;Conversations 3.0&lt;/a&gt;,
a major new milestone in the project&amp;rsquo;s development - we&amp;rsquo;re super excited!)&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll be sure to share details of new updates here in the future. Meanwhile,
if you&amp;rsquo;re using Snikket F-Droid&amp;hellip; &lt;a href=&#34;https://f-droid.org/packages/org.snikket.android/&#34;&gt;go update!&lt;/a&gt; :)&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Notes on the F-Droid security warning</title>
      <link>https://snikket.org/blog/fdroid-security-warning/</link>
      <pubDate>Thu, 08 Dec 2022 10:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/fdroid-security-warning/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update 2022-12-11:&lt;/strong&gt; A new update (2.10.3) is &lt;a href=&#34;../fdroid-security-update&#34;&gt;has been published&lt;/a&gt;,
and the security warning should clear after installing this update.&lt;/p&gt;
&lt;p&gt;Snikket Android users who installed the app via F-Droid may receive a warning
from F-Droid telling them that the app has a vulnerability and that they
&amp;ldquo;recommend uninstalling immediately&amp;rdquo;. First of all - don&amp;rsquo;t panic! This is a
over-simplified generic warning that is scary, but the actual situation is
not quite so scary and has an explanation. Here goes&amp;hellip;&lt;/p&gt;
&lt;h1 id=&#34;how-f-droid-works&#34;&gt;How F-Droid works&lt;/h1&gt;
&lt;p&gt;When an app is developed and ready for release, it must be compiled and built,
to produce the final app file (e.g. APK) that can be installed on devices.&lt;/p&gt;
&lt;p&gt;Most app stores let developers upload their built apps. For example, we build
the Snikket on our build servers and then upload it to Google Play.&lt;/p&gt;
&lt;p&gt;However, F-Droid is different. Instead of accepting ready-built apps from
developers, they instead download the app&amp;rsquo;s source code and &lt;strong&gt;build it
themselves&lt;/strong&gt;. This has a number of advantages: you can be sure that every app
in F-Droid has source available, and (as long as you trust the F-Droid folk
and systems), you know the app you install matches exactly the published
source code and hasn&amp;rsquo;t got any surprises.&lt;/p&gt;
&lt;h1 id=&#34;webrtc-woes&#34;&gt;WebRTC woes&lt;/h1&gt;
&lt;p&gt;The Snikket app, along with many other apps supporting audio/video calls on
Android, depends on an open-source WebRTC component developed by Google as
part of the Chromium project.&lt;/p&gt;
&lt;p&gt;However, building the WebRTC component is not trivial. It requires a lot of
system resources, downloading many &lt;em&gt;gigabytes&lt;/em&gt; of source code, and the process
uses some Google-specific build tools.&lt;/p&gt;
&lt;p&gt;Rather than attempt build WebRTC from source, the F-Droid build process has
historically been pulling in third-party pre-built versions of the library
&lt;a href=&#34;https://f-droid.org/2022/07/22/maven-central.html&#34;&gt;from other sources&lt;/a&gt;.
Originally these builds came from Google&amp;rsquo;s Maven repository, but Google
announced &lt;a href=&#34;https://groups.google.com/g/discuss-webrtc/c/Ozvbd0p7Q1Y/m/M4WN2cRKCwAJ&#34;&gt;they would no longer publish new WebRTC builds&lt;/a&gt;
some time ago (the source code continues to be available and updated of
course). Many F-Droid apps have remained stuck on an old version of WebRTC due
to this, and the F-Droid project has remained without the resources needed to
build WebRTC reproducibly from scratch as part of their usual build pipelines.&lt;/p&gt;
&lt;p&gt;In August 2022, a lot of apps in F-Droid &lt;a href=&#34;https://gitlab.com/fdroid/fdroiddata/-/merge_requests/11530&#34;&gt;were switched&lt;/a&gt;
to a newer (but still third-party) build of WebRTC, published by the Threema
developers. Unfortunately, this build is patched and optimized for Threema&amp;rsquo;s
usage of WebRTC in &lt;em&gt;their&lt;/em&gt; app. As a result, their build has poor
interoperability with software and services in the XMPP ecosystem, including
the popular &lt;a href=&#34;https://jmp.chat/&#34;&gt;JMP&lt;/a&gt; service. When asked if they would
consider tweaking their build to improve interoperability they (quite
reasonably) declined, stating that the build is really &lt;a href=&#34;https://gitlab.com/fdroid/fdroiddata/-/merge_requests/11530#note_1066765652&#34;&gt;only intended for
their own app&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Meanwhile, WebRTC is a complex and widely-used component. Security researchers
have found &lt;a href=&#34;https://gitlab.com/fdroid/fdroiddata/-/merge_requests/11496#note_1047414675&#34;&gt;multiple vulnerabilities&lt;/a&gt;.
However, WebRTC is technically developed as part of the Chromium web browser
project (the open-source version of Google Chrome), and this is the context in
which most of the vulnerabilities have been discovered and reported. Chromium
exposes the WebRTC API to every web page you visit, while the usage of WebRTC
in mobile apps such as Snikket is significantly more restricted.&lt;/p&gt;
&lt;p&gt;While it&amp;rsquo;s not ideal to be using an old version of WebRTC, we are at this time
&lt;strong&gt;unaware of any security issues&lt;/strong&gt; in the build that F-Droid is using that
would impact Snikket and the way it uses WebRTC. F-Droid&amp;rsquo;s security warning
has been added to a wide range of apps using WebRTC as a precaution (not just
Snikket), but at no point have any of the apps confirmed to be specifically
vulnerable to any of the issues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; WebRTC is generally a complex component. If you &lt;em&gt;do&lt;/em&gt; have any
concerns about WebRTC security (in Snikket or any mobile app) and believe you
may be specifically targeted, we recommend to avoid answering unexpected calls
from strangers. Although we are not aware of any existing issues, past issues
have generally required you to accept a call from a malicious party before any
exploit can take place. Therefore any attacker would first need to know your
Snikket address &lt;em&gt;and&lt;/em&gt; rely on you accepting their call.&lt;/p&gt;
&lt;h1 id=&#34;what-can-you-do&#34;&gt;What can you do?&lt;/h1&gt;
&lt;p&gt;We&amp;rsquo;re actually close to finally resolving the issue, with the co-operation of
&lt;a href=&#34;https://f-droid.org/2022/04/25/from-user-to-contributor-and-beyond.html&#34;&gt;F-Droid contributors&lt;/a&gt;,
and are hoping we can get an update to Snikket (and other apps in the same
situation with WebRTC) published by F-Droid very soon.&lt;/p&gt;
&lt;p&gt;In the meantime, you have the following options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Simply press &lt;strong&gt;&amp;lsquo;Ignore&amp;rsquo;&lt;/strong&gt; on F-Droid&amp;rsquo;s warning for now, and wait for their
builds to be fixed. &lt;strong&gt;This is the recommended course of action for most
existing F-Droid users.&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Alternatively, switch to builds provided by us, using Google Play or Aurora
store. These are built with a modern WebRTC version. Note that these builds
also include libraries from Google to support push notifications. If you are
running a pure &amp;ldquo;de-Googled&amp;rdquo; Android variant, you &lt;em&gt;won&amp;rsquo;t&lt;/em&gt; want these builds and
they may not work correctly on such devices anyway.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a third option, we&amp;rsquo;re looking into setting up our own F-Droid repository
where we would be able to publish our own official FOSS builds with a modern
WebRTC version. This is not currently available, but we&amp;rsquo;ll be sure to announce
it here and on our &lt;a href=&#34;https://fosstodon.org/@snikket_im&#34;&gt;social media&lt;/a&gt; when it&amp;rsquo;s
ready.&lt;/p&gt;
&lt;h1 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;We greatly value the role F-Droid plays in mobile app distribution and
security on Android. We still believe that it is generally the best option for
most users who care about open-source values to install apps on their device.&lt;/p&gt;
&lt;p&gt;However, in this case an ongoing issue with their build processes and policies
has turned into an unnecessarily alarming recommendation to uninstall the app
without sufficient explanation to users.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll continue working with F-Droid to resolve the issue for Snikket and all
the other apps affected, and are looking forward to sharing news of updated
builds with you soon!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The &lt;a href=&#34;../fdroid-security-update&#34;&gt;good news is here&lt;/a&gt;!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Server updates for ARM systems</title>
      <link>https://snikket.org/blog/server-updates-for-arm/</link>
      <pubDate>Tue, 01 Feb 2022 10:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/server-updates-for-arm/</guid>
      <description>&lt;p&gt;We have a couple of important announcements relevant to people running the
Snikket server software on ARM devices, including Raspberry Pi. Systems using
ARM processors are increasingly popular for self-hosting due to their
increased efficiency, lower cost and minimal energy consumption.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;../jan-2022-server-release/&#34;&gt;Snikket January 2022 server release&lt;/a&gt; was an
exciting release for us, but some users on ARM-based systems reported some
difficulties upgrading to the new version.&lt;/p&gt;
&lt;h2 id=&#34;web-interface-arm-compatibility&#34;&gt;Web interface ARM compatibility&lt;/h2&gt;
&lt;p&gt;Due to a couple of issues with the way our new release was built, the release
for certain ARM devices did not include all the necessary components for the
web interface to start. If you are affected by this, you may notice the web
portal being unavailable on your instance after upgrading. Inspecting the logs
may reveal failure to load the module &amp;ldquo;aiohttp&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;We have fixed our build process, and pushed an updated release. Although the
new version is available for all platforms (not only ARM) the only other
changes are some translation improvements in the web portal.&lt;/p&gt;
&lt;p&gt;To upgrade to the new release, see our &lt;a href=&#34;https://snikket.org/service/help/setup/upgrading/&#34;&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;compatibility-with-debian-10&#34;&gt;Compatibility with Debian 10&lt;/h2&gt;
&lt;p&gt;The second issue we discovered is that users with systems running Debian 10 or
Raspbian 10 (&amp;ldquo;buster&amp;rdquo;) may encounter an issue where the service fails to
start. Inspecting the logs may reveal errors such as &amp;ldquo;permission denied&amp;rdquo; or
various errors related to &amp;ldquo;time&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;The container security rules supplied in Debian 10 are out of date. The old
rules do not allow access to modern methods of requesting the current time
from the system (the current time is necessary for a range of functionality,
including verifying certificates are not expired).&lt;/p&gt;
&lt;p&gt;Luckily there are a couple of options to fix it. For example, just upgrading
your system from Debian/Raspbian 10 to 11 will automatically resolve the
issue. Alternatively, if you&amp;rsquo;d like to avoid upgrading your system right now,
a fixed package has been provided by the Debian backports team. We have &lt;a href=&#34;https://snikket.org/service/help/setup/troubleshooting/#problems-on-debianraspbian-10-buster-on-raspberry-pi-or-arm-devices&#34;&gt;full
details in our troubleshooting guide&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you have any trouble upgrading on any platform, feel free to stop by our
&lt;a href=&#34;https://snikket.org/contact/&#34;&gt;community chat&lt;/a&gt; and we&amp;rsquo;ll be happy to help you out!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>January 2022 server release</title>
      <link>https://snikket.org/blog/jan-2022-server-release/</link>
      <pubDate>Wed, 19 Jan 2022 12:45:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/jan-2022-server-release/</guid>
      <description>&lt;p&gt;New year, new Snikket: We’re excited to introduce a new release of the Snikket server! The Snikket server is an easy-to-install server package that allows you to run your own private messaging service for family, friends and other small groups.&lt;/p&gt;
&lt;p&gt;The main focus since the previous server release in November has been on the DAPSI-funded Account Portability feature, which allows people to export and import account data for backup and migration purposes.&lt;/p&gt;
&lt;p&gt;For information on how to upgrade from a previous release, see our quick &lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/docs/setup/upgrading.md&#34;&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;account-import-and-export&#34;&gt;Account import and export&lt;/h2&gt;
&lt;p&gt;Last year, &lt;a href=&#34;https://snikket.org/blog/dapsi-fund-account-portability/&#34;&gt;we announced&lt;/a&gt; that we had been selected for funding to improve the state of account portability/migration in Snikket and XMPP. You can read more background information about this project at the &lt;a href=&#34;https://docs.modernxmpp.org/projects/portability/&#34;&gt;XMPP Account Portability project&lt;/a&gt; homepage on Modern XMPP. This release finally introduces the results of our work on this project in Snikket.&lt;/p&gt;
&lt;p&gt;Snikket users can export their account data from within the web portal. A new &amp;ldquo;Manage your data&amp;rdquo; button provides easy access to the export functionality. This can be used for backup purposes or to take account data to another service provider.&lt;/p&gt;
&lt;p&gt;The data is exported in a &lt;a href=&#34;https://xmpp.org/extensions/xep-0227.html&#34;&gt;standardized format&lt;/a&gt; which can be supported by any XMPP server, further strengthening the interoperability of Snikket with other existing XMPP-based chat services.&lt;/p&gt;
&lt;p&gt;After successful registration via the web portal (not via the app yet), new users are offered a form where they can upload their account data. This data could come from a Snikket server or another compliant XMPP server, allowing users to more easily move to the Snikket ecosystem of small, federated instances.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://snikket.org/blog/jan-2022-server-release/snikket-account-import-export-ss.png&#34;
    alt=&#34;Two screenshots: one showing an account data import option, the other showing an account data export option&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;A glimpse of the new import and export interfaces&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;We are very grateful for the support of the NGI DAPSI team and the EU funding that allowed us to complete this important piece of our roadmap!&lt;/p&gt;
&lt;h2 id=&#34;improved-resource-monitoring&#34;&gt;Improved resource monitoring&lt;/h2&gt;
&lt;p&gt;Our previous release &lt;a href=&#34;https://snikket.org/blog/nov-2021-server-release/#resource-monitoring&#34;&gt;introduced metrics&lt;/a&gt; in the web admin dashboard (the &amp;ldquo;System Health&amp;rdquo; section), and the ability to export those to monitoring systems such as Prometheus via the OpenMetrics API. This release includes more improvements in this area, including more accurate memory usage monitoring, and Snikket can now also report the amount of storage used by file uploads.&lt;/p&gt;
&lt;h2 id=&#34;internal-changes&#34;&gt;Internal changes&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;ve upgraded the Snikket Docker images from Debian 10 to 11. We&amp;rsquo;ve also upgraded Prosody, which brings a whole bunch of changes, including reduced memory usage and a more robust DNS implementation. This release should also restore update notifications, which have been unreliable in some previous versions.&lt;/p&gt;
&lt;h2 id=&#34;installing-or-upgrading&#34;&gt;Installing or upgrading&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re new to Snikket and want to try out the new release, check out our &lt;a href=&#34;https://snikket.org/service/quickstart/&#34;&gt;quick-start guide&lt;/a&gt;. If you already use Snikket, head over to our &lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/docs/setup/upgrading.md&#34;&gt;upgrade guide&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Folks using our hosting service, the new release will be available in your dashboard in the next day or so.&lt;/p&gt;
&lt;p&gt;Our next focus will be on polishing the next version of our iOS app, so we can release a lot of
exciting improvements to app store users. Stay tuned for another post about that soon. Meanwhile&amp;hellip; happy chatting! :)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 20/01:&lt;/strong&gt; A small hotfix was pushed to the release to solve a lingering issue with update notifications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 31/01:&lt;/strong&gt; Systems running Debian 10 or Raspbian 10 on ARM should review our upgrade notes before installing this release.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Snikket Server - 2022-01-13 security release</title>
      <link>https://snikket.org/blog/snikket-jan-2021-security-release/</link>
      <pubDate>Thu, 13 Jan 2022 14:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-jan-2021-security-release/</guid>
      <description>&lt;h1 id=&#34;snikket-server---2022-01-13-security-release&#34;&gt;Snikket Server - 2022-01-13 security release&lt;/h1&gt;
&lt;p&gt;A security flaw has been found and fixed in a core component of the
Snikket server software, Prosody. A fix has been released today, and it
is recommended that everyone upgrades as soon as possible to receive the
fix.&lt;/p&gt;
&lt;p&gt;The flaw would allow an attacker to trigger the Snikket server to consume
extreme amounts of resources (CPU and RAM), resulting in a denial of
service.&lt;/p&gt;
&lt;h2 id=&#34;upgrading&#34;&gt;Upgrading&lt;/h2&gt;
&lt;p&gt;You can find instructions for upgrading to the latest release in our
&lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/docs/setup/upgrading.md&#34;&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you are a Snikket hosting customer, you will receive an email with
information about upgrading your instance.&lt;/p&gt;
&lt;h2 id=&#34;questions&#34;&gt;Questions&lt;/h2&gt;
&lt;h3 id=&#34;what-is-a-denial-of-service-attack&#34;&gt;What is a &amp;ldquo;Denial of Service&amp;rdquo; attack?&lt;/h3&gt;
&lt;p&gt;A &amp;ldquo;Denial of Service&amp;rdquo; attack (DoS) is any attack that causes an internet
service (such as Snikket) to become unavailable to its users, i.e.
unable to handle requests. In Snikket&amp;rsquo;s case, this means users would be
temporarily unable to exchange messages, make calls, or share media and
files.&lt;/p&gt;
&lt;h3 id=&#34;is-any-data-at-risk&#34;&gt;Is any data at risk?&lt;/h3&gt;
&lt;p&gt;This flaw does not expose any data to the attacker. It simply causes
Snikket to consume large amounts of memory and stop responding.&lt;/p&gt;
&lt;h3 id=&#34;what-is-the-impact-of-this-issue&#34;&gt;What is the impact of this issue?&lt;/h3&gt;
&lt;p&gt;Snikket may use large amounts of CPU and RAM while trying to handle
traffic that has been specially crafted by an attacker to trigger this
flaw. If Snikket is running on a server alongside other services,
Snikket&amp;rsquo;s excessive use of resources may negatively impact those
services as well.&lt;/p&gt;
&lt;h3 id=&#34;how-was-this-issue-discovered&#34;&gt;How was this issue discovered?&lt;/h3&gt;
&lt;p&gt;The issue was discovered by the Prosody development team during a review
of the code. It is not known to have been actively exploited by anyone.
However, now that the fix has been published, it may bring more
attention to the flaw. It is recommended that you upgrade as soon as
possible.&lt;/p&gt;
&lt;h3 id=&#34;what-other-changes-are-in-this-release&#34;&gt;What other changes are in this release?&lt;/h3&gt;
&lt;p&gt;This security release only contains changes that fix the security issue.
No features or other fixes have been introduced in this release.&lt;/p&gt;
&lt;h3 id=&#34;is-there-a-workaround&#34;&gt;Is there a workaround?&lt;/h3&gt;
&lt;p&gt;If you cannot upgrade immediately, you can run the following command in
your Snikket directory (where docker-compose.yml is located) to disable
WebSocket support temporarily:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker-compose exec -it snikket prosodyctl shell module unload websocket
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;WebSockets are enabled by default, but not used by any of the official
clients; they are only needed for Web-based clients. Web-based clients
should in addition be able to (be configured to) fall back to the
unaffected BOSH endpoint.&lt;/p&gt;
&lt;p&gt;Note that the above workaround is temporary - it will be reset if you
restart Snikket for any reason. It is recommended to upgrade Snikket to
achieve a permanent fix.&lt;/p&gt;
&lt;h3 id=&#34;how-can-i-tell-if-my-version-is-affected&#34;&gt;How can I tell if my version is affected?&lt;/h3&gt;
&lt;p&gt;The fix has been released in &amp;lsquo;beta.20220113&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;To check your version, log in to the Snikket web portal with your admin
account. Then click on the &amp;ldquo;Snikket service&amp;rdquo; text at the bottom of the
page. View the section &amp;ldquo;Software Versions&amp;rdquo; and ensure that the &amp;lsquo;Prosody&amp;rsquo;
component reports &lt;code&gt;Snikket test 48-3d061&lt;/code&gt;. If you see &lt;code&gt;0.dev&lt;/code&gt;, &lt;code&gt;37-e5d49&lt;/code&gt;
or any number lower than &lt;code&gt;48&lt;/code&gt; then your Snikket is not up to date yet.
Follow the &lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/docs/setup/upgrading.md&#34;&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;further-information&#34;&gt;Further information&lt;/h2&gt;
&lt;p&gt;If you have any questions or concerns about this release, you can &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;join
the Snikket community chat or contact us directly&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;references&#34;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/security/advisory_20220113/&#34;&gt;Original Prosody advisory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>November 2021 server release</title>
      <link>https://snikket.org/blog/nov-2021-server-release/</link>
      <pubDate>Thu, 18 Nov 2021 17:45:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/nov-2021-server-release/</guid>
      <description>&lt;p&gt;We&amp;rsquo;re excited to introduce a new release of the Snikket server! The Snikket
server is an easy-to-install server package that allows you to run your own
private messaging service for family, friends and other small groups.&lt;/p&gt;
&lt;p&gt;Since the previous server release, we&amp;rsquo;ve been focusing our work mainly on the
Snikket apps, especially the first release of our iOS app. We&amp;rsquo;ve continued
work on the server part of Snikket though, and we&amp;rsquo;re glad to share a range of
new improvements with you now.&lt;/p&gt;
&lt;p&gt;For information on how to upgrade from a previous release, see our quick
&lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/docs/setup/upgrading.md&#34;&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;ios-improvements&#34;&gt;iOS improvements&lt;/h2&gt;
&lt;p&gt;In case you missed it, we &lt;a href=&#34;https://snikket.org/blog/snikket-ios-public-release/&#34;&gt;released&lt;/a&gt; the
first version of our iOS app to the app store a couple of months ago. We&amp;rsquo;ve
been continuing to develop the app, and more releases are already in the
pipeline.&lt;/p&gt;
&lt;p&gt;Upon the app&amp;rsquo;s initial release there were still a few &amp;ldquo;rough edges&amp;rdquo;, such as
the lack of notifications for group messages while the app is closed. Fixing a
number of these issues required work on the server, and so that has been a big
focus of this release.&lt;/p&gt;
&lt;p&gt;In particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encrypted messages show a nicer notification (&amp;ldquo;You have received an encrypted message&amp;rdquo;). Displaying the contents of encrypted messages without opening the app is not yet possible, but is planned.&lt;/li&gt;
&lt;li&gt;The app can now show notifications from group chats even while the app is closed. A couple more small changes are required before this works seamlessly, and these will be included in a future app update.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now that these issues are resolved, a link to the iOS app will be shown by
default on the Snikket invitation page, starting from this release.&lt;/p&gt;
&lt;h2 id=&#34;file-sharing-limit-increased&#34;&gt;File sharing limit increased&lt;/h2&gt;
&lt;p&gt;You can now share files up to 100MB using Snikket! Previously this was limited
to 16MB for technical reasons. Although most shared files are much smaller
than 16MB, there is the occasional need to share larger files. Now you&amp;rsquo;re
covered.&lt;/p&gt;
&lt;p&gt;To help server operators plan their system resources, it&amp;rsquo;s now possible to set
a &lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/docs/advanced/config.md#snikket_upload_storage_gb&#34;&gt;service-wide quota&lt;/a&gt;
for the storage of uploaded files. This means that even if your users have a
little too much fun with the new limits, you can be sure your system won&amp;rsquo;t run
out of disk space.&lt;/p&gt;
&lt;h2 id=&#34;limited-accounts&#34;&gt;Limited accounts&lt;/h2&gt;
&lt;p&gt;In the previous release we introduced the ability to select whether an account
is an administrator or a normal user. In this release we add one further type:
&amp;ldquo;limited&amp;rdquo; accounts.&lt;/p&gt;
&lt;p&gt;A limited account has a number of restrictions. In particular they:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;may only communicate with users and group chats on the same server,&lt;/li&gt;
&lt;li&gt;may not create public channels,&lt;/li&gt;
&lt;li&gt;may not invite new users to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The purpose of limited accounts is to allow you to grant use of the server for
communication with other users of the server only. This can be applied to
accounts for children or guest users, for example.&lt;/p&gt;
&lt;p&gt;For more information, see the documentation on &lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/docs/features/user_roles.md&#34;&gt;User Roles&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;resource-monitoring&#34;&gt;Resource monitoring&lt;/h2&gt;
&lt;p&gt;The web admin dashboard now shows some basic statistics about your server
resources, such as system load and memory usage of the various Snikket
components. This can be helpful to ensure Snikket is performing well and you
have enough resources available to serve your users.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://snikket.org/blog/nov-2021-server-release/snikket-web-resources.png&#34;
    alt=&#34;Screenshot of the resources panel in the Snikket web interface&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Screenshot of the resources panel in the Snikket web interface&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;server-announcements&#34;&gt;Server announcements&lt;/h2&gt;
&lt;p&gt;In the same system health area of the admin dashboard, you can also now send
an announcement message to all users of your server - e.g. to inform them
about upgrades and maintenance.&lt;/p&gt;
&lt;h1 id=&#34;support-and-questions&#34;&gt;Support and questions&lt;/h1&gt;
&lt;p&gt;As usual if you need any help or have questions about the new release, you&amp;rsquo;re
welcome to join our &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;community chat&lt;/a&gt; where folk will be glad to
help you out.&lt;/p&gt;
&lt;p&gt;Stay tuned for more upcoming releases, and&amp;hellip; happy chatting!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Snikket iOS app now publicly released</title>
      <link>https://snikket.org/blog/snikket-ios-public-release/</link>
      <pubDate>Tue, 31 Aug 2021 14:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-ios-public-release/</guid>
      <description>&lt;p&gt;This is the announcement many people have been waiting for since the project
began!&lt;/p&gt;
&lt;p&gt;Opinions are often strong about which is the best mobile operating system.
However, while it varies by region and demographic, wherever you are it&amp;rsquo;s very
likely that you have Apple users in your life, even if you don&amp;rsquo;t use one
yourself. We want to ensure that the platform you use (by choice or otherwise)
is not a barrier to secure and decentralized communication with the important
people in your life.&lt;/p&gt;
&lt;p&gt;The lack of a suitable client for iOS was an obstacle to many groups adopting
Snikket and XMPP. For this reason, today&amp;rsquo;s release of a Snikket app for Apple&amp;rsquo;s
iPhone and iPad devices is a significant milestone for the project.&lt;/p&gt;
&lt;h2 id=&#34;a-community-effort&#34;&gt;A community effort&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s a journey that began late last year with the announcement that we would
be &lt;a href=&#34;https://snikket.org/blog/sponsoring-group-omemo-in-siskin/&#34;&gt;sponsoring support for group chat encryption&lt;/a&gt;
in Siskin IM, the open-source iOS XMPP client developed by &lt;a href=&#34;https://tigase.net/&#34;&gt;Tigase&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Tigase folk have been very supportive of our project, and I&amp;rsquo;d like to
especially thank Andrzej for his assistance and patience with all my newbie
iOS development questions!&lt;/p&gt;
&lt;p&gt;There are many other folk who have also helped unlock this achievement. This
includes everyone who helped to fund the development work - especially Waqas
Hussain, the kind folk at &lt;a href=&#34;https://jmp.chat/&#34;&gt;jmp.chat&lt;/a&gt; and of course absolutely
everyone who has donated to the project. The majority of donations are
anonymous so it&amp;rsquo;s impossible to thank everyone individually, but the amount of
support we&amp;rsquo;ve received as a project is amazing, and really gives us confidence
in achieving even more ambitious milestones in the future.&lt;/p&gt;
&lt;p&gt;Funding aside, we couldn&amp;rsquo;t have refined the app without help from our diligent
beta testers - with particular thanks to Michael DiStefano, Martin Dosch, mimi8999
and Nils Thiele for their bug-catching and comprehensive feedback. Everyone
participating in the beta programme has helped shape the app we&amp;rsquo;re releasing
today.&lt;/p&gt;
&lt;h2 id=&#34;what-happens-now&#34;&gt;What happens now?&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;ll be rolling out a Snikket server update shortly that will add a link to
the iOS app from Snikket invitation pages.&lt;/p&gt;
&lt;div class=&#34;notification is-secondary&#34;&gt;
  &lt;strong&gt;Update:&lt;/strong&gt; The iOS app is now enabled by default since our &lt;a href=&#34;https://snikket.org/blog/nov-2021-server-release/&#34;&gt;November 2021 server
release&lt;/a&gt;! The following step is no longer necessary.
&lt;/div&gt;

&lt;p&gt;If you&amp;rsquo;re eager to make the app available to your users before then, you can
add the following line to your snikket.conf:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SNIKKET_WEB_APPLE_STORE_URL=https://apps.apple.com/us/app/snikket/id1545164189
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After saving the file, apply the change with the command &lt;code&gt;docker-compose up -d&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you are using the &lt;a href=&#34;https://snikket.org/hosting/&#34;&gt;Snikket hosting&lt;/a&gt; service, you will get an
email soon that explains how to enable the app store link for your instances.&lt;/p&gt;
&lt;h2 id=&#34;were-not-done-yet&#34;&gt;We&amp;rsquo;re not done yet&lt;/h2&gt;
&lt;p&gt;This is a big milestone, without a doubt. But we&amp;rsquo;re not completely done. The
app is not perfect (yet!) and we&amp;rsquo;re still working on many things. But we
believe this is no reason not to share it with the world as early as we can.&lt;/p&gt;
&lt;h3 id=&#34;push-notification-compatibility&#34;&gt;Push notification compatibility&lt;/h3&gt;
&lt;p&gt;The first thing to note (especially as many non-Snikket users will also be
excited about a new iOS XMPP client on the scene) is that our primary focus
has been on the app working seamlessly with Snikket servers. We&amp;rsquo;re committed
to XMPP interoperability, but time and resources mean we can&amp;rsquo;t develop and
test every change in pace with every XMPP server.&lt;/p&gt;
&lt;p&gt;Although we expect it to generally work, there are some known compatibility
issues currently. Specifically, due to the strict &amp;ldquo;no background network
connections&amp;rdquo; policy for iOS apps, we have needed to adapt push notification
handling slightly differently to what is supported on most XMPP servers today.
The extensions we use are &lt;a href=&#34;https://xeps.tigase.net//docs/push-notifications&#34;&gt;openly published by Tigase&lt;/a&gt;,
and we have made available community modules for Prosody (&lt;a href=&#34;https://modules.prosody.im/mod_cloud_notify_encrypted&#34;&gt;mod_cloud_notify_encrypted&lt;/a&gt;,
&lt;a href=&#34;https://modules.prosody.im/mod_cloud_notify_priority_tag&#34;&gt;mod_cloud_notify_priority_tag&lt;/a&gt; and
&lt;a href=&#34;https://modules.prosody.im/mod_cloud_notify_filters.html&#34;&gt;mod_cloud_notify_filters&lt;/a&gt;),
and &lt;a href=&#34;https://github.com/tigase/tigase-xeps/issues/4&#34;&gt;discussion has begun&lt;/a&gt; on
moving these extensions over to the XMPP Standards Foundation standards
process. We welcome help and contributions towards evolving XMPP&amp;rsquo;s current
push notification support. If you&amp;rsquo;re interested, reach out!&lt;/p&gt;
&lt;p&gt;Until then, although some backwards-compatibility considerations
are in the app, this means it&amp;rsquo;s very possible you may experience issues with
notifications on some non-Snikket servers when the app is closed (though
Tigase servers and Prosody servers with the community modules enabled should
be fine).&lt;/p&gt;
&lt;h3 id=&#34;language-support&#34;&gt;Language support&lt;/h3&gt;
&lt;p&gt;The app is currently only available in English, which is an unfortunate
contrast from all other Snikket projects which are available in many languages
already.&lt;/p&gt;
&lt;p&gt;Updating the app to support translation of the interface is high on our priority
list. After this is implemented, we will also be looking for help from translators,
so stay tuned for further announcements.&lt;/p&gt;
&lt;h3 id=&#34;other-work-in-progress&#34;&gt;Other work in progress&lt;/h3&gt;
&lt;p&gt;Other known issues that we are working on:&lt;/p&gt;
&lt;div class=&#34;notification is-secondary&#34;&gt;
  &lt;strong&gt;Update:&lt;/strong&gt; These issues are now resolved in our &lt;a href=&#34;https://snikket.org/blog/nov-2021-server-release/&#34;&gt;November 2021 server release&lt;/a&gt;!
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Notifications for OMEMO-encrypted messages show a potentially-confusing
message about the app lacking OMEMO support. This will be fixed by the same
server update that adds the app to the Snikket invitation page.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Group chat notifications are not yet working. This will also be rolled
out as a future server update.&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course, we will also soon be incorporating feedback from the &lt;a href=&#34;https://snikket.org/blog/simply-secure-collaboration/&#34;&gt;usability
audit and testing sessions&lt;/a&gt; when that work is
completed.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I want to say a final thanks to our entire community for supporting the
project. Snikket has &lt;a href=&#34;https://snikket.org/about/goals/&#34;&gt;ambitious goals&lt;/a&gt;, and the progress we&amp;rsquo;re
making couldn&amp;rsquo;t be achieved without all the help and support we&amp;rsquo;ve received.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://snikket.org/contact/&#34;&gt;Drop us feedback&lt;/a&gt; about the app if you try it out, file &lt;a href=&#34;https://github.com/snikket-im/snikket-ios/issues&#34;&gt;bug reports and feature
requests&lt;/a&gt; to help us with
planning and, if you can, &lt;a href=&#34;https://snikket.org/donate/&#34;&gt;donate&lt;/a&gt; to help sustain the development
of the entire project.&lt;/p&gt;
&lt;p&gt;We look forward to welcoming more users to the XMPP network than ever before!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Improving Snikket&#39;s usability in collaboration with Simply Secure</title>
      <link>https://snikket.org/blog/simply-secure-collaboration/</link>
      <pubDate>Mon, 23 Aug 2021 10:00:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/simply-secure-collaboration/</guid>
      <description>&lt;p&gt;One of the primary goals of the Snikket project is improving the usability of
open communication software. We see usability as one of the major barriers to
broader adoption of modern communication systems based on open standards and
free, libre, open-source software. By removing this barrier, we open the door
of secure and decentralized communication freedom to many vulnerable groups
for which it was previously inaccessible or impractical.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://simplysecure.org/&#34;&gt;Simply Secure&lt;/a&gt; is a non-profit organization working in user interface (UI)
and user experience (UX) design. They specialize in combining human-centered
design with the complex technical requirements of privacy-first secure
systems. Our first introduction to Simply Secure was while contributing to
&lt;a href=&#34;https://decentpatterns.xyz/&#34;&gt;Decentralization Off The Shelf (DOTS)&lt;/a&gt;, a unique and valuable project
to document and share successful design patterns across the decentralized
software ecosystem.&lt;/p&gt;
&lt;p&gt;Now, thanks to funding from the &lt;a href=&#34;https://www.opentech.fund/labs/usability-lab/&#34;&gt;OTF&amp;rsquo;s Usability Lab&lt;/a&gt;, we&amp;rsquo;re
pleased to announce that Simply Secure will be working with us over the coming
months to identify issues and refine the UX across the project, with a special
focus on our iOS app.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve made a lot of progress on the &lt;a href=&#34;https://snikket.org/app/ios/&#34;&gt;Snikket iOS app&lt;/a&gt; recently,
largely based on valuable feedback from our beta testers, and we are getting
excitingly close to a general release. However there is still some work to be
done.&lt;/p&gt;
&lt;p&gt;The expert folk at Simply Secure will be performing a usability audit of the
current app, as well as conducting &lt;em&gt;usability testing&lt;/em&gt;, which is the study of
how people use the app, and what struggles they face while completing specific
tasks.&lt;/p&gt;
&lt;p&gt;Using information from these analyses the Simply Secure team will assist with
producing wireframes (sketches of what the app&amp;rsquo;s interface should look like)
and actionable advice to improve the UX of the iOS app and Snikket as a whole.
You will find information on how to participate later in this post.&lt;/p&gt;
&lt;h2 id=&#34;what-is-ux-anyway&#34;&gt;What is UX anyway?&lt;/h2&gt;
&lt;p&gt;The modern UX design movement is a recognition that technology should be
accessible and easy to use for everyone. Good design can assist and empower
people, poor design can hinder and even harm people. The need for design goes
far beyond making a user interface look beautiful. Software that is not
visually appealing may affect someone&amp;rsquo;s enjoyment of an application, but an
aesthetically-pleasing interface is not magically user-friendly.&lt;/p&gt;
&lt;p&gt;Therefore designing for a good user experience is about more than just making
the interface look good, it&amp;rsquo;s about considering how the software fits into a
person&amp;rsquo;s life, what they need from the software (and what they don&amp;rsquo;t need) and
how they expect it to behave.&lt;/p&gt;
&lt;p&gt;These are tricky things to get right. Every user is different, and a broad
range of input must be taken into consideration as part of a good design
process.&lt;/p&gt;
&lt;h2 id=&#34;ux-methodologies&#34;&gt;UX methodologies&lt;/h2&gt;
&lt;p&gt;There are various ways to gather information useful for making informed
decisions about UX improvements. A common easy and cheap approach is to add
metrics and analytics to an app. This can tell you things like how often
people tap a particular button, or view a particular screen. Developers and
designers can use this information to learn which features are popular, which
should be removed, or made more visible.&lt;/p&gt;
&lt;p&gt;This approach has drawbacks. Firstly it only tells you &lt;em&gt;what&lt;/em&gt; users are doing,
it doesn&amp;rsquo;t tell you &lt;em&gt;why&lt;/em&gt; they are doing it, or what they are thinking and
feeling - for example if they are frustrated while looking for a particular
feature or setting. Metrics can tell you that making a button more prominent
increased the click rate, but it won&amp;rsquo;t tell you if half the users who clicked
on the button were expecting it to do something else! This isn&amp;rsquo;t really going
to give you enough information to improve usability.&lt;/p&gt;
&lt;p&gt;Another significant drawback with a focus on metrics is the amount of data the
app must share with the developers. People generally don&amp;rsquo;t expect apps on
their device to be quietly informing developers about the time they spend in
the app, what they look at and what buttons they press. Such data collection
may be made &amp;ldquo;opt-in&amp;rdquo;, and there are modern projects such as &lt;a href=&#34;https://crypto.stanford.edu/prio/&#34;&gt;Prio&lt;/a&gt;, working
to bring privacy and anonymity to such data collection through cryptographic
techniques.&lt;/p&gt;
&lt;p&gt;A wildly different but much more valuable approach is to directly study people
while they use the app - a technique known as &amp;ldquo;usability testing&amp;rdquo;. Unlike
silent data collection, usability testing directly pairs individual users or
groups with an expert while they are asked to perform specific tasks within
the app. Although this requires significantly more time and effort it produces
more detailed and specific insights into the usability of an interface.&lt;/p&gt;
&lt;p&gt;Advantages of this kind of study include the ability to listen and learn more
deeply the needs of specific types of users, particularly minorities whose
problems could easily be drowned out by larger groups of users in a simple
statistics-driven data collection approach. It also allows you to capture
peoples&amp;rsquo; thought processes, by asking them to explain each step as they
complete tasks within the app.&lt;/p&gt;
&lt;h2 id=&#34;participation-and-looking-forward&#34;&gt;Participation and looking forward&lt;/h2&gt;
&lt;p&gt;We can&amp;rsquo;t wait to begin our first usability testing facilitated by the
experienced team at Simply Secure, and incorporate their findings into
Snikket&amp;rsquo;s development.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re interested in taking part, or know someone who would be a good fit
for this project, we&amp;rsquo;d love to talk to you for 30 minutes to better understand
how to improve Snikket. There will be no invasions of privacy as a result of
this research. All identifying information will be removed. We will take all
necessary and appropriate precautions to limit any risk of your participation.
Anything that we make public about our research will not include any
information that will make it possible to identify you. Research records will
be kept in a secure location, and only Simply Secure and Snikket personnel
will have access to them.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Appointment slots are available from 24th August to 3rd September.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The &lt;a href=&#34;https://snikket.org/app/ios/&#34;&gt;usability testing phase&lt;/a&gt; of this project has now
ended. Many thanks to everyone who participated, and helped spread the word!&lt;/p&gt;
&lt;h2 id=&#34;further-reading&#34;&gt;Further reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Comparison_of_usability_evaluation_methods&#34;&gt;Comparison of usability evaluation methods (wikipedia.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://simplysecure.org/blog/user-testing-cheatsheet&#34;&gt;User Testing Cheat Sheet (simplysecure.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://simplysecure.org/blog/participant-rights&#34;&gt;Safeguarding Research Participants With A Bill Of Rights (simplysecure.org)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>May 2021 server release</title>
      <link>https://snikket.org/blog/may-2021-server-release/</link>
      <pubDate>Wed, 19 May 2021 12:45:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/may-2021-server-release/</guid>
      <description>&lt;p&gt;We&amp;rsquo;re pleased to introduce a new release of the Snikket server. The Snikket
server is an easy-to-install server package that allows you to run your own
private messaging service for family, friends and other small groups.&lt;/p&gt;
&lt;p&gt;As well as some new features, this release has some &lt;a href=&#34;https://prosody.im/security/advisory_20210512/&#34;&gt;important security
fixes&lt;/a&gt; for the built-in Prosody component. We advise all
administrators to update as soon as possible.&lt;/p&gt;
&lt;p&gt;For information on how to upgrade, see the (very short) &lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/docs/setup/upgrading.md&#34;&gt;upgrade guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;web-interface&#34;&gt;Web interface&lt;/h2&gt;
&lt;h3 id=&#34;user-and-role-management&#34;&gt;User and role management&lt;/h3&gt;
&lt;p&gt;This release brings a new interface for viewing and editing user accounts on
the server. Among the changes is the ability to select the &amp;ldquo;access level&amp;rdquo; of
an account via the web interface. In particular this allows you to add/remove
other administrators of your server.&lt;/p&gt;
&lt;p&gt;In the future we will also be adding an additional &amp;rsquo;limited&amp;rsquo; access level that
can be used to restrict access to features such as invites and federation for
certain user accounts (such as guests and minors).&lt;/p&gt;
&lt;h3 id=&#34;invitations&#34;&gt;Invitations&lt;/h3&gt;
&lt;p&gt;Invitation pages now include a link to download the &lt;a href=&#34;https://f-droid.org/en/packages/org.snikket.android/&#34;&gt;Snikket app from
F-Droid&lt;/a&gt;, as well as Google Play. Although F-Droid doesn&amp;rsquo;t yet
support the &lt;a href=&#34;https://gitlab.com/fdroid/fdroidclient/-/issues/1932&#34;&gt;seamless registration flow&lt;/a&gt;, it&amp;rsquo;s important that
we help people discover free (as in freedom) alternatives whenever possible!&lt;/p&gt;
&lt;h3 id=&#34;translations&#34;&gt;Translations&lt;/h3&gt;
&lt;p&gt;Translation improvements have been made for Polish, German, Danish, Spanish
(Mexican), Indonesian and Swedish.&lt;/p&gt;
&lt;h2 id=&#34;certificate-renewal&#34;&gt;Certificate renewal&lt;/h2&gt;
&lt;p&gt;A bug &lt;a href=&#34;https://github.com/snikket-im/snikket-web-proxy/issues/3&#34;&gt;has been fixed&lt;/a&gt;
that eventually caused Snikket to present an expired certificate for web links
(the web interface and also shared files). Restarting the service is a
temporary fix, but this release will prevent it happening again in the future.&lt;/p&gt;
&lt;h2 id=&#34;technical-improvements&#34;&gt;Technical improvements&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s a bunch of lower-level changes for advanced users that are included in
this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can now configure what address Snikket&amp;rsquo;s built-in HTTP server will
listen for connections on (useful for certain advanced setups behind a
reverse proxy)&lt;/li&gt;
&lt;li&gt;Add docker health checks, allowing docker to inform you about the health of
the Snikket services&lt;/li&gt;
&lt;li&gt;Switch to a more robust DNS resolver (used for federation when connecting to
other servers)&lt;/li&gt;
&lt;li&gt;Allow configuration of an external TURN server (replacing the built-in one)&lt;/li&gt;
&lt;li&gt;Fix support for BOSH and websockets (allowing third-party web clients)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any questions or feedback about this release, &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;let us know!&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>XMPP Account Portability funded by NGI DAPSI</title>
      <link>https://snikket.org/blog/dapsi-fund-account-portability/</link>
      <pubDate>Fri, 30 Apr 2021 13:14:48 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/dapsi-fund-account-portability/</guid>
      <description>&lt;p&gt;We have some exciting news to share! An important piece of the
&lt;a href=&#34;https://snikket.org/about/goals/&#34;&gt;Snikket roadmap&lt;/a&gt; has been selected for funding by NGI DAPSI, an
EU-funded project focused on data portability and services.&lt;/p&gt;
&lt;h2 id=&#34;what-is-dapsi&#34;&gt;What is DAPSI?&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://dapsi.ngi.eu/&#34;&gt;Data Portability and Services Incubator (DAPSI)&lt;/a&gt; is a EU funded
project, under the European Commission’s Next Generation Internet (NGI)
initiative. In their own words, DAPSI was established to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;hellip;] empower top internet innovators to develop human-centric solutions,
addressing the challenge of personal data portability on the internet, as
foreseen under the GDPR and make it significantly easier for citizens to
have any data which is stored with one service provider transmitted directly
to another provider.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can learn more about the initiative on the &lt;a href=&#34;https://dapsi.ngi.eu/&#34;&gt;NGI DAPSI website&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;data-portability-in-snikket-and-xmpp&#34;&gt;Data portability in Snikket and XMPP&lt;/h2&gt;
&lt;p&gt;Over the years we have seen many XMPP providers come and go, and
when a provider decides to shut down, it&amp;rsquo;s too often not easy for people to
obtain their data and move it elsewhere. This contributes to
&lt;a href=&#34;https://en.wikipedia.org/wiki/Churn_rate&#34;&gt;user churn&lt;/a&gt; on the XMPP network - individuals are likely to leave
XMPP rather than figure out the necessary steps to migrate to a new XMPP
service.&lt;/p&gt;
&lt;p&gt;There are other reasons for wanting to move your data, such as seeking
providers with better privacy or reliability. You may also want to relocate
from a provider to a self-hosted solution, or vice-versa.&lt;/p&gt;
&lt;p&gt;As part of Snikket&amp;rsquo;s mission to improve all aspects of XMPP usability, clear
data ownership and portability options have been an important goal since the
project&amp;rsquo;s beginning.&lt;/p&gt;
&lt;p&gt;In particular we believe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People should not be locked into the service by the first provider they sign
up with.&lt;/li&gt;
&lt;li&gt;People should be able to export their full data at any time, in a standard
format.&lt;/li&gt;
&lt;li&gt;People should be able to easily migrate their account data to a new provider
without losing important contact relationships.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-xmpp-account-portability-project&#34;&gt;The XMPP account portability project&lt;/h2&gt;
&lt;p&gt;The need for account and data portability goes beyond Snikket, we want to see
improved portability and data interoperability across the whole XMPP
ecosystem. DAPSI have funded an &lt;a href=&#34;https://docs.modernxmpp.org/projects/portability/&#34;&gt;extensive project&lt;/a&gt; that over the next
nine months will cover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standardizing the necessary protocols and formats for account data import
and export&lt;/li&gt;
&lt;li&gt;Developing open-source easy-to-use tools that allows people to export,
import and migrate their account between XMPP services&lt;/li&gt;
&lt;li&gt;Building this functionality into Snikket&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The standards will be submitted through the usual &lt;a href=&#34;https://xmpp.org/about/standards-process.html&#34;&gt;XMPP standards process&lt;/a&gt;
and the implementations will be open-source.&lt;/p&gt;
&lt;p&gt;XMPP already has some existing standards that overlap with this project, in
particular &lt;a href=&#34;https://xmpp.org/extensions/xep-0227.html&#34;&gt;XEP-0227&lt;/a&gt; and &lt;a href=&#34;https://xmpp.org/extensions/xep-0283.html&#34;&gt;XEP-0283&lt;/a&gt;. Both specifications are outdated
and incomplete (XEP-0227 doesn&amp;rsquo;t support many modern features, and assumes
your password will be exported in plain text!). We will update and/or
complement these documents as needed.&lt;/p&gt;
&lt;p&gt;The final stage of work will be to integrate the migration mechanism into
Snikket. This will allow people to move their accounts between Snikket
servers, including to or from our &lt;a href=&#34;https://snikket.org/hosting/&#34;&gt;hosted service&lt;/a&gt; as well as
other XMPP servers.&lt;/p&gt;
&lt;p&gt;Our &lt;a href=&#34;https://snikket.org/blog/snikket-cic/&#34;&gt;not-for-profit organization&lt;/a&gt; is committed to sustaining the
Snikket project through ethical means and without the influence of private
investment. We are very grateful for initiatives such as NGI, allowing
projects like ours to fulfil our ambitious goals with open and transparent
funding. Every project funded by them is helping to rebalance the internet.&lt;/p&gt;
&lt;p&gt;We look forward to sharing further updates on this project in the coming
months, so stay tuned! You can follow us on &lt;a href=&#34;https://fosstodon.org/@snikket_im&#34;&gt;Mastodon&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/snikket_im&#34;&gt;Twitter&lt;/a&gt;, or
subscribe to this blog&amp;rsquo;s &lt;a href=&#34;https://snikket.org/blog/index.xml&#34;&gt;RSS feed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.ngi.eu/&#34;&gt;&lt;img src=&#34;https://snikket.org/blog/dapsi-fund-account-portability/Logo-NGI_Explicit-with-baseline-rgb.png&#34; alt=&#34;&#34; &gt;
&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Products vs Protocols: What Signal got right</title>
      <link>https://snikket.org/blog/products-vs-protocols/</link>
      <pubDate>Tue, 09 Feb 2021 12:51:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/products-vs-protocols/</guid>
      <description>&lt;p&gt;&lt;em&gt;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.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;products-vs-protocols&#34;&gt;Products vs Protocols&lt;/h2&gt;
&lt;p&gt;This past weekend I gave a talk at the (virtual) FOSDEM conference about
a topic I&amp;rsquo;ve been thinking about a lot the past few years - the differences
between developing a product and developing a protocol.&lt;/p&gt;
&lt;p&gt;You can watch the talk &lt;a href=&#34;https://peertube.thepacket.exchange/videos/watch/96e35d83-e70c-4a87-868b-f9cbeb48e1d0&#34;&gt;here&lt;/a&gt;, but there were many things I
wanted to touch upon that wouldn&amp;rsquo;t fit into the 20 minute slot. This post
will cover the same topics, but expands on some of the points I
discussed.&lt;/p&gt;
&lt;h2 id=&#34;previously-in-open-protocols&#34;&gt;Previously, in open protocols&amp;hellip;&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve been involved with &lt;a href=&#34;https://xmpp.org/&#34;&gt;XMPP&lt;/a&gt; (once known as Jabber) for over 15
years. It is now over 20 years since XMPP&amp;rsquo;s inception, and over this
time XMPP, along with the rest of the tech industry, has seen significant
change.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;s
largest ISP.&lt;/p&gt;
&lt;p&gt;Unfortunately we never quite reached that point with instant messaging.
However that hasn&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;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 &lt;em&gt;2 billion&lt;/em&gt; users. That means a significant portion of
the world&amp;rsquo;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.&lt;/p&gt;
&lt;h2 id=&#34;the-slippery-slope&#34;&gt;The slippery slope&lt;/h2&gt;
&lt;p&gt;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 &lt;a href=&#34;https://www.process-one.net/blog/whatsapp-facebook-erlang-and-realtime-messaging-it-all-started-with-ejabberd/&#34;&gt;open-source XMPP server&lt;/a&gt;, and
used the XMPP protocol. However the goal of WhatsApp was not openness
and federation, and they soon diverged far from standard XMPP.&lt;/p&gt;
&lt;p&gt;As WhatsApp grew, early users may recall that they also began charging a
small fee for accounts ($1/year). Their reasoning was simple:&lt;/p&gt;
&lt;blockquote&gt;
    &lt;p&gt;“Remember, when advertising is involved &lt;strong&gt;you the user&lt;/strong&gt;
    are the product.&lt;/p&gt;
    &lt;p&gt;Your data isn&#39;t even in the picture. We are simply not interested in any of it.&lt;/p&gt;
    &lt;p&gt;When people ask us why we charge for WhatsApp,
    we say ‘Have you considered the alternative?’“&lt;/p&gt;
    &lt;p&gt;&lt;a href=&#34;https://blog.whatsapp.com/why-we-don-t-sell-ads&#34;&gt;
         &lt;strong&gt;WhatsApp blog post “Why we don&#39;t sell ads“, June 2012&lt;/strong&gt;
       &lt;/a&gt;
    &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nevertheless, just two years later it was announced that WhatsApp had
been acquired by the internet&amp;rsquo;s fastest-growing advertising platform,
Facebook.&lt;/p&gt;
&lt;p&gt;Despite declaring to the EU competition commission that linking an
individual&amp;rsquo;s data between WhatsApp and Facebook was not technically
feasible this is exactly what they went on to do, &lt;a href=&#34;https://www.theguardian.com/business/2017/may/18/facebook-fined-eu-whatsapp-european-commission&#34;&gt;leading to a €94
million fine&lt;/a&gt;. Little by little, Facebook has been
loosening their privacy policies to allow them to absorb WhatsApp data
into their daily operations.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;ve been building these past years. &amp;ldquo;Use XMPP!&amp;rdquo;,
&amp;ldquo;Use Matrix!&amp;rdquo;, &amp;ldquo;Use Signal!&amp;rdquo;, to name a few.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;s servers,
resulting in disrupted message delivery across Signal&amp;rsquo;s service for days.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;So why did Signal receive millions of users, and XMPP/Matrix did not?&lt;/p&gt;
&lt;h2 id=&#34;signal&#34;&gt;Signal&lt;/h2&gt;
&lt;p&gt;At this point it&amp;rsquo;s impossible not to reference &lt;a href=&#34;https://signal.org/blog/the-ecosystem-is-moving/&#34;&gt;The Ecosystem is Moving&lt;/a&gt;,
a 2016 blog post by Signal&amp;rsquo;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&amp;rsquo;s &amp;ldquo;moving
ecosystem&amp;rdquo;.&lt;/p&gt;
&lt;blockquote&gt;
    &lt;p&gt;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.&lt;/p&gt;
    &lt;p&gt;&lt;a href=&#34;https://signal.org/blog/the-ecosystem-is-moving/&#34;&gt;
         &lt;strong&gt;Signal blog post “The ecosystem is moving“, May 2016&lt;/strong&gt;
       &lt;/a&gt;
    &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well. Far from being frozen in time, XMPP has changed significantly in the past
20 years.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://snikket.org/blog/products-vs-protocols/xmpp_2004_2021.png&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;Just some of the things we have now that we didn&amp;rsquo;t have in the beginning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;End-to-end encryption using OMEMO (based on Signal’s protocol and
audited), with multi-device and offline capabilities&lt;/li&gt;
&lt;li&gt;Audio/video calling (now 2nd generation, encrypted, WebRTC-compatible)&lt;/li&gt;
&lt;li&gt;Mobile optimizations (bandwidth, connectivity, push notifications)&lt;/li&gt;
&lt;li&gt;Full cross-device message synchronization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many of these things didn&amp;rsquo;t even exist as concepts back when XMPP began.
Adding them was only possible due to XMPP&amp;rsquo;s smart design: a core
protocol, with a &lt;a href=&#34;https://xmpp.org/extensions/&#34;&gt;suite of extensions&lt;/a&gt; (known as XEPs). New
extensions are added as needed, and irrelevant ones get deprecated.&lt;/p&gt;
&lt;p&gt;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,
&lt;a href=&#34;https://xmpp.org/uses/social.html&#34;&gt;social networking&lt;/a&gt;, or &lt;a href=&#34;https://xmpp.org/uses/internet-of-things.html&#34;&gt;smart devices&lt;/a&gt;) should be
implementing. These round-ups are known as &lt;a href=&#34;https://xmpp.org/about/compliance-suites.html&#34;&gt;compliance suites&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The documentation site &lt;a href=&#34;https://docs.modernxmpp.org/&#34;&gt;Modern XMPP&lt;/a&gt; also serves as a useful reference
guide for modern XMPP implementations (including UI/UX considerations,
which are not covered by the protocol-level documentation).&lt;/p&gt;
&lt;h2 id=&#34;the-unfortunate-truth&#34;&gt;The unfortunate truth&lt;/h2&gt;
&lt;p&gt;The effort required in advancing the protocol &lt;em&gt;is&lt;/em&gt; significant. And that&amp;rsquo;s
not even counting the implementation work. XMPP has a diverse and open
ecosystem. There is no single &amp;ldquo;XMPP client&amp;rdquo;, instead the ecosystem is
composed of&amp;hellip; 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.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;s very difficult to
evolve the protocol and keep everyone 100% in sync. Luckily XMPP&amp;rsquo;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&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;But Moxie is right. We could move &lt;strong&gt;much&lt;/strong&gt; faster if we didn&amp;rsquo;t care about
interoperability, software diversity, and decentralization.&lt;/p&gt;
&lt;p&gt;And that is the approach Signal is taking.&lt;/p&gt;
&lt;h2 id=&#34;product-or-protocol&#34;&gt;Product or protocol?&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s clear that there are trade-offs to be made here. Signal&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;I put together some of the trade-offs into the following table:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Building an ecosystem&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Building a product&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Focus on protocol&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Focus on implementation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mostly documentation&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mostly code&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Cross-project collaboration&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Single project/team&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Building for developers&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Building for end-users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Slow evolution&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Evolves as fast as you want&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Achieve diversity&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Achieve a monoculture&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Robust&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Single point of failure&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I think that Signal&amp;rsquo;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&amp;rsquo;t the only way to do things.&lt;/p&gt;
&lt;p&gt;They&amp;rsquo;ve built a good user-friendly product, and they have done it with
security and privacy at its heart.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;best-of-both-worlds&#34;&gt;Best of both worlds&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Can we move beyond Signal&amp;rsquo;s flaws to build something that is open,
interoperable, user-friendly, consistent &lt;em&gt;and&lt;/em&gt; decentralized? I believe
so, and as they say, there&amp;rsquo;s only one way to find out.&lt;/p&gt;
&lt;h2 id=&#34;snikket&#34;&gt;Snikket&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://snikket.org/&#34;&gt;Snikket&lt;/a&gt; is an initiative to bring a more product-led approach to the
XMPP ecosystem. It&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 &lt;a href=&#34;https://conversations.im/&#34;&gt;Conversations&lt;/a&gt;.
For iOS, &lt;a href=&#34;https://siskin.im/&#34;&gt;Siskin&lt;/a&gt;. The server is based on &lt;a href=&#34;https://prosody.im/&#34;&gt;Prosody&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;To be clear, these are not &amp;ldquo;hard forks&amp;rdquo; 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 &lt;a href=&#34;https://blog.prosody.im/great-invitations/&#34;&gt;whole new feature&lt;/a&gt;
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.&lt;/p&gt;
&lt;p&gt;Snikket is not about replacing any of the individual projects, but
about joining them together in a neat way and extending XMPP&amp;rsquo;s reach to
new audiences.&lt;/p&gt;
&lt;h2 id=&#34;back-to-the-future&#34;&gt;Back to the future&lt;/h2&gt;
&lt;p&gt;Will Snikket alone turn the tide against proprietary communication
platforms? Maybe, maybe not. But we&amp;rsquo;re part of a growing movement that
agrees it&amp;rsquo;s time to stop &lt;a href=&#34;https://homebrewserver.club/have-you-considered-the-alternative.html&#34;&gt;repeating history&lt;/a&gt;, and finally
&lt;a href=&#34;https://redecentralize.org/&#34;&gt;redecentralize&lt;/a&gt; the internet, the way it was intended.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks to Kim Alvefur, Georg Lukas and Jonas Schäfer for their editorial
review during the writing of this post.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Want to help support the project? &lt;a href=&#34;https://snikket.org/donate/&#34;&gt;Donations are welcome!&lt;/a&gt;
All contributions will help us to continue work on the project and
accomplish the &lt;a href=&#34;https://snikket.org/about/goals/&#34;&gt;goals&lt;/a&gt; on our roadmap. Want to talk?
Join our &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;community chat&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>February 2021 server release</title>
      <link>https://snikket.org/blog/feb-2021-server-release/</link>
      <pubDate>Tue, 02 Feb 2021 12:45:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/feb-2021-server-release/</guid>
      <description>&lt;p&gt;A year ago, Snikket was first announced publicly, at the &lt;a href=&#34;https://fosdem.org/&#34;&gt;FOSDEM conference&lt;/a&gt; in Brussels.
FOSDEM 2021 is next week, online of course, and I&amp;rsquo;ll be &lt;a href=&#34;https://fosdem.org/2021/schedule/event/products_vs_protocols/&#34;&gt;giving a talk&lt;/a&gt; about some of the
thoughts that led to me starting the Snikket project.&lt;/p&gt;
&lt;p&gt;A year is a long time on the internet! Since that initial announcement we&amp;rsquo;ve &lt;a href=&#34;https://snikket.org/blog/snikket-cic/&#34;&gt;incorporated as a
not-for-profit&lt;/a&gt;, formalized &lt;a href=&#34;https://snikket.org/about/goals/&#34;&gt;our goals&lt;/a&gt; and made &lt;a href=&#34;https://snikket.org/blog/sponsoring-group-omemo-in-siskin/&#34;&gt;significant progress&lt;/a&gt;
towards them.&lt;/p&gt;
&lt;p&gt;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&amp;hellip; support for Raspberry Pi and other ARM devices.&lt;/p&gt;
&lt;h2 id=&#34;admin-dashboard&#34;&gt;Admin dashboard&lt;/h2&gt;
&lt;p&gt;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!&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://snikket.org/blog/feb-2021-server-release/web-admin-multilingual.png&#34;&gt;&lt;figcaption&gt;
      &lt;h4&gt;The Snikket web interface&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The dashboard is already translated into multiple languages (currently English, French, German,
Italian, Indonesian and Polish).&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://snikket.org/blog/feb-2021-server-release/web-user-profile.png&#34;&gt;&lt;figcaption&gt;
      &lt;h4&gt;The user profile editor&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;This project has been the work of Jonas Schäfer, without whom it wouldn&amp;rsquo;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.&lt;/p&gt;
&lt;h2 id=&#34;raspberry-pi-and-arm-support&#34;&gt;Raspberry Pi and ARM support&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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!&lt;/p&gt;
&lt;h2 id=&#34;circles&#34;&gt;Circles&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;We have added a new feature which allows you to have multiple groups of people, which we refer to
as &amp;ldquo;circles&amp;rdquo;. When you create an invitation you can choose which circle to assign the new user(s)
to.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Finally, circles have an associated private group chat to which all circle members are invited.
This replaces the clunky &amp;lsquo;general&amp;rsquo; chat that was created in previous releases.&lt;/p&gt;
&lt;h2 id=&#34;other-changes&#34;&gt;Other changes&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;ve made some architectural changes in this release. If you&amp;rsquo;re upgrading from a previous release,
make sure you follow the &lt;a href=&#34;https://github.com/snikket-im/snikket-server/blob/master/CHANGELOG.md#upgrading&#34;&gt;upgrade notes in the changelog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The file upload limit is now 16MB (the same as WhatsApp&amp;rsquo;s limit). We are working on allowing
even higher limits but with per-user quotas for a future release, to ensure you don&amp;rsquo;t run out of
precious disk space :)&lt;/p&gt;
&lt;p&gt;Finally, if you&amp;rsquo;re setting up Snikket for the first time, we now have a collection of scripts and
resources to help you get started, over at &lt;a href=&#34;https://github.com/snikket-im/snikket-selfhosted#readme&#34;&gt;snikket-selfhosted&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re looking forward to hearing feedback about this release. &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;Let us hear&lt;/a&gt; your success
stories 😉&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;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 &lt;a href=&#34;https://snikket.org/donate/&#34;&gt;donate&lt;/a&gt;, no matter how small!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Sponsoring Group Chat Encryption in Siskin</title>
      <link>https://snikket.org/blog/sponsoring-group-omemo-in-siskin/</link>
      <pubDate>Mon, 30 Nov 2020 13:45:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/sponsoring-group-omemo-in-siskin/</guid>
      <description>&lt;p&gt;For some time XMPP has been in need of a good solution for Apple&amp;rsquo;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 &lt;a href=&#34;https://monal.im/&#34;&gt;Monal IM&lt;/a&gt; has really picked up in recent months, in no small part thanks
to the efforts of &lt;a href=&#34;https://github.com/tmolitor-stud-tu&#34;&gt;tmolitor&lt;/a&gt;, who has been
contributing a lot of modernization to both the UI and the internals.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://tigase.net/&#34;&gt;Tigase&lt;/a&gt; also released an open-source iOS client, &lt;a href=&#34;https://siskin.im/&#34;&gt;Siskin IM&lt;/a&gt;
that has been making &lt;a href=&#34;https://tigase.net/beagleim-4.1-and-siskin-6.1-released/&#34;&gt;steady progress recently&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;columns&#34;&gt;
  
&lt;div class=&#34;column&#34;&gt;
  &lt;figure&gt;&lt;img src=&#34;https://snikket.org/blog/assets/monal-screenshot.png&#34;
    alt=&#34;Monal IM&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Monal IM&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;

&lt;div class=&#34;column&#34;&gt;
  &lt;figure&gt;&lt;img src=&#34;https://snikket.org/blog/assets/siskin-screenshot.png&#34;
    alt=&#34;Siskin IM&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Siskin IM&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;


&lt;/div&gt;

&lt;p&gt;It&amp;rsquo;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&amp;rsquo;ve obviously been keeping a close eye on these advancements.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://conversations.im/omemo/&#34;&gt;OMEMO&lt;/a&gt; is a form of &amp;ldquo;end-to-end encryption&amp;rdquo;, 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.&lt;/p&gt;
&lt;p&gt;One of the goals of &lt;a href=&#34;https://snikket.org/blog/snikket-cic/&#34;&gt;Snikket&amp;rsquo;s CIC&lt;/a&gt; is supporting and advancing the
XMPP ecosystem. With that in mind, we&amp;rsquo;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!&lt;/p&gt;
&lt;p&gt;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!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you want to help us with &lt;a href=&#34;https://snikket.org/about/goals/&#34;&gt;our goals&lt;/a&gt; and other projects like this,
consider &lt;a href=&#34;https://snikket.org/donate/&#34;&gt;a donation&lt;/a&gt;, contribute in some &lt;a href=&#34;https://snikket.org/about/goals/#supporting-us&#34;&gt;other way&lt;/a&gt;,
or simply help spread the word! The future of XMPP is coming :)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Snikket App Update 2.9.0</title>
      <link>https://snikket.org/blog/snikket-app-update-2.9.0/</link>
      <pubDate>Tue, 03 Nov 2020 13:14:48 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-app-update-2.9.0/</guid>
      <description>&lt;p&gt;A new version of the Android app landed in &lt;a href=&#34;https://play.google.com/store/apps/details?id=org.snikket.android&#34;&gt;Google Play&lt;/a&gt; and &lt;a href=&#34;https://f-droid.org/en/packages/org.snikket.android/&#34;&gt;F-Droid&lt;/a&gt;
this week. &lt;a href=&#34;https://github.com/snikket-im/snikket-android/releases/tag/2.9.0&#34;&gt;Snikket for Android 2.9.0&lt;/a&gt;
is based on &lt;a href=&#34;https://github.com/iNPUTmice/Conversations/releases/tag/2.9.0&#34;&gt;Conversations 2.9.0&lt;/a&gt; and
sees a number of new features and improvements:&lt;/p&gt;
&lt;h2 id=&#34;audiovideo-call-improvements&#34;&gt;Audio/video call improvements&lt;/h2&gt;
&lt;p&gt;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!&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://snikket.org/blog/assets/snikket-voicemail.png&#34;&gt;&lt;figcaption&gt;
      &lt;h4&gt;Snikket voicemail screenshot&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;message-search&#34;&gt;Message search&lt;/h2&gt;
&lt;p&gt;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 &amp;lsquo;Search messages&amp;rsquo; from the conversation menu.&lt;/p&gt;
&lt;h2 id=&#34;notifications&#34;&gt;Notifications&lt;/h2&gt;
&lt;p&gt;A notification has been added when message delivery fails, so you know if your contact did
not receive a message, even if you aren&amp;rsquo;t actively looking at their conversation. A bug was
also fixed that meant notifications sometimes wouldn&amp;rsquo;t be shown in some circumstances.&lt;/p&gt;
&lt;h2 id=&#34;support-for-gpx-files&#34;&gt;Support for GPX files&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re a regular trekker, this one will be of interest to you. Although sharing and receiving
logs of travels via &lt;a href=&#34;https://en.wikipedia.org/wiki/GPS_Exchange_Format&#34;&gt;GPX files&lt;/a&gt; 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 &lt;a href=&#34;https://osmand.net/&#34;&gt;OSMAnd&lt;/a&gt; or &lt;a href=&#34;https://trekarta.info/&#34;&gt;Trekarta&lt;/a&gt; (both open-source and
available on F-Droid!).&lt;/p&gt;
&lt;h2 id=&#34;performance-and-bug-fixes&#34;&gt;Performance and bug fixes&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all for now. Grab version 2.9.0 of the Snikket app from
&lt;a href=&#34;https://f-droid.org/en/packages/org.snikket.android/&#34;&gt;F-Droid&lt;/a&gt; or
&lt;a href=&#34;https://play.google.com/store/apps/details?id=org.snikket.android&#34;&gt;Google Play&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;As always, the Snikket app requires an invite or account on a Snikket service to get started. If
you&amp;rsquo;re new to Snikket, &lt;a href=&#34;https://snikket.org/app/learn/&#34;&gt;learn more about the Snikket app&lt;/a&gt; to find out how to get started.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Announcing Snikket CIC</title>
      <link>https://snikket.org/blog/snikket-cic/</link>
      <pubDate>Wed, 28 Oct 2020 12:05:00 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/snikket-cic/</guid>
      <description>&lt;p&gt;We&amp;rsquo;re pleased to announce that Snikket is now backed by a legal entity,
&lt;em&gt;Snikket Community Interest Company&lt;/em&gt;, registered in the UK.&lt;/p&gt;
&lt;p&gt;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 &amp;ldquo;not for profit&amp;rdquo;, which means rather than focus on generating
profits and increasing value for shareholders, they have other goals -
serving a &amp;ldquo;community&amp;rdquo; in some way.&lt;/p&gt;
&lt;p&gt;The exact &amp;ldquo;community&amp;rdquo; differs between CICs, but must be declared
when the organisation is registered with the CIC regulator. Snikket&amp;rsquo;s
&amp;ldquo;community interest statement&amp;rdquo; declares that the CIC is for the
benefit of:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and that it will also:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;hellip;] provide support to open and non-commercial projects that have similar
objectives.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The the term &lt;strong&gt;social enterprise&lt;/strong&gt; 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 &amp;ldquo;social impact&amp;rdquo; alongside or above generating profits.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 &lt;a href=&#34;https://en.wikipedia.org/wiki/Community_interest_company#Legal_forms_and_social_objectives&#34;&gt;CIC protections&lt;/a&gt; ensure it keeps a focus on its social mission.&lt;/p&gt;
&lt;p&gt;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 &lt;em&gt;good&lt;/em&gt; 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.&lt;/p&gt;
&lt;p&gt;What does all this mean for the project?&lt;/p&gt;
&lt;p&gt;Well, having a dedicated legal entity means we were also able to open
a bank account, which means we can finally accept &lt;a href=&#34;https://snikket.org/donate/&#34;&gt;donations&lt;/a&gt; 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, &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;get in touch!&lt;/a&gt;) And even the simple day-to-day
expenses such as server costs are now able to be paid from the project&amp;rsquo;s bank
account rather than my personal one. Obviously I&amp;rsquo;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!&lt;/p&gt;
&lt;p&gt;As for the future, don&amp;rsquo;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. &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;Contact us&lt;/a&gt; if you have an interest
in either of these, or if you have ideas for other things we could look into offering.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Want to contact us? Email &lt;a href=&#34;mailto:team@snikket.org&#34;&gt;team@snikket.org&lt;/a&gt; or join our &lt;a href=&#34;https://snikket.org/contact/&#34;&gt;chatroom&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Interested in learning more about starting a CIC or other form of social enterprise?
See these resources:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UK&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gov.uk/government/publications/community-interest-companies-introduction&#34;&gt;Gov.UK: CIC resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.socialenterprise.org.uk/&#34;&gt;Social Enterprise UK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.inspire2enterprise.org/&#34;&gt;Inspire2Enterprise&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;International&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ec.europa.eu/growth/sectors/social-economy/enterprises_en&#34;&gt;Social Enterprises (EU)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://socialenterprise.us/&#34;&gt;Social Enterprise Alliance (US)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Introducing Snikket</title>
      <link>https://snikket.org/blog/introducing-snikket/</link>
      <pubDate>Sat, 24 Oct 2020 13:05:58 +0000</pubDate>
      <author>team@snikket.org (Snikket Team)</author>
      <guid>https://snikket.org/blog/introducing-snikket/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://snikket.org/&#34;&gt;Snikket project&lt;/a&gt; was officially unveiled earlier this year at FOSDEM in Brussels. We&amp;rsquo;re
thankful to all the great feedback we received from people who came to see first-hand what
we&amp;rsquo;re building.&lt;/p&gt;
&lt;h2 id=&#34;what-is-snikket&#34;&gt;What is Snikket?&lt;/h2&gt;
&lt;p&gt;For people who didn&amp;rsquo;t make it to the demo at FOSDEM, what is Snikket all about?!&lt;/p&gt;
&lt;p&gt;Snikket is actually a collection of &lt;a href=&#34;https://snikket.org/open-source/&#34;&gt;open-source components&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;Snikket provides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A minimal-configuration &lt;a href=&#34;https://snikket.org/service/quickstart&#34;&gt;server component&lt;/a&gt; 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 &lt;a href=&#34;https://snikket.org/service/quickstart&#34;&gt;single Docker image&lt;/a&gt;, but we plan to add other distribution methods soon.&lt;/li&gt;
&lt;li&gt;Software for users - currently we have an &lt;a href=&#34;https://snikket.org/app/&#34;&gt;app for Android users&lt;/a&gt; (distributed via Google
Play and F-Droid), and an app for iOS will be next to launch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;who-is-snikket-for&#34;&gt;Who is Snikket for?&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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
&amp;ldquo;federation&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;how-does-it-work&#34;&gt;How does it work?&lt;/h2&gt;
&lt;p&gt;Snikket is based on the open standard messaging protocol &lt;a href=&#34;https://xmpp.org/&#34;&gt;XMPP&lt;/a&gt;. This means that we&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;The Snikket software itself is based on existing open-source projects. For example, the server
component utilizes &lt;a href=&#34;https://prosody.im/&#34;&gt;Prosody&lt;/a&gt;, and the Android app is based on &lt;a href=&#34;https://conversations.im/&#34;&gt;Conversations&lt;/a&gt;. We are
not forking these projects. Instead innovations that we introduce to Snikket are pushed upstream
wherever possible. An example of this is the &lt;a href=&#34;https://blog.prosody.im/great-invitations/&#34;&gt;invitation based sign-up&lt;/a&gt; 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.&lt;/p&gt;
&lt;h2 id=&#34;but-why&#34;&gt;But why?&lt;/h2&gt;
&lt;p&gt;On hearing about Snikket for the first time, a question people often ask is, &amp;ldquo;why are you developing
Snikket when plenty of XMPP software already exists?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;There are a number of reasons that Snikket&amp;rsquo;s existence is important.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;t do alone. We&amp;rsquo;re providing a complete
package for people to get started easily even with zero knowledge of XMPP and how everything fits
together.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;The design principles that Snikket adheres to can be found at &lt;a href=&#34;https://docs.modernxmpp.org/&#34;&gt;modernxmpp.org&lt;/a&gt;, 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 &lt;a href=&#34;https://xmpp.org/about/compliance-suites.html&#34;&gt;Compliance Suites&lt;/a&gt; published by the XSF (but these only cover
protocols, not features, terminology or UX).&lt;/p&gt;
&lt;p&gt;Finally, since &amp;ldquo;Jabber&amp;rdquo; (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 &amp;ldquo;use XMPP&amp;rdquo; (a protocol standard made for developers) leaves them confused and
directionless. It&amp;rsquo;s a much better option to be able to tell people to &amp;ldquo;use Snikket&amp;rdquo;, which leads
them to a suite of user-friendly XMPP software.&lt;/p&gt;
&lt;h1 id=&#34;the-future&#34;&gt;The future&lt;/h1&gt;
&lt;p&gt;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).&lt;/p&gt;
&lt;p&gt;To keep up to date with developments, follow &lt;a href=&#34;https://snikket.org/blog&#34;&gt;this blog&lt;/a&gt;, or our accounts on &lt;a href=&#34;https://fosstodon.org/@snikket_im&#34;&gt;Mastodon&lt;/a&gt;
or &lt;a href=&#34;https://twitter.com/snikket_im&#34;&gt;Twitter&lt;/a&gt;!&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
