Lots of exciting #decentralization protocols and technology out there. Some are not ready for usage, others are not following the paradigm I prefer, I love that we're spoiled for choice.

IMO I still love #SecureScuttlebutt, for me it is still the best offline-first local-first gossip protocol out there. Yes, it has dangerous corners and design issues, but it works and I can build apps with it for my friends.

I find it has pretty intractable scaling problems. So like... it works... at first. But gets bigger and slower pretty much exponentially. What was that non-blockchain network... Briar I think?

https://briarproject.org/
Secure messaging, anywhere - Briar

Secure messaging, anywhere

@cy
> What was that non-blockchain network... Briar I think?

Briar is a neat experiment, but they've never shipped apps for anything but Android. The problem with depending on one proprietary OS ought to be obvious, Goggle's recent decision to start farming Android app devs is a good example;

https://keepandroidopen.org/

So until it's cross-platform, Briar is a fun toy, but not suitable for production use.

@soapdog

Keep Android Open

Advocating for Android as a free, open platform for everyone to build apps on.

Can't say I've looked into it before. I got tired of nodejs projects back when they switched to the new module format. Good to know, at least!

In my opinion, a good project would write programs, not "ship" "apps." Dunno what one would be good though.

CC: @[email protected]

@cy
> Dunno what one would be good though

Depends on your use case/ threat model. Ask yourself questions like; who do I want to communicate with and why? Are you looking for software for an existing group/ network of people who can make and action decisions about where to communicate? Are you wanting to adopt an app to make new contacts among its current network? How sensitive are the communications? Etc, etc.

@soapdog

I just use the Fediverse, nothing else seems worth bothering with. I kind of gave up a while ago. I don't have an existing group, or anyone at all really. Met some nice people on the Fediverse though. (None of them are interested in whatever network I might propose.)

CC: @[email protected]

@cy
> I just use the Fediverse, nothing else seems worth bothering with

Same. Other than email and SMS, and occasional use of Matrix and even less often XMPP.

@soapdog

@strypey @cy the fediverse is indeed cool, but it is not the p2p I aim for. It is very costly to run an instance in terms of bandwidth and also it is server to server and that is just federation, which is cool in its own way but not comparable. It has the best of both worlds and also the worst.

@soapdog
> the fediverse is indeed cool, but it is not the p2p I aim for

Pure P2P networks have been the holy grail of every new generation of cypherpunks since the 90s. They've never worked out. Everything that's turned out to be practical for use beyond dogfooding has some kind of supernode, and that's not even a bad thing;

https://bridgeseat.substack.com/p/in-defence-of-servers

> It is very costly to run an instance in terms of bandwidth

If you use Mastodon, sure. There are much more efficient fediverse servers.

@cy

In Defence of Servers

Why pure peer-to-peer networks aren't always better than federated ones

Bridge Seat Cooperative

@strypey @soapdog @cy

dat works now.
ppl keep ignoring it, but its battle tested and mature.

@serapath @strypey @cy

Just read the thread and there are many good points in it. As I said before, I'm not here to attempt to convince any of yous or have a flamewar.

I disagree with many of the view points expressed in the thread around terming SSB as dead or extinct and claiming it is only valid if old time developers are still present. Don't forget, I wad there from the start as well. Find it mildly annoying to see it called hobby even if it was not intentional.

@serapath @strypey @cy

SSB worked back then and still works now. It has more features now than it had back then.

I also think that people in this thread are pushing requirements and constraints in SSB that were NEVER a part of SSB protocol.

SSB is a network for connecting friends. It follows the same semantics of real life social interactions and groups.

It has never been a privacy oriented protocol for adversarial situations.

@serapath @strypey @cy

SSB p2p connections have secret handshake but SSB is not private or deniable.

Messages are a chain because it is important for the designers that they can attest that a given message was posted by a given identity.

You don't want such chain or need more privacy, there are other protocols.

This thread feels like a king of the hill where people are throwing unrelated protocols against each other trying to see who comes up on top regardless of that protocol objective.

@serapath @strypey @cy

Federation is a whole different ecosystem. ActivityPub servers are servers mostly on ther web and that comes with other needs.

SSB can work without the internet or the web. Tiny SSB can work over BT and LoRa.

This is not a competition, these are the decisions made by the protocol designers and they were made for a reason even if the reason was "yolo this is cool".

