Show HN: s@: decentralized social networking over static sites

satproto.org

413 points by remywang 4 days ago


kennywinker - 4 days ago

This suffers from the same problem that so so so many alternative social, federated, self-hosted ideas suffer from. Matrix, keybase, pgp, etc.

It’s too dependant on encryption. Yes, it’s a cool technical feat that stuff can be in the open but also private - but:

1. I want to be able to follow my freinds if my phone dies and i have to get a new one.

2. I am very technical, and idk exactly what a X25519 keypair is.

I would like for people to come up with more stuff like this that is designed for small communities but not for very secure communication. Like I want something where it’s secured by a username and password, that i give to a server i am registered with - and that server handles the encryption business. If the server rotates keys, that’s for the admin to figure out and exchange keys with sibling servers.

Idk I’m just making up specifics but this is the kind of ethos i think is needed to make things that can be successful with non-technical people in a way that can unseat big tech.

In case i sound too critical - this is cool. It just isn’t something i can use with family and friends to replace facebook or even email.

theamk - 4 days ago

> The private key is stored in the browser’s localStorage.

Woah.. when will those people learn? _Any_ browser storage is unreliable. Anything goes wrong with your web experience? Clear browser settings. Make new profile. Re-install browser. The browser's localStorage is not a replacement for filesystem. It cannot be backed up, it is super volatile, and it should _never_ be used for anything important. It's one of those "worst of both world" cases, where malware can access it with no problem, while legitimate backup programs are locked out.

