November 2020 update
A social network off the grid
Here's another monthly report arriving in your inbox. I need to remind you all that I am extremely thankful for your continued support!
Version 0.2011.5 is rolling out to the Android Play Store, Apple App Store, and for Android users, also available as a direct APK file from our website: manyver.se/apk ('indie' release). Here's what's new:
- 🎉 Feature: record audio messages and attach them
- ✅ (Android) Fix audio message playback on some devices
- ✅ Bug fix: unread markers behave more consistently
- 🔷 Improve looks of the audio player
- 🔷 Improve the user experience of the audio player
- 🔷 (Android) Make APK size 1MB smaller
- 🔷 (Android) Remove unnecessary Android Permission
- 🔷 Translate to Swedish (100%)
- 🔷 Improve Arabic translation
This month's release comes with a small feature that makes a huge difference to your experience of the app: record audio messages! Two months ago, Rômulo Alves helped us by adding support for playing audio messages. This time, I added support for also recording them in Manyverse and embedding them inside your posts. You can find a new button on the left side of the screen when you write a new post or a reply.
Known issues: although we had added playback support two months ago, it has not been working on iOS. Unfortunately, even in this version, audio playback still does not work on iOS. However, recording and publishing works just fine on both iOS and Android. We want to fix playback on iOS as soon as possible and I think I already know the root cause, but at least you can be sure that the audio messages you record on iOS will be playable by other users on Android, as well as on desktop through Patchwork.
Another nice addition to the app has been the full translation to Swedish, thanks to Daniel Lublin and Jacob Karlsson!
UX Project – Milestone 1
The Manyverse team (5 people) plus special guest Zenna (from the NGI Grant) gathered in a video called last month to discuss the results of the first part of the UX Grant Project by Wouter Moraal, and to discuss the next steps for the next part. The report written by Wouter is extensive and contains a lot of interesting statistics that shall guide our next choices for the user experience of onboarding. You can read it in full here! See also the Wiki page for this UX Project.
I've been working on speeding up the performance of the app, and one way has been the adoption of Rust, a low level language meant for memory safety and high performance. See ssb-neon. I rewrote two modules of SSB in Rust and finally managed to put them into the app, both on iOS and Android. This was a significant technical obstacle to overcome, but in practice you will not notice any new changes in the app itself. So far there isn't any significant speed up either.
The thing to celebrate here is that we now have a pipeline for easily adding Rust components into Manyverse, and as we gradually build and add them, the app should get incrementally faster. We're looking forward to a future where the app runs extremely smoothly and quickly thanks to the performance of Rust.
Benchmarking initial sync
Another task that has kept me busy has been benchmarking: measuring exactly how quickly does the app perform initial synchronization of data once it's connected to other peers.
As part of my work with the NGI Pointer grant, I built a new tool called ssb-fixtures, which creates a simulation of thousands of users creating content on SSB. Then, in the Manyverse codebase, I setup an automated test of the app to download all of that simulation content and perform initial sync. The output is a number, the duration of the synchronization in seconds, and currently it's somewhere around 60 seconds. In the following months, we will try to reduce this number as much as possible. We want to bring it close to 10 seconds or less.
In the making
As part of the NGI Pointer grant, we already began writing the new database, ssb-db2 (which includes JITDB). I believe that by the beginning of the next year we will have already deployed it partially in Manyverse and hopefully the initial sync duration will have shrinked a bit. After that we will continue reducing the duration as we discover more optimizations to be done.
Finally, David Gómez has been busy with UI design for Manyverse, redefining the color palette and designing the dark mode. This is something many of you have asked for, and thanks to David, I think we will get dark mode support sometime soon!
I wish you all a great weekend!