Certain things only become apparent in hindsight though, and that's life.

(1/3)

@soapdog
> This is not a competition

If you're talking about protocols as a fun toy to tinker with, it's not. Let a thousands flowers bloom.

But when it comes to getting broad adoption it is, because of a thing called network effects. A protocol that only one person uses might be technically brilliant, but it's also useless in social software until they can convince others to use it. The same is true to a lesser extent, of protocols used only by a handful of hobbyists.

@serapath @cy

(2/3)

To be socially useful beyond that, a social network protocol needs broad adoption. And people can only manage so many social apps on our devices, and only so many accounts/ IDs.

So fragmenting the potential audience for a decentralised social protocol, across many incompatible and non-interoperable protocols, runs directly against the goal of achieving a critical mass of network effects. Sufficient to replace the platforms that are wrecking democratic discourse and thus our environment.

(3/3)

At this level of concern, social protocol choice is not just a matter of personal style. It's not an exaggeration to say it's an existential issue for humanity.

So yes, it *is* a competition, and the stakes are *very* high. In 2026, Presenting hobby software based on obsolete protocols as being interchangeable with social software based on robust and evolving technical standards is irresponsible, at best.

Yeah, unfortunately while there are many reasons to use different kinds of social media software, we have a finite amount of attention, and cannot avoid spending it on one project, without running out in another. I wish it wasn't competing over a limited resource, but it seems to be the case.

But really, it's competition between protocols, not protocol designers. If we all choose to start using network A, the people programming network B can just move to working on network A. We only have so much attention, but that doesn't mean we need to throw anyone under the bus.

CC: @[email protected]

@strypey @soapdog @cy

yeah, all roads lead to dat.

its the oldest and also the best system we have.

...but just like bluesky, ppl first need to go through all the distractions before they finally ran into all the problems that make them want true peer to peer and then they try all the p2p systems until they figure out the only one with universality and performance is dat.

..its fine - i can wait. we are early in the adoption curve 🤷‍♀️

When I tried it a... while ago, SSB worked fine, but slowed down and started doing a lot of disk grinding as the database grew to multiple gigabytes, and you couldn't clean out any old posts. Took a while, so many people probably haven't run into that. I also may have been doing something wrong.

CC: @[email protected] @[email protected]

@cy @serapath @strypey you are doing nothing wrong, this is a limitation.

It uses a lot of disk space so it can be offline first. You have all the data. It shouldn't become super slow forever. On the new version, I added a better search engine but it takes a while until it indexes everything and also it takes longer to load on launch, but once it is running it is very good.

You can't delete cause you can't modify the signature chain. That is the secure part of secure scuttlebutt.

(1/2)

@cy @serapath @strypey

most of that data are actually blobs, which are images and other attachments, those can be deleted and will be fetched again from the network if needed.

I will add a blob manager in the next version.

@soapdog @cy @strypey

i love ssb.
i just wish p2p enthusiasts would embrace it to rebuild ssb just the way it is, but now you can sync only the tip of feeds and drop old data because it inherently supports sparse but verifiable replication, which would alleviate one of ssb's limitations

Do you have any documents on that? I can't figure out how it would be possible.

CC: @[email protected] @[email protected]

@cy @soapdog @strypey
//A.js
swarm = new Hyperswarm()
store = new Corestore()
feed = store.get({name:'ssb-feed'})
console.log(feed.key)
swarm.join(feed.discoverKey)
swarm.on('connection', socket => feed.replicate(socket))
feed.append('hello')
feed.append('world')

//B.js
swarm = new Hyperswarm()
store = new Corestore()
const [,,key] = process.args
feed = store.get({key})
swarm.join(feed.discoverKey)
swarm.on('connection', socket => {
feed.replicate(socket)
console.log(feed.get(1)) // world
})

That's fair, I suppose. Never thought about deleting old blobs.

@soapdog
> images and other attachments ... can be deleted

Good to know.

> I will add a blob manager in the next version

That sounds useful : ) Even more useful if it has the ability to set data retention policies, eg delete all blobs older than X, or not viewed for X days. As well as a sane default, eg delete all blobs that haven't been viewed for 1 month. What counts as "sane" here is a balance between saving space and keeping the app convenient to use.

@cy @serapath

@strypey @soapdog @cy

