For this #GivingTuesday I'm going to make the (biased) argument for why you might consider donating to @spritely, especially if you care about a healthier future for the internet! https://spritely.institute/donate/

Here's a little thread explaining more... 🧵

Support Spritely! — Spritely Institute

@spritely is developing some damn cool tech: Distributed programming! Leading the way on a secure P2P protocol (OCapN)! A WebAssembly toolkit!

But: is "cool tech" what matters? *Why* are we trying to make cool tech? What are the *social implications* of making this technology?

I gave a talk on this recently: "Protocols and Purpose in a Global Democratic Crisis" https://c-tube.c-base.org/w/f9pF5pwxX8mVkmW2i3dU1M

*None* of the decentralized social networks today are robust enough to handle the threats facing vulnerable people and activists today. Not the present-day fediverse, not Bluesky/ATProto. What can we do?

#fediday2025 Christine Lemmer-Webber - Protocols and Purpose in a Global Democratic Crisis

PeerTube

What can we do? Is there hope? Is it possible to build something better?

Spritely was born out of this work, and the strive to create infrastructure allowing for "Networks of Consent". More on that here: https://spui25.nl/programma/we-can-change-the-defaults-building-networks-of-consent-and-spaces-of-joy-in-the-ruins-of-social-media

Social Media: We Can Change the Defaults

Christine Lemmer-Webber, best known as co-author of ActivityPub, the decentralized social networking protocol, will speak about the crisis technologists face. Why must we revise the default assumptions of the web 2.0 era? She will introduce the work the Spritely Institute is doing to make a positive future possible. 

SPUI25

I love computers. When people say "Computers were a mistake!" it makes me sad.

But it's had to blame people. The direction computers have gone in, the experience people largely have had, is a loss of agency and empowerment.

How do we bring that back, and do better than ever even?

User-empowering technology is a lot of work, corporations aren't motivated to build it. We need research and development of new tech that changes the game from an org that isn't bound by pushing profit.

And that's why @spritely is a nonprofit research lab.

So... what are we doing?

We're building cool tech:
- Goblins, p2p distributed programming: https://spritely.institute/goblins/
- Hoot, a WebAssembly toolkit (and Scheme->WASM compiler) https://spritely.institute/hoot/
- OCapN, a secure distributed p2p networked protocol https://ocapn.org/

But... what are we *doing* with these things?

Goblins: Distributed Programming — Spritely Institute

We're big believers in having tangible examples of tech so people can understand and it's not just vaporware. Sometimes that's challenging to do with low-level tech in development. But games are a great way to show things off!

Unusually, Spritely has a whole arcade page! https://spritely.institute/arcade/

Spritely Networked Communities Institute — Spritely Institute

These games are fun and great at showing off ideas of otherwise hard-to-explain concepts. And more, in a moment, why fun and joy aren't small matters.

But... is it all just fun and games? What about actual everyday tangible use?

We're getting close to that point. Here's what we've been up to.

It's the year of dogfooding and Spritely has been using its own tech *every day* this year with a project called Pumpkin Chat https://codeberg.org/spritely/pumpkin-chat/

Alas, it's what's called "dogfood". Not fit for human consumption. But it's possible to use this tech every day, and we are. We're working on getting it out to others too.

pumpkin-chat

pumpkin-chat

Codeberg.org

We also recently put out a blogpost and demo of a chat system that *nobody* centrally hosts called "Brassica Chat" https://spritely.institute/news/composing-capability-security-and-conflict-free-replicated-data-types.html

Again, it's a demo, but you can try on it on the page. It combines capability security with cool concepts called CRDTs.

But more importantly, it's a step towards secure communication for a hostile world.

Composing capability security and conflict-free replicated data types — Spritely Institute

There's more... we've been busy!

GoblinShare: Secure, Peer-to-Peer File-Sharing with Goblins https://spritely.institute/news/goblinshare-secure-peer-to-peer-file-sharing-with-goblins.html

Shepherd × Goblins update https://spritely.institute/news/shepherd-goblins-update.html

Honestly our blog is full of interesting details of stuff we're doing! https://spritely.institute/news/

GoblinShare: Secure, Peer-to-Peer File-Sharing with Goblins — Spritely Institute

And we're still building key infrastructure. Goblins recently got a major upgrade to its persistence system: https://spritely.institute/news/spritely-goblins-v0-17-0-persistence-is-better-than-ever.html

And it's about to get another one. Not really yet announced, but we're working on a hot-cache system that loads actors from store on demand. It's neat!

We also have another mini demo coming out soon. It's not our main focus, but @tsyesika has been working on a mini demo of an ActivityPub server built on top of Goblins. (Someone with money wanna fund this? :P)

That's a teaser, some blogposts coming out soon (but again, not our main focus until we can get funding for it)

But what does it mean for systems to be social? Here's something you can't do on either ActivityPub or ATProto, but is a demo we built with Goblins and OCapN: a collaborative farming game! https://spritely.institute/news/goblinville-a-spring-lisp-game-jam-2025-retrospective.html

