Live data from Hacker News

Scuttlebot: Peer-to-peer database, identity provider, and messaging system

scuttlebot.io

101–110 of 123 posts

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#101
post #99

Why does the users' data have to be stored in a form of a linked list (or "blockchain")? Couldn't every peer in the network just hold his own database full of messages and blobs and sign them with their private key when requested by an invited follower? Edit: typo

Basically Scuttlebot is a collection of linked lists (or blockchains if you will) because you only have to discover one message to be able to fetch the rest of the related content, since it's all linked as a DAG.

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#102

Huge fan of Scuttlebutt and think it could (should) be the future of the social internet. I recently quit my job to write about and work on decentralized tech full time with scuttlebutt being my primary focus. I've written about why I think it's so important here: https://adecentralizedworld.com/2020/03/what-is-scuttlebutt/

> Decentralized social networks have been tried before, the two most well known are Diaspora and Mastadon. With these services there [is still moderation]... Scuttlebutt is how I believe the social web should function in the future. Even the Hackernews community which lean towards decentralization more so than the general public would still argue there is value in moderation.

I'm the author of one of the clients (https://patchfox.org). All clients support blocking people, both visibly with a public message, or privately with an encrypted message only readable by you (which causes your client to block that feed). In Patchfox, I've added other forms of moderation which boils down to self-moderation and selective listening. You can mute or blur feeds, keywords, and channels. Even though this is client-side only, it provides some tools to keep a safe space around how you interact with the larger world. It doesn't affect replication and doesn't carry on into other clients (as I'm still trying to find the best patterns and practices for this).

In the end I'm seeing lots of comment here by people who probably don't actually use SSB. It is a quite fun and lovable place.

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#103
Hey, this page is outdated. It is basically a list of APIs from ssb-server and some other related plugins, but there are entries there that are old and haven't been kept in sync with the actual modules.

https://scuttlebutt.nz (nee https://ssb.nz) is a better link for all things SSB. The protocol guide at https://ssbc.github.io/scuttlebutt-protocol-guide/ is your friend in understanding our little garden.

Be aware that SSB grew much like a garden. It is not a protocol and ecosystem designed by committee with a cold and effective process. It grew from simple stuff into more complex stuff, and yes we all understand some of the challenges pilled upon all of us due to bad decisions in the past.

There is a lot to love in SSB. Instead of going "npm install, meh", you should try it out. You don't need npm or nodejs to try SSB out, you can just pick any of the clients listed in the first page I linked.

I develop one of those clients, patchfox, but it is not a full client so you'll need to bring your own ssb-server.

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#104
post #31

Scuttlebutt is a neat concept, burdened by a bad protocol. Signing a message involves serializing a json object, signing it, adding the signature as a field on that json object, and then serializing it again. To verify, you deserialize the message into an object, remove the signature field, and then reserialize it, and verify the signature against that new serialization. This means that all the clients have to have a…

This is typically the case that would benefit from a function compiled to webassembly. "Write once, run everywhere."

The protocol helper functions would be compiled to a webassembly library, and you would reuse them in Go, Python, the browser, etc

Of course, it's not justification for using their protocol (rewriting a protocol in another language is a good test for the protocol specification), but that would be a usecase for webassembly.

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#105
post #31

Scuttlebutt is a neat concept, burdened by a bad protocol. Signing a message involves serializing a json object, signing it, adding the signature as a field on that json object, and then serializing it again. To verify, you deserialize the message into an object, remove the signature field, and then reserialize it, and verify the signature against that new serialization. This means that all the clients have to have a…

As @cel pointed out further down the tree [1] that's not entirely correct any longer. Especially the "100% tied to node.js" part has not been for a while. There are now alternative implementations for Rust and Go.

Now, the feed format is indeed a practical problem if you try to make a client from scratch and it is annoying. Luckily, using one of the already existing libraries will handle this for you.

Changing that feed format for everyone is not possible, simply because there's already an existing social network built on the old ones that we very much want to preserve since we actually... well... hang out there. Changing feed format thus involves adding a new feed format and making sure other clients can handle and link together both. At the benefit of abstracting away the feed format, and being able to iterate on them.

[1]: https://news.ycombinator.com/item?id=22912075

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#106
post #31

Scuttlebutt is a neat concept, burdened by a bad protocol. Signing a message involves serializing a json object, signing it, adding the signature as a field on that json object, and then serializing it again. To verify, you deserialize the message into an object, remove the signature field, and then reserialize it, and verify the signature against that new serialization. This means that all the clients have to have a…

After reading about the protocol I came to a similar conclusion as you. Although it needs to be noted that the JSON serialization is defined as JSON.stringify as defined in ECMA-262 6th Ed. plus some more. To me it's worse that key order must be preserved, which this standard does not specify the way I understand it. Source: https://ssbc.github.io/scuttlebutt-protocol-guide/#message-f...

> In brief, the rules are:

- Two spaces for indentation.

- Dictionary entries and list elements each on their own line.

- etc...

This is so weird to me. Why a protocol needs a strict, opinionated format of JSON? If they really need a very specific format of JSON, why they even bother JSON? There are better options like protobuf.

This seems the worst example of "Use JSON for everything".

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#107

Earlier quoted context omitted.

I've been on SSB for some 3 years (with some breaks when I had enough of npm). Once you're onboarded it works like a charm: exchange of data between peers works swiftly and efficiently, to the extend that you can even use it for realtime chat the way IRC works. The community is colourful and friendly, and the signal to noise ratio is high. I've learned a lot about fermentation and growing mushrooms and living off-gri…

Thank you! The lack of multi-device support isn't too much cumbersome? Also, do you not fear, due to the gossip protocol, that your private messages may be stored forever by peers and one day, your private key leaks, and all your conversations are publicly exposed?

One of my wishes is that it would support a hardware token like the yubikey for storing the private key, to make leaks less likely (although it might not be super performant).

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#108
post #7

Earlier quoted context omitted.

It's been a while, but I used to be an active SSB user. I hosted SSB pubs and used to post on patchwork semi-regularly. I thought it worked pretty well as a social network. I discovered new and interesting ideas from folks that I don't see much on mainstream social media. I haven't followed the space much recently, and I'm curious about how it has evolved over the last year or so. My favorite memories on SSB: Someone…

> I loved taking my laptop out on the train or to a coffee shop, and replying to threads and publishing a post to SSB while offline. Something about reading other peoples ideas while disconnected, and then writing my thoughts, and having them automatically sync to the network when I got back on my WiFi at home, gave me a different perspective on ways to use technology. You can do this with Usenet and most BBS's. Most…

One cool feature of Scuttlebot is that if you and your friend are already following each other, you only need a connection to each other P2P to be able to send messages to each other. So if you're on a train with ad-hoc WiFi connected to each other, you can still proceed as usual and sync stuff.

I don't think this feature exists in Usenet and BBS's where there is a central server who masterminds the sync that everyone is doing. Same with email, requires a server (local or remote) to send/receive stuff while in SSB both local and remote are usually the same machine.

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#109
post #93

Earlier quoted context omitted.

I don’t understand why npm install is so bad here? It’s just a package manager. It’s not hard to write your implementation without npm if you prefer.

I think npm is barely a package manager. Yarn is a bit better, but it’s also my experience with most of the stuff in the JS ecosystem.

I think the quality of X doesn't determine what X is.

npm is a package manager, it manages packages for you. Hard to escape that fact. It's a bit rubbish, but it doesn't make it _not_ a package manager.

Same with the USA, might be a shitty country, doesn't mean it's barely a country

Re: Scuttlebot: Peer-to-peer database, identity provider, and messaging system

#110
post #99

Why does the users' data have to be stored in a form of a linked list (or "blockchain")? Couldn't every peer in the network just hold his own database full of messages and blobs and sign them with their private key when requested by an invited follower? Edit: typo

Basically Scuttlebot is a collection of linked lists (or blockchains if you will) because you only have to discover one message to be able to fetch the rest of the related content, since it's all linked as a DAG.

Yeah, so this is the design decision that I don't really understand. Each message on the blockchain contains the author's public key representing his identity. If I already know the identity of the author, I could just go ahead and befriend him and later ask him or other peers who are his friends to share his "feed" with me. If the feed lives in a relational DB, I could then use SQL to ask for particular messages like:

"select * from posts order by created_at desc" or: "select * from posts order by created_at asc where created_at > " or: "select * from blobs where type = 'photo'" etc.

In other words, I could query the feeds the way I want to. Also, this allows the author to delete the content, although this would also require to send some DELETE requests to peers mirroring the author's feed and those requests would have to be respected, but that's another story.

Post reply on HN