i guess feature and UI wise, it would be possible to make the same app on top of dat, but the p2p stack as such is incompatible and i dont have a good idea how to make them interoperable or if that wpuld even be useful... i just wish ssb and dat could somehow join forces.

i perceived them as "cousin projects" since forever, because both communities had so much overlap 🙂

@serapath
> i dont have a good idea how to make them interoperable

I presume this is impossible, because in protocols like SSB, the network layer is inseparably welded to the data layer, which is inseparably welded to the interface layer. All of which are fundamental design mistakes, which Dominic probably wouldn't have made if he'd followed the Kalashnikov Principle before he started hacking. He certainly wouldn't make the same mistakes if he was designing a protocol now.

@soapdog @cy

@strypey @serapath @cy

Strypey,

Please stop with FUD.

> the network layer is inseparably welded to the data layer,

No it is not. The data is saved in flumedb with attachments, it is just an append-only log. Some clients don't use it at all and have other solutions.

> which is inseparably welded to the interface layer.

Different clients have different interface layers. There are git clients, npm clients, dropbox-like clients, social networks, genealogy managers all built on top of SSB.

@soapdog @strypey @cy

yes. dominic tarr is actually a brilliant developer and all about modularity. in that sense ssb is the only ecosystem that follows this approach as radically as dat does - hence xommunity overlap and i consider them "spiritual cousins" 😁

they both use libsodium as well.

they both are implemented in javascript too.

i wish there was a way to join the ecosystems it would be powerful. this wpuld mean to somehow use adapters between pull-streams and streamx and more

@serapath @strypey @cy you can simply code something to export the SSB db and then some way to import it into DAT, it should not be impossible.

@soapdog @strypey @cy

yes, but that would just be an offramp and onramp, but interoperability would be much cooler 🙂

@serapath @strypey @cy I don't think interoperability is desirable there cause SSB is supposed to work without depending on other networks...

@soapdog @strypey @cy

hmm... not saying it should chance, more like having a bridge so users of both ecosystems have an easier time interacting

But why can't I modify the signature chain? There's no reason to enforce that. Or to have a blockchain.

@cy @strypey @soapdog

this could be fixed by rebuilding ssb on top of dat which inherently allows for sparse replication

Sparse replication, or sparse validation? You can't validate data that's not there.
@cy
both.
you of course only validate the parts you sparsly replicate and validate the rest later on.
this is what merkle proofs enable
You can delete branches from a hash tree and it'll still be a valid hash tree, though? I thought it was proof that nothing had been deleted.

@cy
you can delete branches from the tree and then nobody can get that data anymore. if you just evict it from your cache, you can re-download it from the p2p network given somebody still seeds the data.

you can also build applications where you rewrite history (feed.truncate()) ...that will increase the hypercores `.fork` counter and its detectable. use cases are when you use `autobase` to have multi writer hypercores

So... the proof is just... that the feed is the correct one for the most recently signed root hash. Nothing about only appending, or immutable, or whatever they say about Bitcoin.

@cy the latest signed root verifies all data of the log, because after appending, the new signed merkle root still includes the entire older merkle tree too.

it is immutable, because change can be detected. it would change the merkle tree hashes.

@cy ...also dat has nothing to do wih cryptocurrencies or bitcoin

@serapath
> dat has nothing to do wih cryptocurrencies or bitcoin

Something can be a blockchain without having anything to do with those, eg;

https://jami.net/the-jami-blockchain-switches-from-proof-of-work-to-proof-of-authority/

Also, as I've said before SSB is *not* a blockchain. If it was, it wouldn't be possible to delete old media ("blobs" as @soapdog called them). They would all be immutable parts of the chain, as they are in social apps that do use blockchains;

https://wiki.p2pfoundation.net/Blockchain_Social_Media_Apps

@cy

Jami

Jami facilitates share, freely and privately.

Jami

@strypey @soapdog @cy

so yes. dat can delete old blocks/blobs/data, thus not a blockchain.

blocks in dat do NOT point with a hash to a previous block like blockchains do.

the merkle tree is a parallel data structure, so dat is at most as blockchainy as ssb, but imho arguably less blockchain than ssb

The posts are on a blockchain. The "blobs" are something separate. I don't think it has any swarming for blobs, just requesting the whole blob at once. Other than that, can't remember.

CC: @[email protected] @[email protected]

@cy @soapdog @strypey