(And yes, the post mentions "new device" flow, but how many people would (1) remember to export their private key and (2) won't lose it with their device? I bet in practice people will use the network until the first time localStorage is lost, and then they will get annoyed that their feeds are lost forever, and will likely leave the network for good)

neilv - 4 days ago

> By convention, the client looks under /satellite/ by default. If that path is already taken, place a satproto_root.json file at the domain root containing { "sat_root": "my-custom-repo" } — the client checks this first.

Would a `/.well-known/` be helpful here?

https://en.wikipedia.org/wiki/Well-known_URI

esjeon - 4 days ago

A bit of an off-topic, but the social networking protocol should never be designed for the sake of the protocol itself, or it’ll not enjoy the networking effect. A protocol must offer direct benefits to users, so that they keep participating in the network. This participation is what eventually forms the network of people, a.k.a, society. I always pick BitTorrent as the most successful example of such networking protocol - people just wanted to download stuffs (e.g. movies and pxxxs) but ends up participating in the sharing network.

Personally, I think a possible angle of attack for a new practical social network protocol is data management, as the amount of data people generate, consume, store, and share is enormous these days. More like, manage data conveniently, and share them easily as a side-effect.

txrx0000 - 4 days ago

Glad to see more of these efforts. But here's what it will really take to decentralize social media and E2EE messengers:

We need something like Discord, except each server is an actual self-hosted server like a Minecraft server. DMs between two users should be handled by a mutual server. Account credentials should be handled by a Nostr-like protocol, which also gives you global tweeting capabilities as a bonus.

Run the whole thing on Yggdrasil Network or something similar so that it's not tied down to IPv4v6 and DNS and all existing hardware infra, but can still take advantage of them. And add reciprocal inter-server onion routing to make it difficult to geolocate servers. Also take a page from SoftEther VPN's book and wrap all traffic in HTTPS and perform automatic NAT traversal, so that people can host servers from behind ISP firewalls.

Anything short of that and we lose to big tech and govs in the long run. But once we've achieved the above, the decentralized web can truly take off: we will get WiFi routers running open-source firmware to make a mesh network to act as alternative physical layer infra for the new web. We can still take advantage of the existing Internet's bandwidth as long as there's an unblockable path to send a little bit of data to discover and coordinate nodes.

_pdp_ - 4 days ago

Long ago there was this thing called foaf https://en.wikipedia.org/wiki/FOAF and also https://en.wikipedia.org/wiki/Pingback ... it was the closest I've seen to completely decentralised social media.

Retr0id - 4 days ago

I wish I could share a graph of my eyebrow height over time as I read through this part:

> sAT Protocol (s@) is a decentralized social networking protocol based on static sites. Each user owns a static website storing all their data in encrypted JSON stores.

serial_dev - 4 days ago

It would be nice to start with what this actually is from the user’s point of view.

Forking, paths, JSON, decentralized, encryption, key rotation, etc and I still have no idea why I would bother and who else could use it (a decentralized social network is only so much fun if you are the only one on it).

lovvtide - 4 days ago

Funny to see people mention nostr

https://satellite.earth/ (Satellite nostr client)

https://nsite.run/ (literally static sites on nostr)

1dom - 4 days ago

I really like solutions in this space, and this is quite nice. Seeing people try create solutions like this really tickles my brain a lot. Even if I think more into it and conclude it has catastrophic issues, I still really get a weird kick learning about novel decentralised networks. I really can't explain it. Fancy combinations of encryption and decentralisation just really do it for me, to an abnormal and uncomfortable extent. Hopefully someone else relates to this.

Anyway, I really like this idea, it's cool. When I think about this one though, I feel there's too much friction in the follow/unfollow process. Having unfollowing requiring reenecrypting and rebuilding the entire website for everyone seems cumbersome. It's not a killer in itself, but combined with this:

> If the original post is inaccessible (e.g. the viewer doesn’t follow the author), the reply is hidden entirely. A user only sees replies from people they follow — this is the spam prevention mechanism.

I think this is going to prevent it from scaling in any desirable way. I know it's not intended to scale, and is targetted at smaller freinds networks, not influencers, but again, even small friendship networks grow complex, and I can see the experience on S@t turning into the worst parts of activitypub where you can only read half of the interesting replies because not being friends, and it being a pain to then become mutual friends.

But, I really, really do like that s@t feels like a combination of RSS, activity pub and static sites, having a browser heavy client is interesting to.

It does feel a bit like s@t wants stuff to be easily locked down between a dynamic list of friends though, and it feels a bit weird to have the foundational tech of such a protocol be static sites, which by definition make it hard to lock stuff down to a dynamic list of friends. Hmmmm, I really do love/hate static site architecture

This is nice though, thanks for sharing.

evbogue - 4 days ago

This obviously needs some iteration on the protocol design as other commenters have mentioned, but I'd still be up for partnering up over here at https://anproto.com/

koolala - 4 days ago

Signed JSON reminds me of Nostr. I wish Nostr was somehow more mainstream.

flaxxer - 4 days ago

Nostr https://nostr.com/

Uptrenda - 4 days ago

The client fetches the pub key off the server which is decentralized? There's no part in the protocol that authenticates whether or not a pub key is legit. If its replaced by an attacker and someone subsequently goes to fetch a key they can read those messages. I mean, pub key infrastructure is meant to solve that. With SSL and such... that's why you its a federated chain of certificates with providers vouching that names = pub keys.

This is a very common problem. There is potential to possibly make this more decentralized with smart card technology. Like imagine a smart phone with access to pub keys in the hardware tied to an account cryptographically. Then you can say something like phone number = subscriber = pub key. Encrypted messaging apps seem to bootstrap off of ownership for numbers in the mobile system (mobile system security is very bad so there are dragons here.) The other apps like pidgin with OTR plugins they have unique phrases that help with the issue.

When you start looking at decentralized pub key infrastructure tied to human-meaningful names you start to run into zookos triangle:

https://en.wikipedia.org/wiki/Zooko%27s_triangle

human-meaningful, decentralized, secure -- pick two

superkuh - 4 days ago

satproto's implementation involves complex cryptographic signing and that makes it very not static. One needs to run a program of some sort to use satproto. The only static part is that the json that's operated upon.

This is not true of indieweb's web mention: https://indieweb.org/Webmention

It just uses HTTP POST (like pingback/trackback/etc, except it has a second step verifying the page sending the webmention actually has a link to a URL on the website). You can them them with a browser or cURL or some complex backend script. Receiving them is as easy as logging POSTs to a specific URL endpoint or even using someone else's community backend your site interfaces with via javascript (ie, https://webmention.io/ - not static since it uses JS). Or anything in between.

Totally decentralized and very simple. I implemented a simple nginx POST logging format in the config to receive on my static site. And HTML forms on my static site can send. http://superkuh.com/blog/2019-12-11-3.html

clarkqaq - 4 days ago

Nostr?!

https://github.com/nostr-protocol/nostr

est - 4 days ago

Seems a bit complicated.

Why not use git for social networking ;)

https://github.com/est/gitweets

mattkevan - 4 days ago

I built something similar to this. It's a SSG and CMS that runs in the browser and publishes the raw Markdown and JSON metadata alongside the rendered HTML. Unlike this it doesn't use encryption as it only publishes public data.

As the source is available, other clients can easily parse the data so that content can be made available beyond the browser, such as text-only clients, indexing and discovery networks and custom readers. I've built a prototype terminal client to test this out.

Now that the editor is working, my plans are to add public follow/block/like lists to sites to add a lightweight social layer and to build an open indexer framework for content discovery.

It's not trying to be another social network protocol. It's first and foremost a publishing platform, designed to be as easy to use as something like Medium while still being simple, open and portable.

I'd really appreciate any feedback: https://www.sparktype.org.

James_K - 4 days ago

Just use RSS at that point. I don't see the value of encrypting everything, like people are gonna be spying on your random static blog entries.

Goofy_Coyote - 4 days ago

Very interesting idea, love the simplicity.

Question about this:

“Threads are positioned in the timeline by the original post’s created_at; replies within a thread are sorted by their own created_at ascending.”

Does this mean, I, as the person replying to the post can manipulate my reply time to say, 3 minutes before person X’s reply?

If so, I can imagine a few adversarial ways of (ab)using this.

I understand this is more for friend groups, just curious if my understanding is correct.

- 4 days ago
[deleted]
vaylian - 4 days ago

This is intriguing. But I wish there was a rationale/philosophy document on that site, that explains what the intentions and use-cases behind this project are. Given that cryptography is such a fundamental part of the design, I wonder if public posts are not desired.

talkingtab - 4 days ago

The concept is good. It is in the right direction.

I think it needs to not have a dependence on github. This is a microsoft thing, and at best it means this will become another way for a corporation to make money from people.

Speaking of money, it needs to be paid for. (The github part is free from Microsloth and so is NOT free). So how do you pay for this? Micropayments.

So we need a system of micropayments. Then we need it to provide a way to help people economically. These are not barriers, because this is hacker news, instead this is an accurate understanding of more of the problem.

People keep talking about a collaborative internet without using the term. But to be clear we are talking about a fundamentally different kind of internet. That we can build.

hxii - 4 days ago

So, in essence this is very, very similar to TWTXT (https://github.com/buckket/twtxt).

I'd imagine that similarly to TWTXT, this suffers from the same accessibility and barrier of entry issues. It's one thing when all you have to do is type text in a textbox and click "Submit", but it's a whole thing entirely when you have to screw around with updating your website to do anything.

yakkomajuri - 4 days ago

2 years ago I built something I called "social media for blogs" that had some similar ideas. Nothing around encryption though, all on public data.

I'd be keen to revisit those ideas and see if they can take shape in another form.

MIT licensed if anyone's interested: https://github.com/yakkomajuri/recess

grumbel - 4 days ago

> A user’s identity is their domain name.

That's dead on arrival. The domain name system is one of the core reasons why everything has become so centralized in the first place. If one wants to fix anything wrong with the Internet, finding a better way to naming things should be the first step.

znpy - 4 days ago

Interesting take but I think the work is, at very best, halfway through.

If authors want this to take off they need to work on user experience, particularly for non-technical users. Otherwise it might at best become some tech niche that will eventually die.

mkfain - 4 days ago

I'm curious why not use Nostr?

deafpolygon - 4 days ago

i would prefer to see widespread hosting become cheap and easy to use… as simple as signing up for an account

then allow people to blog/post in a standardized format using rss. any other site can then subscribe to that site.

dwedge - 4 days ago

Unless this is just a PoC, you could benefit from a discovery mechanism. As much as that sounds like a webring for github, I'm probably not going to deploy a social network without knowing if anyone else is using it.

dharmatech - 4 days ago

See also org social:

https://github.com/tanrax/org-social

komako - 4 days ago

I wonder if the missing piece here is an agent layer.

A lot of decentralized/local-first social projects improve the protocol story, but the UX is still "please think about keys, storage, sync, exports, and trust boundaries yourself." That's fine for hackers, not for most users.

Something Claude Code-like, but local-first and protocol-aware, could make this much more approachable. The user says "post this to close friends" and the local agent handles signing, encryption, storage, syncing, and recovery.

That doesn't solve discovery, spam, or network effects, but it might solve a lot of the usability problem.

theknarf - 4 days ago

Why not at the every least use RSS for Posts? Why invent a new json spec? Wouldn't it make more sense to build this around RSS?

brunoborges - 4 days ago

OctoTown: https://octotown.github.io/

MattCruikshank - 4 days ago

Amazing. I'm building almost the exact same thing. I'll share mine when it's mature enough. :D

extraduder_ire - 4 days ago

Seems like a missed opportunity to not put a /satellite/satproto.json file on that site.

andros - 4 days ago

It reminds me a lot of Org Social

konfuzio - 4 days ago

I think: A new way of old school forum would bring real UGC rel="ugc" that brings value to human and agentic readers.

Let's crash the fediverse! https://wire.wise-relations.com/

turlockmike - 4 days ago

Isn't this just RSS with extra steps?

wordglyph - 4 days ago

have you considered Replace X25519 with a post quantum cryptography key encapsulation mechanism like kyber or saber?

givemeethekeys - 4 days ago

This needs a YouTube demo video.

grigio - 4 days ago

nice, RSS is a cool under used technology

selfradiance - 4 days ago

[flagged]

irenetusuq - 4 days ago

[dead]

lilnigga - 4 days ago

[dead]

vexnull - 4 days ago

[dead]

sriramgonella - 4 days ago

[flagged]

5o1ecist - 4 days ago

[dead]

builderhq_io - 4 days ago

[dead]

lilnigga - 4 days ago

[flagged]

lilnigga - 4 days ago

[flagged]