Building on ATProto (lukekanies.com)

56 points by speckx an hour ago

Striving7340 a few seconds ago

ATProto and its advocates increasingly sound like all the crypto-based decentralized platforms that failed. The difference is that crypto people actually had reasons to run nodes, they got paid to, while ATProto expects enthusiasts to do so for the love of the game or act like bluesky and have 99% of the "decentralized" platform on a centralized node.

It never catches on with application developers because it requires you to already worship the protocol and build around it.

MarceColl an hour ago

I've been building a board game community on ATProto. The idea revolves in trying to build the feeling of local clubs but online, instead of "PLAY NOW" being on the landing page (although you can play now if you want) it's organized around clubs. I also wanted to move away from one game oriented community. I play Go and Chess and I would love clubs to be for mixed games. You can create leagues, or tournaments, etc.

As an extension of that I've been building a small language to build games (with a nice time traveling debugger and automatic replays) inspired by Elm. Go and Chess are both built on top of this and you could fork them and modify the rules. Want to code a new Chess variant? Go ahead! Want to code a whole new game you want to try? Go ahead!

What I'm very excited with ATProto is that because all games are broadcast on it and each shares a core system of turn-based replays (and review system with branching) software can be built on top to do AI analysis, or a replay view. The idea that my application can be extended without me adding an API is very exciting and very much in the direction I want to take the system (community is the core tenet).

verdverm 32 minutes ago

How do you prevent a player from manipulating game state outside of the app view?

There is a subgroup in the Atmo working on games, have you found them yet?

ekosz an hour ago

Reading articles like this one, I do think people are trying to put a square peg (their applications) through a round hole (ATProto). The ATProto was designed around all data being public. You write public data to a user's PDS and then any application can read that public data and do something with it. If all data was private (encrypted?) by default then that would defeat half of all of ATProto's goals.

Imagine someone starts startup A on-top of the ATProto. They raise some money, get some users, some people love it, but ultimately they die. If the data was private to that service, that data dies with the startup. But if the data is all public future startup B can read that old data and do something with it. As a user that's brings me a ton of utility and comfort trying out new services.

If you're trying to built a local-first, mostly private service I just don't think the ATProto is the right tool for the job.

jakelazaroff 38 minutes ago

atproto permissioned data [1] will solve the dilemma you're describing. Ultimately all the data is in the same place (your PDS) and you can always read and write any data there. If startup A goes away, startup B can read that old data and do something useful with it.

[1] https://github.com/bluesky-social/proposals/blob/main/0016-p...

jshen 24 minutes ago

If the primary user concern is "all data is public", then the utility of ATProto is extremely narrow and will likely lose to something with a different philosophy.

psionides 4 minutes ago

That is about to change very, very soon though: https://dholms.leaflet.pub

embedding-shape 43 minutes ago

> If all data was private (encrypted?) by default then that would defeat half of all of ATProto's goals.

Yeah, this is the reason why I don't understand why they succumbed to the idea ATProto must handle private and has started on work trying to figure it out (https://atproto.wiki/en/working-groups/private-data). Instead, focus on just really great public data archiving and displaying, at scale.

verdverm 28 minutes ago

> I don't understand why they succumbed to the idea ATProto must handle private

The answer is very simple, the people demand it.

Technically, or if you squint the right way, it is a new protocol (atp://) that shares some parts with the public side. Notably the relay is out (for now?) and the data lives in a different sqlite table (iirc/aiui).

verdverm an hour ago

> The ATProto was designed around all data being public.

I might turn this around to say that ATProto was the square peg trying to fit into the round hole (the vast majority of people want privacy)

fidotron 40 minutes ago

The main need is strong authentication, certainly for enabling P2P microblogging type apps.

The privacy stuff is covered by Signal etc. anyway, and you could layer that on top if you wanted to, but in a P2P setup privacy is always going to be a bit disappointing as so much metadata is inevitably exposed unless you do crazy stuff like flood fill the network with every message without regard to routing.

verdverm 38 minutes ago

verdverm an hour ago

This author speaks to me!

> it should just be called “private data”

> the resulting design looks very hard to build on

> Private and public data are basically identical. ... The permission is world-read

Way back before Bluesky decided on their own what permissioned data would look like, when the Atmosphere Private Data WG still thought they had a say in the design, I gave a talk on a ReBAC/Zanzibar style system that aligns with what I think the author is looking for.

https://www.youtube.com/watch?v=oYKA85oZc8U&t=3730s

I suppose we could still build on and run a fork like mine if enough people wanted a more robust IAM system. There are some fundamental issues that I am not sure are resolvable without building them into the protocol core from the start. I have personally given up because of the leadership and am waiting/pondering the next protocol. Another design constraint I'd like to see is incentivizing apps to be federated and installable at the PDS as well as incentivizing small social over public square modalities.

https://github.com/verdverm/atproto

verdverm 39 minutes ago

btw, for historical context, the reason it is called "permissioned" instead of "private" is because there were sufficient people in the atmo that were very opinionated the E2EE is the only true private. It became an exercise in bikeshedding every time "private data" came up.

You can find the discussions here: https://discourse.atmosphere.community/tag/private-data/2

inigyou an hour ago

What's even the point of publishing anything online any more if you don't hope to become an influencer? The nature of the game has changed, and now does everything possible to discourage it.