October 2020 update
A social network off the grid
I'm writing this as I travel back from a meetup with the "protocol grant" group where we planned the next 12 months of our work under the NGI Pointer project.
NGI Pointer group
The group consists of me, Henry ("cryptix"), Anders ("arj03"), and Zenna ("zelf"), see the photo below. In 2 days of meetings, we defined what we'll work on and how to distribute tasks.
We started abstract, by defining how SSB helps the world, and how we can help SSB get better at helping the world. We identified that onboarding and privacy are currently the areas in most need of reform. Our goal is to vastly improve the onboarding experience of SSB, by building a new performance-oriented database and deploying it into Manyverse, as well as making invites easier and more reliable by building the next generation of room servers (read about the first generation here). Most of our work will be technical and low-level, but the results are intended to be tested and deployed into Manyverse, to validate the success of the low-level developments.
While the core team consists of four persons dedicated for a year, we will occassionally also have the help of researchers, usability experts, and additional developers. NGI Pointer is a big deal for the SSB ecosystem, and I'm excited to get started, which should be soon (the next month or so)!
In September I got to work 95 hours on Manyverse, building "SSB Neon" (I'll talk about that further down in this post!), fixing app bugs, and making new features. I bring you version 0.2010.5, with these highlights:
- 🎉 Redesigned Profile screen, with shrinking header and bio preview
- 🎉 Feature: copy cypherlink on your own Profile screen
- 🎉 Feature: unread markers inside the Thread screen
- 🔷 100% translated to Arabic
- ✅ Bug fix: correct timestamps of private messages
- ✅ Bug fix: crash when opening private message
- ✅ Bug fix: tapping Publish twice should not actually publish twice
- ✅ Bug fix: unread markers behave more consistently
This releases's highlight is the new Profile screen, where the header is redesigned. It now dynamically shrinks in height as you scroll the content, giving you more space to read. The header itself also shows a slice of the user's biography, and the "Manage" button was moved to the top bar. The manage button also shows on your own profile, to allow you to get your account's ID.
I'm not done with the Profile screen, I still plan to add a list of the user's followers and follows (and maybe blocks too).
Other notable changes were several bug fixes (one of them was reported several times by users, thank you for reporting!), and a rework of the unread markers released last month. The unread style is now sticky, instead of going away in 4 seconds, it goes away when you refresh the feed and behaves more "intelligently".
We were also fortunate to receive voluntary translations in Arabic by someone from the community! Although the app doesn't support RTL layout yet, this may help Arabic speakers to use Manyverse.
F-Droid: we're working on it
Those of you who prefer to install Manyverse from F-Droid (Android) may have noticed the lack of updates. This is not my neglect, I've been trying my best to update the app on that distribution channel. To give you some context, it's not a matter of pressing one button or "submitting" the app, it actually requires a lot of troubleshooting.
F-Droid works like this: instead of accepting the new version and publishing it, they accept the open source code for the new version and then their servers try to build the app from code and package it for you, with unique constraints to avoid any kind of closed source components. The difficulty arises when their servers fail to build the app, and the servers attempt to build only once every 24 hours, limiting the speed we can troubleshoot. These errors have happened to Manyverse since July, for reasons unrelated to our code, because we didn't change the build configuration but the builds began failing in their servers. In the past several weeks we (me and some F-Droid developers) have tried to fix the build errors (see MR7066, MR7506, MR7373). We think we have finally solved it, but until the servers actually publish the update, we can't confirm.
If you want to use the new features soon, you can backup your account (find it the Settings screen), uninstall the app, re-install it this time from Google Play Store, and then restore your account. If code built provably from open source is important to you, then I ask for patience and understanding, eventually we will provide versions on F-Droid.
Rust is a new programming language focused on performance and safety, and would be an ideal foundation for SSB, the protocol on top of which Manyverse is built. People have already built plenty of SSB components in Rust (see Sunrise Choir and Kuska SSB), but these are not put into apps in production, even though they are high quality and production-ready. The difficulty is doing the migration from Node.js to Rust.
Gladly there exists something called Neon Bindings which allows bridging Rust and Node.js. I began SSB Neon as a collection of SSB components built in Rust and usable within Node.js projects. The first such component is ssb-neon-keys, which I finished two weeks ago. I submitted a pull request to add it to Patchwork, but adding it to Manyverse will take some additional work still, due to ARM compilation obstacles.
I'm getting into technical details, so to summarize, we began an effort to speed up Manyverse and several other SSB apps, by using better technology. This effort will gradually pay off and we hope the apps to get a tiny bit faster with every release! Slow performance has been a deal breaker for many users, so solving this is important to us. Hopefully within a year SSB Neon will have had some noticeable effects in Manyverse! For more information, read the plan for SSB Neon.
Thank you for reading this monthly update! I'm very grateful for your continuous support. 🙏