Open Collective
Open Collective
August 2022 update
Published on August 5, 2022 by Andre Staltz

Hey backers!

Let me start with this: we cannot do what we do without you. It'll become more obvious as you read this newsletter edition. You're the most reliable source of funding for us, the most flexible in terms of strings attached, helping us plan and deliver whatever improvement is needed.

Today is a big day for Manyverse and for SSB at large. We're launching something that changes the nature of SSB, just a bit, but with profound implications: Storage management. So far, your SSB database has only grown larger and larger, consuming more space on your device, with no end at sight. From now on, you'll have the ability of shrinking your database.

But I'm getting ahead of myself. Let's see the list of improvements landing in version 0.2208.5:
  • 🎉  Feature: add private chat recipient by SSB ID
  • 🎉  Feature: compact database to save space
  • 🎉  Feature: new setting to force reindexing
  • 🎉  Feature: new Storage Usage screen
  • 🎉  Feature: Profile screen shows megabytes occupied
  • 🎉  Feature: show friends in common on the Profile
  • 🔷  Improve German and Brazilian Portuguese translations

More profile details

You can now see two new fields on people's profiles:
  • Number of friends in common
  • Device storage occupied by the user



Last month, we added a feature called "introducers", which displays a name of a friend under the name of an acquaintance. We realized that in reality there may be many introducers, and we wanted to display them all, but that obviously wouldn't fit. So we removed the introducer feature and instead added this counter on the profile screen, it shows you how many people you follow who in turn follow the profile you're looking at. This is important because a high number means that many of your friends trust this person, while a low count can signal either that they are new to SSB or they are not trusted by others often enough.

The other number is a megabyte measurement of space this person occupies on your device. With this, we want to surface to users that they aren't browsing the content somewhere remotely on the internet, they are actually browsing content replicated on their device. This counter supports you to judge whether that person deserves that much space on your device. Most accounts are small, less than 20 MB, and this is often not a big deal for users. But we want you to be in control of what's going on, and to understand that you're literally hosting people in your "home", your device.

Andrew and I, funded by your donations, worked on those improvements plus a new screen that is exciting and unique in the SSB ecosystem so far:


Storage usage

In the Settings screen, you can now access "Storage usage" which is a new screen we crafted with a chart showing how much space Manyverse takes on your device, and for what.



We moved the blobs limit setting here too, because it makes sense to see current blob usage and configure it. Additionally, you can see all accounts stored on your device, how much each one takes space, and whether you're following them, blocking them, or neutral. You can also block accounts that you don't want on your device anymore.

Blocked accounts will automatically be deleted from your database. However, "deletion" just means that their data is "redacted" in the log inside the database. As an analogy, this is like deleting files on your computer, but they just go to the Trash bin while still consume space. To truly remove them, "emptying the trash" requires a process we call "compaction", which squeezes the log to eliminate redactions.


Compact

The Storage Usage screen also shows how much trash there is, and when it seems to you that there is too much trash, you can press a "Compact" button. This will take you to a new screen with a progress bar. It doesn't take long, about 2 minutes on my mid-end phone.

After that, the app rebuilds indexes (approximately 8 minutes) and the app will be back to normal. Except this time the trash is gone. As a general rule, the smaller your database is, the lighter it is with data processing, and your Manyverse experience should be smoother. You won't experience this if you delete just 50 MB from a 1 GB database. But in the long term we want to explore more deletion opportunities, so that you could get rid of 900 MB if you wanted to, which would certainly make the app run smoother.

A word of caution though: do have your 24-words backed up before compacting. There may still be bugs with this functionality, so you need to have a backup to make sure your database can be recovered, say, be reinstalling the app. Consider yourself an advanced user if you try compaction. After we gather your feedback and potential bug reports, we can make this feature more robust and ready for the wider community.

From the user's perspective, compaction seems simple, but it took me and arj 190 hours of work on the database to get it done. It's not just about eliminating redactions, it's about making sure that database queries don't interfere with it, it's about guaranteeing that app crashes don't corrupt your database (go ahead, kill the app during compaction, it'll resume compaction when you open it again), it's about testing it in all sorts of wild scenarios. I'm grateful for arj's reviews and the SSB community for approving a 6000 USD grant for this.

The work we do is deployed to Manyverse, but it's made available as reusable components that any SSB app can benefit from. For instance, compaction is implemented in ssb-db2, storage usage is implemented in ssb-storage-used by Andrew Chou, and deletions are implemented in ssb-friends-purge by yours truly. The Manyverse-only code of this project is all about the user interface. So when you donate to Manyverse, you're also donating to the SSB ecosystem.

Take these new features for a spin and let me know what you think! Thank you!

– @andrestaltz