Scuttleverse Newsletter #20 (Summer-Fall 2022)
Published on December 2, 2022 by Alexander Cobleigh
Scuttleverse Newsletter 2022 (Summer-Fall 2022)
Hi-ho butts, and friends, and extended internet-family! It looks like we're making these newsletters annual! Jokes aside, to catch up on current and previously-current events this edition is perhaps a bit supersized. Better grab a pot of coffee or tea and get reading before it's lost among your tabs, never to be found.
Grants from the community and voting ordinances
One of the many interesting facets of the scuttlebutt community are the ongoing experiments around money, funding, and community responsibility. Another foray into the topic this year came in the shape of a community grant voting process, lead by previous newsletter writer, now-postdoc researcher, elavoie.
This is the first of what hopefully will become an annual process to allocate donations as grants to advance Secure Scuttlebutt, through a collective vote from community stackholders. Proposals and votes are made on Secure Scuttlebutt. Follow elavoie (@IgYpd+tCtXnlE2tYX/8rR2AGt+P8svC98WH3MdYAa8Y=.ed25519), who is overseeing the process, for updates.
For 2022, there are 2 grants of 6000$USD, each available for a single developer or a team. Proposals can be made until April 3th, as replies to the following post [...]
—SSBC OC Community Grant Announcement
For more details on the community voting process, see:
- community grant voting process (1)
- community voting registration drive (2)
The two grantees were André Staltz's implemention work on database compactions—hdd defragging, but for scuttlebutt!)—and glyph's community guide »How to write an application in Rust».
André's compaction grant managed to engage the community enough that fanart was created:
picture of a giant andre staltz with a cool jacket and an ssb message exploding in a fireball. image text reads as »SPEED: get ready for log compaction 6 bytes a second... and not a second to lose»
Title: Database compactions in ssb-db2 Motivation: To pave the way for using partial replication in production, we first need database compaction implemented to keep storage usage from growing indefinitely. Read more in the “timebomb” post.
[...] excerpt from the "timebomb" post
To give an idea how that’s true, consider that currently SSB grows at a rate of 6 bytes per second (on average). There is actually a hard limit of 4.3GB for the maximum size of the log. Do the math and this means that apps will stop working in approximately 15 years (considering that current log sizes are approx 1GB). [...]. Patchwork will not be updated, so it would definitely die in 15 years. But there are other limits. I just discovered today (with a reproducible test) that ssb-db starts giving out-of-memory crashes at about 2.4 million msgs, which is ~1.9GB. At the current rate of 6 bytes/second, Patchwork is going to be dead to out-of-memory crashes in 5 years!
thread link: (3)
See the thread (4) for all the PRs created as part of the grant. André himself says the following on concluding the work:
By now I’ve spent about 195 hours on this project, which is 5.5 weeks. I think that’s a pretty good result, given that my estimate was for this project to be complete within 6.5 weeks.
We’re putting compaction in Manyverse today, and with that there is a chance that new bugs get reported, so it’s good to leave some grant budget remaining for bug fixing.
Onto Glyph's grant:
Title: How to write an SSB application in Rust. Motivation: Make it easier to develop SSB applications by creating how-to tutorials.
...and the benefits of unoffical newsletter hiatuses are that the results are out NOW! You can read through Glyph's community funded ssb x rust tutorial:
lykin: Tutorial Series Complete
aka »How to write an application in Rust»
An off-white patch of lichen growing on a moss-covered branch in the forest.
The tutorials can be accessed here. There are 10 installments in total:
I'm pretty happy with how it all came together! A few years ago I wanted to contribute code to Scuttlebutt but had no idea how; now I find myself having made some small contributions and it feels great. I've had a lot of support along the way and I hope this tutorial will be of help to others.
- Part 1: Sbot and Web Server
- Part 2: Subscription Form and Key Validation
- Part 3: Database and Follows
- Part 4: Posts and Message Streams
- Part 5: Task Loop
- Part 6: UI Layout and Peers List
- Part 7: Latest Posts and Names
- Part 8: Post List and Post Content
- Part 9: Read, Unread and Delete
- Part 10: Extension Ideas and Conclusion
For the full tutorial, visit: https://git.coopcloud.tech/glyph/lykin_tutorial#lykin-tutorial-series
In a closing out the community grants section, Glyph mentions that there's 500 USD of community money available from the grant for anyone to claim in exchange for making an example application using lykin. For more information on how to claim that, see the full lykin tutorial announcement and get in touch with Glyph.
Mesh Network Installations
As is becoming something of a habit for the newsletter: a highlight from Luandro's evocative journeys and diaries as he continues to help indigenous communities to install digital infrastructure for their own needs; it's just very inspiring stuff!
Various installations: top-left, young Guarani installing a long-range router and Raspberry Pi, Guarani Village São Paulo; bottom-left, installing mesh node, Guarani Village, Aracruz, Espírito Santo; right, mesh node, Tupiniquim Village, Aracruz, Espírito Santo
Dweb Camp 2022
butts sitting at a round table attending a scuttlebutt session in the outdoors, under the redwoods, at dweb camp 2022
a full moon of butts attending dweb camp 2022, picture taken at the very end of camp on trav's scuttlebooth
Just like in 2019's edition of dweb camp, ssb was also present at this year's camp (2022). Some of the talks held by butts were recorded, and while all are not yet uploaded, you can pour through dweb's slowly populating stack of recorded talks here: https://archive.org/details/dwebcamp2022?and=mediatype%3A%22movies%22
Per an agreement with the organizers, scuttlebutts who came early for the event were able to have half days in the lead up to the official start, letting us get all the butt related talk off our chests. The reason for this is that we were a big group (13+ people?!) and letting us congregate before the event was hoped to make the scuttlebutt contingent more outgroup focused during the event proper—and as a participant I'd say it worked wonderfully!
Thanks to Planetary for enabling butts from all over the world to attend. In the words of mix:
Anyway some numbers, to add dimension. Planetary gifted 20-25k USD, which went to:
national/international flights for 12 butts event tickets for 13 renting cars I helped coordinate a lot of this. It took a decent amount of work.
Rabble and I did a lot of communication with individuals + the Internet Archive. Shaina from Planetary did heaps of money coordination, and vehicle booking. Mikey, Cel, and Nanomonkey helped with transport.
thread link: (9)
Using an unconference-style brainstorming session, we arrived at topics to discuss during larger group sessions. You can find meeting notes below from some of those larger ssb-focused conversations:
- groups & feeds https://hackmd.io/dRqVrPhDTuast482cG6TkQ
- diversity https://hackmd.io/tHJEAfjOT_uSdDpriIkMKQ
- onboarding https://hackmd.io/326jQDQpRiObekrCyrLENQ
We also had group sessions on sustainability, what we called dreamtime (positive dreaming of future apps we would like to see or build on ssb), and governance. The notes were however empty for those sessions so it's recommended that you go ask your closest redwood-scented butt for the local gossip on what went down in those sessions!
Thanks to nonlinear for compiling this index!
Aside from the planned group sessions, there were also all kinds of pop-up sessions held by butts:
- clothes mending with trav
- presentations by cft on his most-recent ssb research (including running a smaller ssb stack entirely over LoRa and within 120 byte packets!)
- a lightning talk on how ssb does moderation (among other subjective moderation systems)
- conversations around Āhau's context and mission
- an ssb oboarding event
- many many many tea sessions, graciously hosted by soapdog wherever he was at camp
- late-night snack circles, licorice tasting sessions, dance parties and other shenanigans
- and any number of other conversations that may have happened outside of earshot, during lunch or on the way to the bathroom
For a brief taste of the ambience of the many butt convolutions among Mendocino's flora, snippets of the ssb onboarding session were captured by Paul d'Aoust on video: https://archive.org/details/dwebcamp2022_pauldaoust_1927
feat. mikey, soapdog, trav, and a quick glance of manyverse desktop
Scuttlebooth, a based raspberry-pi and scuttlebutt-speaking photo booth, made by trav was also a great success during the event!
thread link: (10)
the scuttlebooth itself
early booth printouts on thermal paper
Wishes of european ssb gatherings
The first wish was made by arj (12):
More recently, a clearer invocation made itself known: a proposal for an early 2023—Jan or Feb—meetup in Basel, Switzerland, hosted by elavoie and cft.
Had a meeting with @cft today and we discussed logistics for a second edition of P2P Basel [(..)]. The goal of the meetup is to offer a chance for in-person community networking, brainstorming, and presentations of ongoing work. The meetup will be held at University of Basel (Basel, Switzerland), the oldest university of Switzerland (foundation 1460).
In the press
As of late Scuttlebutt has found its way into the light of publicity once again, so let's list a few of these recent appearances. First out: a general public article derived from academic research into SSB.
SSB has been inhabited for a long time by various kinds of folx, including a surprising number of academics. Two of those academics, manni & teq, are exploring Scuttlebutt's social possibility space as part of their research. The collaboration recently had a research output come out of their project, which was paired with a more general public-facing article presenting their findings for people outside of academia. An excerpt of the latter article, as well as where you can read the rest of it:
In contrast to Big Tech’s common focus on technology-first solutions, most Scuttlebutt contributors are as invested in improving the platform’s culture and governance as they are in building better technology. For example, when electing a council to distribute one of Scuttlebutt’s grants, priority was given to people with historically marginalised experiences in open-source communities.
These social elements may not scale to a platform the size of Facebook, but this isn’t a problem for Scuttlebutt, which doesn’t maximise user participation for profit. This means users can concentrate on encouraging a positive culture rather than trying to make as many people participate as much as possible.
"It’s hard to imagine better social media alternatives, but Scuttlebutt shows change is possible" by By Kate Mannell (@manni) and Eden T. Smith (@Teq) (edited by Signe Dean)
thread link: (14)
And then there was the Forbes article, an american business magazine, that received more of a... lukewarm reception by the wider community. It highlights Planetary's CEO Rabble and uses its person-focus to springboard off into related topics like Bluesky, Mastodon, the history of twitter, as well as SSB. Planetary and Manyverse both receive a mention.
If you read the article, you might find the community discussion on it interesting, see (15)
🔗 Community Links
- (1): %BMqfrigY7nTCVITJTS5tQWkyOBR/zdLA5CG9njuaZyA=.sha256
- (2): %5WJn24LzNU9m91zOopp2BRpxZO5rCwodYMpI4ANEdVk=.sha256
- (3): %fV0IabUtnWk4GGPIlmhnXCwqRui2bS1kF6Ng90Z43Hw=.sha256
- (4): %fV0IabUtnWk4GGPIlmhnXCwqRui2bS1kF6Ng90Z43Hw=.sha256
- (5): %RAXDnFIov7ozJJwu4rA5+pjycCotiLqExVI6Dtmuryk=.sha256
- (6): %RWSFBbLgsOXkJO/s5gqkdRVOYSL/n9Rvn15a61v0i6A=.sha256
- (7): %JS3xmZm7savQ7PNvpMhMljMUhlm5beEM8tFchsZ5Hog=.sha256
- (8): %vSoB1esvQDVoTAWXl4o+TbbHBxr5xdkY0OsIt2j5PlU=.sha256
- (9): %yuDQQR687nbpasafciCbmL8aE0FdzW8Vk/h9p935vaQ=.sha256
- (10): %1+n6b/kM6lhkzWGj+X8/ahYmNnCSBCyxq96XnPec0TI=.sha256
- (11): %66+mg7cfGXneY3TnJBDJXnHpbydf2PavWwWxPOPYTe0=.sha256
- (12): %JfH+0sBmHTvbQSWCcnnBJ/ueK/L5cforAjgzdBiOsz0=.sha256
- (13): %vY53ethgEG1tNsKqmLm6isNSbsu+jwMf/UNGMfUiLm0=.sha256
- (14): %YdctGQHhzbmH9B6+u3dZx7kgOqinGXoebQry7drXcMM=.sha256
- (15): %FkccO2hcRqed7zQeOe4VdIq+3+lPHCcNAHoAeVwJWiA=.sha256
And now, some quick finance glances:
- SSB landed a 50k EUR grant to implement (Private) Groups functionality—more details on that in the section below!
- Planetary started donating $250/month to the SSBC Open Collective!
- The SSBC Open Collective currently has 110+ contributors! The more contributors we have, the more the financial load is distributed. As the contributor base grows so too does the communal chest, which can be used for community grants that e.g. renovate parts of the foundational code that enables our social commons!
- If this gets you excited to contribute, well you can too!
SSB landed a 50k EUR grant to implement Private groups in a client (in this case: Manyverse!) (16)
private groups in manyverse grant announcement
If you are interested in piecemeal updates, you can follow the private groups progress in the team diary thread (17)
@andrestaltz: I realized that people in the SSB community may not know what we’re working on, so in an attempt to bring transparency to our work and document our journey, I’m starting this thread that will summarize the whole team’s weekly progress. Not quite a dev diary, because we’ll also include design and other aspects along the way.
"First long range test with #tinySSB - voice traveled 11km and back"
One of the exciting tidbits to come out of dweb camp within the community was news of cft's LoRa (low power long range radio) SSB experiments! You can read some about some of those experiments below, but the gist is that cft's managed to condense essentials of Scuttlebutt's core design in such a way that a message can fit within the low low space requirements of a LoRa packet—on the order of 100-150 bytes if memory serves! As a comparison, you could fit around 30 000 ssb-lora packets in the space of a typical mp3 music file (!!!)
thread link: (18)
picture of antenna
picture of lora setup, with parts labeled! we've got a 900MHz "pycom" antenna, a Lilygo T-Beam board, an 18650 Li-Ion battery (3.7V, 3200 mAh) as well as and sd card, an antenna adapter, and the original antenna on display
Consolidated Documentation Portal
A new effort to consolidate SSB's documentation in one logical place is coming thanks to Soapdog! (19)
Sneak a peek by going to the docs repository https://github.com/soapdog/ssb-documentation, and follow the progress by subscribing to the #ssb-documentation channel.
The objective is to have a single location to get documentation about anything SSB. From how the protocol works, to what shape a given message has, to how to do something on a given application and more.
It is a home for both end-user and developer documentation. It will be easy to link to specific documentation and reuse specific articles in your own websites or apps.
The content is written in Markdown — which lacks some semantics I like but it is easy to contribute to — and the repo is:
- a collection of content files
- scripts to automate fetching content from third-party sources (I.e: NPM module readme files)
- script tools that can be used by developers to submit new content or fetch content
- an SSB documentation static site that can be forked and themed by other stakeholders. If you want to have a SSB documentation site for your app, on your website, you’ll be able to fork and generate all the site with a new branding.
Improved Go-SSB CLI Docs
Go-SSB is a community-maintained, governed, and fully-featured ssb implementation in the go programming language that has had the recent fortune of attracting a new maintainer in the shape of decentral1se! As such it has seen a flurry of improvements over recent months.
The implementation is used by Peachcloud, for interacting with and running a standalone pub, and has been the historical base Planetary built their app on-top of, though Planetary is shifting to a new golang implementation called Scuttlego to e.g. improve on aspects important on mobile. To the best of this editor's knowledge, Scuttlego started by building out on-top of go-ssb while aiming, piece by piece, to rewrite & replace pulled-in bits & bobs until it is fully standalone. Which, at the end of the day, means we get two independent go-based implementations of SSB—huzzah!
With that bit of context covered, here's what glyph and decentral1se say about the new and improved documentation for go-ssb's command line interface:
@decentral1se (manyverse) / @decentral1se (patchwork) and I have been working on a few things in the go-ssb repo and I’m happy to share that the CLI docs for sbotcli are now vastly improved!
thread link: (20)
sbotcli NAME: ./sbotcli - Client for interacting with a go-ssb server USAGE: ./sbotcli [global options] command [command options] [arguments...] VERSION: alpha4 DESCRIPTION: Please note, global options must be placed before sub-commands, e.g. sbotcli --key <@...ed25519> <cmd> <args> COMMANDS: alias Register and revoke user aliases (for use with SSB Room servers) blobs Add a blob to the local store or call MUXRPC methods: `has`, `get` and `wants` block Block a peer by specifying their public key (@...) friends Retrieve information about the social graph (follows, blocks, hops) get Get a single message from the local database by key (%...) subset Fetch subsets of messages from the log invite Create and accept invite codes log Fetch all messages from the local database (ordered by received time) sorted Fetch all messages from the local database (ordered by message timestamps) bytype Fetch all messages from the local database matching the given type (e.g. post, vote, about etc.) hist Fetch all messages authored by the local keypair / author upto Return a list of all public keys in the log, along with the latest sequence number for each replies Fetch all replies to the given root message (%...) call Make an async call source Make a source call connect Connect to a remote peer publish Publish a message by type (raw, post, about, contact and vote) groups Manage groups (create, invite, publishTo, join) help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --shscap value SHS key (default: "1KHLiKZvAvjbY1ziZEHMXawbCEIM6qwjCDm3VYRan/s=") --addr value TCP address of the sbot to connect to (or listen on) (default: "localhost:8008") --remoteKey value The remote pubkey you are connecting to (by default the local key) --key value Secret key file (default: "/home/cordyceps/.ssb-go/secret") --unixsock value If set, Unix socket is used instead of TCP (default: "/home/cordyceps/.ssb-go/socket") --verbose Print MUXRPC packets (default: false) --timeout value Pass a duration (like 3s or 5m) after which it times out (empty string to disable) (default: "45s") --help, -h show help (default: false) --version, -v print the version (default: false)
There has been a lot of heads-in-keyboards work going on this year, with a lot of that work surfacing as specifications in various states of readiness. I've compiled a list of recent specs below, with the state they are in in parens and a brief paragraph outlining the problem they are attempting to address or a description of the spec.
Design doc for subfeeds in SSB (Ready for implementation)
A metafeed is tied to a single identity and thus should only be used on a single device. There is a separate fusion identity protocol that only deals with how to relate multiple devices to a single identity. This spec here is not for that use-case.
Buttwoo feed format (Ready for use)
Buttwoo is a new binary feed format for SSB. It draws inspiration from bamboo and meta feeds.
ssb-meta-feed-group-spec (Work in progress?)
We want to put different group content in different sub-feeds, in order to support more partial replication. But we need have a clear way to discover how you've been invited to a group without replicating the whole group's data.
ssb-group-admin-spec (Gathering requirements)
Some groups want to be able to define "Admins" who have special permissions.
ssb-user-agent-spec (Gathering requirements)
We want to coordinate with another peer. To do this we may need to know if they support some particular features.
ssb-permissions-spec (Gathering requirements)
In the context of private groups, we may want to establish "rules" for who is allowed to do what.
Continuing the topic of specs, discussions have been ongoing this year to revamp ssb's facebook/meetup event equivalent: gatherings
You can read up on the initial discussions in the following threads, and find who to poke if you want this work to continue :)
- thread link: (21)
- thread link: (22)
Closing off the specsaganza is a request for community processes in fostering the specs that exist & the specs to come:
A process for our specs
Our specs are scattered, hard to find them all, hard to refer to them succinctly, and unclear who owns them, how they evolve, etc.
🔗 Technical Links
- (16): %6SqWlpmTgnN1dH8ftOMAfC9D0dj6Gkh4Umm8RUlPphQ=.sha256
- (17): %TIddJIPkn0JmTQG/Ao7gMiSsaVhzx1QC3+QDLuQnhFQ=.sha256
- (18): %SD7V1YmcWKU9YdyV5IESeVJ1n4e4fVYKvjquqejZz6c=.sha256
- (19): %w2Q4h8hjMKBsaxlRXQqLLpEqI1FC4l+pttaYxIbri+0=.sha256
- (20): %JQPdgaaLAYXojsOCS/hsWI+c+bDLCZfUolzUoP6Eh3w=.sha256
- (21): %tPZEibfUKtk2xVQbppwmrkTfCnjxYd/ezlDAwnbo9Ts=.sha256
- (22): %iVz6DUKg/kek7WRu1TuVCA545o7AHKaMGgmaBX9wyhM=.sha256
- (23): %nXrNshZ9sg8TlFNhdH+r3Pp+RVIbxD8qqMl8DMDo0H0=.sha256
Alright! 23 threads, 10-ish images, and a lot of words later and that's it for this overdue edition. Now that the backlog is cleared perhaps the pace picks up a bit—well, we'll see in the next edition! Have a good one butts, and don't forget to thank your local maintainer!
2022-12-02, cblgh, signing off for now
p.s. did you know that you can now follow these updates over RSS? Well—you can! Here's the RSS feed.
Contribute to SSB