i am not sure everyone would agree with your definition of blockchain.

you are saying "git" is a blockchain.

i'm not saying its not a possible (very literal) definition, but imho most ppl think of "global consensus" mechanism where everyone can contribute blockchain inputs permisionlessly based on the rules.

...that definition makes neither dat nor ssb a blockchain

I have actually attemped to write a DVCS that used hash trees instead of git's acyclic directed graphs. That how little I like blockchains. One advantage of git though, is the blockchain is never verified. It's just used to rewind the graph node by node, and doesn't care whether it reaches the correct "initial" commit.

The whole Byzantine Consensus thing is also terrible. In addition to blockchains. I never claimed SSB had that. And Dat does not appear to have anything to do with blockchains.

@cy

yeah, there is no byzantines general problem to solve in dat, because dat is not about consensus of global state - imho thats why its not a boockchain.

git, ssb, dat
...chain blocks ... git and ssb by literally including hashes in blocks to point to previous blocks. dat doesnt, so its even less blockchain. dat has merkle tree metadata to order log entries, but thats not part of the independent log entries as such.

nine of them solve global state consensus or byzantine general issues

@cy
> Byzantine Consensus thing is also terrible. In addition to blockchains

AFAIK blockchains were defined by the BitCoin whitepaper (which I read not long after it was published). The consensus mechanism is part of the definition. If an append-only log doesn't do consensus, it isn't a blockchain. Git preceded blockchains. SSB is not one. Neither is HoloChain.

You seem to think have a much more expansive definition, and I'm really curious to know where you're basing that on.

@serapath

I'm basing it on the fact that you have a chain of blocks. What am I supposed to call it? It's odd enough that I'm limiting my definition to a chain formed by requiring the next block to have a cryptographic hash of the previous one. Limiting it further because "It's only bad if Bitcoin did it" doesn't seem wise.

CC: @[email protected]
If it were immutable, then you couldn't append anything to the log either, since that changes the hashes.

A given root hash will always lead to a given version of a log though, if you have it. I think that's what you're saying? So if I link to $HASH/post/33 and you delete post 33, then people requesting $YOURKEY/current will get $HASH2/..., which doesn't have post 33. But my link will still be to the same data. Is that what you're saying?

That's an important thing that HTML really fell flat on. You can't link to any webpage without the chance it'll be replaced with a webpage that says "Everyone who links to this page likes kiddie pron." Be nice if dat fixed that.

@cy
yes, given root hash always leads log version.

deleting post33 means, if you try to download it you'll wait forever or timeout, because its not available. there is no new hash.

if you actually `fork` and override post33, the `feed.fork` counter increases and yes, you trying to download 33 will always know it was changed, because hash doesnt check out.

for html pages i'd use hyperdrive instead of hypercore directly. ...a hyperdrive base web makes internet archive trivial 🙂

@cy

its not about nothing has been deleted, its just if somebody has the data, you can verify it is part of the log (=hypercore) ...but doesnt mean the data has to be there `feed.clear(...)` drops data

OK that's just what a hash tree does, so I can't object to that. And you COULD vaguely detect changes sparsely, because if a piece changes, then all the levels above it also change. So like if you see the first of three hashes changed, you know something somewhere in the first third of the blog changed. So you COULD forbid any updates that change anything but the final hash in any level. Just there's no reason to do so.

I thought it was trying to make it like NFTs where once it's in the blockchain it's there forever, or something. That's the only thing that worried me about dat, at least.
@cy
no, nothing to do with "nft" which means non fubgible token and dat has nothing to do with tokens. tokens need global consensus, but dat doesnt have any of that - it is peer to peer.

@soapdog
> claiming it is only valid if old time developers are still present

That's a strawman. My argument is that vast majority of former devs departed for *good reasons*, due to inherent limitations of the protocol that break UX for most use cases, and that they were unable to hack around despite trying their darnedest.

> I was there from the start as well

That's important context, thanks for clarifying. Good on you for sticking with it, I guess.

@serapath @cy

@strypey @soapdog @cy

given dat works very similar to ssb, but without the shortcomings - has sparse verifiable replication and also supports seed phrase based multi-device identity - wouldnt it be cool and/or easier to hack together a UI a la patchwork and migrate?

it means also big files can now be shared trivially using hyperdrive 🙂

if there was interest, i'd be very happy to help