Earlier I mentioned that fun and joy are actually very important. Indeed, the success of *all* social networks, and indeed, almost every kind of tech, has been rooted in people having joyful, often shared, experiences together.

Joy is part of resistance. And joy is part of our tech.

I've said a lot, there's more that can be said, but instead I'll switch to the ask.

Does the above resonate with you? @spritely could really, truly use your help.

Consider donating. I promise we'll put it to good use. https://spritely.institute/donate/

Let's build a better internet! 💜

Support Spritely! — Spritely Institute

@cwebber Reminds me of the whole "stop talking to each other and spend money" thing where people, naturally, build places of joy and connection online, so they're nice to be in, so people flock to them, so companies notice where all the people are so they show up and ruin things by trying to get people to give them money instead of hanging out having fun and being weird little goblins together.

What you're describing is, like, the inverse of that or so.

@cwebber Gaming is everything, and bless you for focusing there. And doing it in Scheme.
@cwebber I can not wait to use this in https://WorkAdventu.re
Virtual Office & Remote Event App | WorkAdventure

Explore for innovative virtual office app & remote event. Boost engagement, motivation and collaboration for your remote teams!

WorkAdventure
@cwebber
Oh, this is really fascinating work — thank you!
@cwebber how does pumpkin chat compare to brassica chat?
@semitones @cwebber pumpkin chat is more of a traditional multi-user chat system in that the room has to be hosted somewhere, which means the machine hosting the room has to be online in order for you to chat. brassica chat is fully p2p and a room is not hosted anywhere. instead, everyone in the room maintains their own copy and users synchronize when they are able to reach each other, kinda like a git repo.

@dthompson @cwebber @semitones How do you manage the conflict with Brassica?

With Git, we agree on a main server that acts as the authority when the synchronization between peers fails (history rewrite, conflict, etc.).

How does Brassica manage when two or more users rewrite their history of messages? Does Brassica have a kind of mechanism for consensus?

@zimoun @cwebber @semitones brassica chat uses CRDTs (https://crdt.tech/) which are data structures designed such that all conflicts are resolved automatically and deterministically. they handle conflicts but not history rewrites. those are two separate issues.

exactly how conflicts are resolved depends on the app you are building. for brassica chat it's fairly simple and the "last write wins" strategy works fine for things like editing messages but a lot of the work in CRDT development is handling concurrent, conflicting operations.

in git, the set of commits is append-only and the commits are immutable. in other words, the commit graph is monotonic. the data inside a CRDT must also be monotonic. in contrast, refs (branches, etc.) are mutable and nonmonotonic. rewriting history is simply mutating a ref to point at a different commit. CRDTs cover the append-only, immutable log part but not the mutable pointer part. anything that is not a monotonic operation requires coordination. the general idea is that using CRDTs reduces the number of things that require coordination in your system so that more of the app works offline/during a net split.

About CRDTs • Conflict-free Replicated Data Types

Resources and community around CRDT technology — papers, blog posts, code and more.

Conflict-free Replicated Data Types

@dthompson Thank you! Great explanation. That’s super interesting!

And thanks for the link… Yet another content on my pile. 😁

@semitones @cwebber

@cwebber
This is some seriously cool stuff, and I can't wait to see someone develop a bonafide, daily driver app with all of this.

That said, every time I hear OCapN, my brain thinks...

@cwebber As much as I love to see folks building real, tangible software in LISP, I’m curious whether y’all have had discussions already about whether/when to expand Goblins etc into more widely used ecosystems like Python, Rust, JS etc?

Anyway, *trundles off to double check whether he set up a recurring Spritely donation already or had just been thinking about it…*

@bitprophet OCapN has multiple in-progress implementations, JS and Dart ones both being very actively developed!
@cwebber break a few big corpos and some vc founds and tech will began to heal, nothing like actually depending on providing good software to get them to treat the users better

@cwebber the more I touch computers the more I hate them. The only way to fix them is to redo everything from scratch, but that is not possible to do properly because of capitalism, so the only way to fix computers is to remove capitalism, and well, good luck.

I am trying to at least make using computers not a painful experience, but like, redoing basically everything, including the CPU, is a PITA, and there is still the issue of dealing with things like the internet, which just, makes any kinda effort like this unable to succeed fully, not even taking the money into account.

I regularly want to just run off to the woods.

@cwebber Build alternatives that prove our point, invite them to join, and ignore everyone else who otherwise denigrates or questions those alternatives.

ActivityPub is one of the key ways we can do that, thanks in part to you.

@cwebber When I quip "Computer were a mistake" I mean it as a shorthand for the new-style computers that control/limit the user instead of being empowering technology.

@cwebber

Remove the entities (government & corporations) which stole the fun from us?

@cwebber Computers have gotten so bad that I dress in Mennonite clothing to avoid them in social situations.