That was very well written. I have to admit that because AT Protocol was Bluesky's I thought it was some corpo version of ActivityPub, but based on this post it makes a lot of sense. The data is in a 'repository' of my choice. I think I like that very much and it aligns with the kind of general principle I have where it's better to apply filtering etc. on the read side rather than on the write side so that I can publish all sorts of things that I want into my repo and others can then read etc. that stuff.
The arrows do seem to imply that commenting on my posts goes into my repo, but I'm sure that's just an imprecision trying to express an idea. The whole thing seems very cool and decentralized.
When I went to see what it takes to run a separate PDS on AT, though, I see that it's all nice and packaged up and has certain assumptions:
1. It takes care of SSL etc.
2. It will stand up HTTPS/WSS servers to handle a bunch of RPC
>The arrows do seem to imply that commenting on my posts goes into my repo, but I'm sure that's just an imprecision trying to express an idea. The whole thing seems very cool and decentralized.
The way I used arrows might’ve been a bit confusing because I use two types of them.
The solid ones pointing from @alice.com downwards indicate ownership. They’re the same thing as grouping by color. All blue stuff is Alice’s.
The dashed ones pointing between records are links. Those are equivalent of <a href>. Any record can link to any other record, no matter which repositories either is in.
When you comment on someone’s post, your comment goes into your repo, but it has a link to the parent post (which may be in any repo). That’s usually how you want to represent it in the data model so that anyone indexing both records can reconstruct the relationship.
In the example, Bob comments on Alice’s post. So Bob’s comment is in Bob’s repo and Alice’s post is in Alice’s repo.
To clarify your specific point, a person commenting on your post will create record in their repo. In fact one can never create records in somebody else’s repo. That’s the central premise.
This makes sense but doesn’t this imply that displaying comments under a post is a very expensive operation?
Also not totally clear to me (apologies if I missed it in the post) is where repositories live, I have a bsky account with my own domain, but I am not running anything to host a repo. Am I correct in assuming that bsky is hosting my repo, but I would have the option to self host or move it elsewhere and continue using bsky?
> doesn’t this imply that displaying comments under a post is a very expensive operation?
It would be expensive if you don’t do your own aggregation. The recommendation for social atproto apps is to aggregate the records you care about into a local database and essentially build your app-specific index/cache of the network.
Ctrl+F to this part: “Coincidentally, that’s the exact mechanism you would use for aggregation. You listen to events from all of your app users’ repositories, write them to a local database, and query that database as much as you like with zero extra latency.”.
(One interesting consequence is that indexing the network can also be done by someone on your behalf, see https://slices.network/ for an upcoming experiment in that area.)
> Also not totally clear to me (apologies if I missed it in the post) is where repositories live, I have a bsky account with my own domain, but I am not running anything to host a repo.
Yeah, Ctrl+F here: ”Note that https://alice.com and at://alice.com do not need to resolve to the same server. This is intentional so that having a nice handle like @alice.com doesn’t force Alice to host her own data, to mess with her website, or even to have a site at all. If she owns alice.com, she can point at://alice.com at any server.”
You can inspect where at:// points for your handle in an online browser like http://pdsls.dev. If you put your handle there you’ll see the physical server it resolves to at the top.
Displaying comments is cheap because the AppView (the "cache" layer that consumes the aggregated feed of records from the relay) can maintain a relational database of the social web/graph.
When it receives a post, it creates a row in the Post table. When it receives a comment, it creates a row in the Comment table, which has a column pointing to the Post it's replying to. Then, getting all comments under a post is easy SQL.
About your second question: yes, you're correct. What handle you use and where your data is hosted are completely separate matters.
The default pds packaging takes care of SSL, but thats not a requirement, just something we try to make easy for users.
Also at:// URIs are of the form at://DID/..., and your human readable handle is bound to your DID through DNS TXT records _atproto.roshangeorge.dev, but applications all know to render that as just roshangeorge.dev. That DID points to a document that specifies where your server lives, so the HTTPS/WSS routes can live wherever you want them to.
Also likes/replies/etc on your posts go in their authors repos not yours, your intuition is correct there.
Wow, I always imagined Activitypub to be the better protocol and AT a cheap knock-off, but reading this article made me realize at is, actually, way better - primarily because multiple programs can access the same identity. This is really a great feature to have! This article was a real mind-opener for me.
Every one of these "How AT proto works" explainers focuses on data ownership—which is where ATProto shines—and glosses over data processing, where ATProto is decidedly weaker than ActivityPub.
ATProto is built on a global, public view of the world, where all events are visible to a trusted global "AppServer" that can make all of the decisions for you—how to create your feed, who can see who's posts, etc—all of those decisions have to be made by a trusted intermediary. ActivityPub is more like RSS or email—your local server only has to manage the feeds you subscribe to, and your inbox is directly built from all of the posts you have access to. People you subscribe to send you your posts, and you don't have to process them at all.
This is why Bluesky could never have "private likes" in the same way Twitter or ActivityPub does—every AppView needs to track the like counts of every post in the network manually. It's a huge hassle! I just don't see this architecture winning out in the long term, when compared to the AP feed-subscription architecture.
primarily because multiple programs can access the same identity
Actually, this was how AP was originally designed as well—it was just that the most popular early implementations took shortcuts to remove that functionality to fit them into their existing architecture. This is a direct consequence of the fact that the biggest AP implementations when it was initially adopted were descendants of older OStatus social networks, and not built to be "ActivityPub-native" from the ground up.
> This is why Bluesky could never have "private likes" in the same way Twitter or ActivityPub does
I didn't know "private likes" even existed, but if atproto includes public key encryption, I could publish a record containing a "like" that I have encrypted with the "liked" user's public key. Only that user would know what the record contained. Though, the fact that the encrypted message exists and had a cleartext "@name" is itself informative to adversaries. Concealing that level of info would require other measures.
Correct. All information in the system is part of a public, append-only ledger. That's the thing I'm pointing out is a fundamental weakness of the system.
I think the lack of owner's custody of the private key in bluesky is more the result of a convenience design than of a technical limitation. If the user is expected to manage the private key, you might end up with something similar in complexity to Nostr. But it might still be possible if you're running your own PDS.
I haven't worked with Fedify before, but what I'm talking about is the difference between a service that has a "translation layer" between their own internal data model and ActivityPub, and a server that actually stores full ActivityPub object's in the user's inbox and outbox, and displays them unchanged to clients. 90% of deployed ActivityPub applications—like yours!—are the former, not the latter.
A true "ActivityPub server" is almost as simple as a Bluesky PDS—all it's responsible for is 1) storing blobs of data, 2) fanning out subscriptions and 3) collecting incoming data for you to view. In the original way ActivityPub was designed, all of the actual data presentation layers—Mastodon, PeerTube, Pixelfed—were designed to be specialized clients that could communicate with the user's generic server. However, the first popular implementations cut out the client-to-server part of the protocol, so now we're stuck in a place where everyone thinks ActivityPub means you need a separate identity for every client application.
So, what I would recommend for your own username/password site is implementing an ActivityPub client, and recommending that users use it to connect to a third-party ActivityPub server. That way, the user owns the data, and they simply use your service to get access to (filtered version of) it.
Unfortunately, since this is a less implemented part of the protocol, the client APIs necessary to make this a reality haven't seen much development. And you're facing an uphill battle for user adoption. In practice, users don't seem to mind having separate accounts and identities for different clients. It reminds me a bit of the "key management problem" in e2e cryptography. Having a stable cryptographic identity is doable if you're technically minded, but most people just muddle along and don't really care about it that much—they create new keys every time they get a new laptop instead of trying to figure out cross-signing, and everything works itself out more or less fine.
I mess around with fedify a lot, it's great. It's fun to integrate with existing websites.
I've thought a lot about ATProto and integrating it in similar ways. I'd love to have a look at what you're doing and how. The struggle I have is that I think the ATProto repos have a fairly strong cryptographic structure compared to AP
If someone requests an object over AP, that object contents can come from anywhere easily, and can be signed easy. So for me, when someone requests an activitypub object of one of my notes via fedify, it just reads the truth from my markdown note files and returns it. If I edit my markdown files, it's no real issue, the next request gets the latest version of that markdown (there's some signing nuances in places, but it's generally straightforward)
With ATProto PDS and repositories use things like Merkle Search Trees and other things which I assume means the backend data needs to be a lot more... consistent. Like the data has to live in the PDS, and that has to become the source of truth to maintain the merkle structures, including updates.
But with AP via fedify, it feels super easy and nice for my source of truth to be whatever backend store I like (markdown notes).
I've done enough with crypto to see the benefits provided by the transparent verifiable history of merkle like structures, but honestly, this is social media not cash: I don't care if someone wants to subtly change something to manage how they come across with their own social media. In that respect, I feel the ATProto repositories overcomplicate things a bit.
Interesting discussion, and good points highlighted about Bluesky's did model that means you essentially don't own your identity either (in typical scenarios and when it will likely matter most). That takes a big chunk out of the "host your own data" narrative.
One point I disagree on that's also mentioned in the replies: I don't think a global state should be seen as necessary or even desirable. Sure, it helps people who optimize for clicks/likes/attention as a business model But that shouldn't be the only concern. Having some degree of uncertainty around the global state can help reinforce a healthy skepticism towards what you're seeing in general. The 'correct' global number of upvotes on a post, or the majority of what has been said about a subject might still be manipulated to the point of being essentially fake. Optimizing for virality is not desirable if you think of the platform as a public good. Think about what it has done for the centralized platforms, and the consequences it's had in the real world.
> We should pick a platform that is federated, where you have ownership and autonomy over your identity and your audience. Social media should not be own-able by a single group or person. Social media is serious business. It ties directly to human rights and business outcomes. It shouldn't be in anyone else's control but yours.
I agree, but why not also apply the same logic to the other two communication platforms you are using (Discord and GitHub)?
This is not meant as a criticism at all, I like Bevy. Are you familiar with the Mr. Beast PowerPoint that said:
> Your goal here is to make the best YOUTUBE videos possible. That’s the number one goal of this production company. It’s not to make the best produced videos. Not to make the funniest videos. Not to make the best looking videos. Not the highest quality videos.. It’s to make the best YOUTUBE videos possible.
When I glance at the Bevy discussion link you shared, my reaction is:
> Your goal here is to make the best GITHUB OPEN SOURCE game engine possible. It's not to make the most performant game engine. Not to make the game engine that powers the best games. Not to make the best looking graphics in a game engine. Not the highest quality game engine or game editing experience. It's to make the best GITHUB OPEN SOURCE game engine.
> Your goal here is to make the best GITHUB OPEN SOURCE game engine possible.
That sounds awful if applied to Bevy, and seems you misunderstand what "Mr. Beast" is trying to say.
They're not saying make the best game engine, but make the game engine that would do best by GitHub-popular metrics, which is absolutely the wrong way to go.
I hope they continue to simply make the best game engine available, as before, and ignore useful metrics or focusing on where it's hosted.
They didn't misunderstand, they're calling out Bevy's priorities.
Bevy is still incomplete as an engine. AFAIK there's only one commercially successful game made with it, Tiny Glade, and it doesn't even use Bevy's renderer but a custom one.
Yet the Bevy developers distract the project with essays and debates about the politics of their federated social media presence. You don't need that to build a game engine, but you do to build a "GITHUB OPEN SOURCE" game engine. I don't think there's anything inherently wrong with it, but that's clearly the focus here.
> They didn't misunderstand, they're calling out Bevy's priorities.
Yes, but the misunderstanding I'm trying to point out is that Mr Beast is not trying to create something of value, they're trying to create something that works well on a specific platform.
In the Bevy analogy, that would be creating a GitHub project that gets the most stars, regardless of how useful or well the engine itself is working.
I'm instead saying the same thing as you, they should continue focusing on building the greatest engine, regardless of the platform for hosting the project.
If Bevy were to follow Mr Beasts advice, they'd focus on flashy demos, engaging READMEs and so on, to increase the success on the platform itself, instead of focusing on the engine itself, which from following their direction almost since inception, they're doing a pretty good job with already.
If your goal is to be viral and not care about the quality, then maybe following Mr. Beast's advice might make sense. If you'd rather risk popularity by trying to what you think will actually be better without knowing whether it will end up being viral, it makes sense probably to take anything he says with a grain of salt.
I guess my point is, writing 3,000 words on social media choices isn't going to make the game engine any better. But I can see how it is really important to the community and developers, which is to say, it's really important if the product is not a game engine but An Open Source (Esoteric) Game Engine Hosted On GitHub. Do you see what I am saying? That is the difference between making the best videos and making the best YOUTUBE videos. Mr. Beast isn't confusing, he's capitalizing the important part of what he is trying to say!
I fully understand what you're saying; I just don't agree with it. For starters, people can be complex and have more than one goal. The effect of making an open source project isn't necessarily just the utility of the project itself, and if some of those other potential effects are desired, the best way to do things won't necessarily be the same as if there's only one output that someone cares about.
For another thing, even if there aren't any other specific effects that are desired, there still might be some that are specifically not wanted, and avoiding those might be important. Mr. Beast is a exactly the type of example that demonstrates this point; by focusing on making the "best" YouTube content as measured purely by popularity, he's done all sort of things that someone might very understandably want to avoid. I agree that he's not confusing, but that's not the issue with him. He's extremely transparent in how little he cares about whether what he does actually helps anyone other than himself (or if he hurts other people in the process of helping himself). I suspect this is quite different from the mentality of most open source developers, who are putting in personal time and effort towards contributing to something that realistically has little likelihood of direct personal benefits for those involved. What you're perceiving as a lack of focus comes across to me as having the humility and thoughtfulness to try to look at the big picture and understand one's actions in the context of a larger environment that isn't improved in the long term by pursuing a single narrow goal to the exclusion of literally everything else.
Okay… Unity and Unreal have a lot less focus than Bevy, but are much better game engines. They will be shipping more great games every day than Bevy will in the next year, including beloved meaningful ones, like Silksong and Indiecute and Cuddlygame or whatever. And hardly anyone there, like most big corpo employees, is directly benefitted from the better games, they get paid the same amount of money, but the rub is also, everyone I know working at Unity and Epic is really sincere and loves games.
Of course I understand these are different things. Bevy is not at all competing with Unity.
Because Bevy is trying to be best GITHUB OPEN SOURCE game engine. I’m just trying to be a little jocular about how… you know, I didn’t say unfocused, but surely it seems a little silly to write 3000 words in response to a community worried about which open source social media federation protocols to adopt. That giant thread IS the product, it makes perfect sense from the POV that Bevy is trying to be the best OPEN SOURCE GITHUB GAME ENGINE, in the same way that Mr Beast is making the best YOUTUBE videos or Egyptology professors are making the best EGYPTOLOGY writing or painters are making the best PERSONALLY MEANINGFUL FINE ART or whatever. I like Bevy!
> Bevy is trying to be best GITHUB OPEN SOURCE game engine
You're the only one saying this. No one else, including the person working on the project that you originally responded to, have claimed this is their sole goal to the inclusion of everything else. It's hard to tell if you think they literally don't care about anything else but are choosing their actions poorly, or if you think that they have the wrong priorities and should change them, or if you just didn't really stop to consider that maybe your assumption about what you're saying they're trying to do is incorrect and haven't read what I'm saying closely enough to understand that no number of examples of other things that happen to fit what you're saying is relevant if you aren't able to establish why anyone else should agree that it applies here in the first place.
One could argue the opposite, let's take bevy as an example:
more popularity could bring in more contributors or more funding which would hopefully result in making a better engine.
The same could apply to Mr. Beast videos (more views translate to more money which translate to better production and staff which translate to more or better videos) but the goals are inherently different (maximizing profit which rewards quantity over quality)
Community drama has always been the achilles heel of large, open-source projects which are volunteer driven. Focus on community is critical to delivering this, especially when your product relies on mind share.
Yea maybe! I think at:// is an even stronger brand in a sense though. Actually makes sense as something browsers may support one day, “at://alice.com” makes sense at “stuff at alice dot com”, “authenticated transfer” is a decent acronym, “atmosphere” for the ecosystem is just great (and wasn’t even coined by the team).
It’s worth noting that PLC can’t fake your data because each edit is recursively signed. So you can verify a chain of updates. However, PLC can in theory deny you service or ignore your updates.
Yeah, there are tens of thousands of records referencing a PDS with a certain… controversial president's name in the hostname, which doesn't actually exist at all.
Also someone from Nostr made a tool that let you upload image files and encode them (split into parts) into plc directory records…
> primarily because multiple programs can access the same identity
Why do you think that's different in ActivityPub? As far as I know there's nothing preventing (for example) Mastodon and Pixelfed using the same identity.
Responding to the proposal (which is unjustly flagged to death, even if I agree that it isn’t a good idea):
> I came up with a solution that eliminates centralized control, trolls, advertising, and really all forms of harassment, and it doesn't even require a special server.
If it behaved as you describe (only followers see top-level updates and only followers of every person i the chain see replies; which I don’t think the concrete features you describe actually support, but I’ll get to that next), then it also eliminates the thing that makes social media work for both audiences and the people looking for audiences—there is zero discoverability, you can’t even encounter people through conversations.
Of course, with public outgoing feeds where visibility limits are a decision of the viewer’s client (to which all the visibility-deciding work of a server is outsourced, to avoid having a dedicated social server and just rely on regular web pages), it can’t be guaranteed to work that way. It can work that way for a viewer who wants to see that restrictive of a view, but that doesn’t prevent other people from having a more expansive view.
You can choose what you see, but not who can see your stuff or who can engage with it (if you have a client that behaves in the described restrictive manner, you won’t see engagement from people you don’t follow, but they can engage and others with a permissive client can see that engagement.)
> there is zero discoverability, you can’t even encounter people through conversations.
based on the spam and harassment on most social sites, I'd call this a feature.
If you read something interesting you can email the person with your thoughts , and if they find it interesting they'll follow you. If you are a troll, they'll delete your message and they don't need to use their platform to support your comments. If everyone used this system, trolls wouldn't have a platform anymore.
Herman from bear blog posted about a topic, a bunch of people emailed him their thoughts, and he created a follow up post with the best of those thoughts listed out.
This system definitely won't work for people that have FOMO, or need validation through votes on their comments.
> How do you facilitate discovery? IE, what if I want to know about replies people have made without subscribing to their /social page?
That's what makes this system so great, you don't see what other people you don't even know say, and you should be ok with that. Don't look for validation from the trolls on the internet. Reading what random people you don't know say is how you get spam and harassment.
> How can I add this to my website?
currently this is a thought experiment, but if anyone wants to work on it, let me know, my contact info is on the post.
Also, this wasn't meant as "the solution" to the problem, more just maybe we should be looking for small solutions that don't require a huge amount of infrastructure to run.
> That's what makes this system so great, you don't see what other people you don't even know say
But how do you get started? Are you saying you only look at blogs of people who you've met in real life and who told you their blog URL? Even that is unrealistic because lots of blogs link to other blogs. Why should I be okay with following a link from one blog post to another blog post but not okay with seeing a comment on a blog post?
The author is talking about owning a domain and how having that domain gives you ownership over your data... But I can't but think that, at least in the US, domain names are rented from private Internet service providers. There is no ownership involved. One way or another, we are still paying a company.
The assumption of the article is that ISPs are stable and net neutral enough that one would not worry about the ISP going under or seeking some personal vendetta against you and booting your domain. A separate entity may no longer be hosting our data, but a private entity is the gatekeeper of whether anyone is able to see your data.
All that to say, if we want true ownership of domains, ISPs need to be a nationalized, democratized service.
While I agree with the sentiment, I think it confuses ISPs with registrars. There are still many ISPs that do that service as well, it's less common than it used to be.
It is quite common for national TLDs (like .de, .jp or .cn) to be managed by not-for-profit entities, under contract with their respective governments... which might also not be great wrt censorship.
There is also the general issue of equal access, where shorter, more memorable domains get more expensive and hodling domain names is only disincentivized for people without enough funds. I would very much like to see an alternative system to domain names, probably something more in the web of trust space.
>The author is talking about owning a domain and how having that domain gives you ownership over your data
I've actually tried to separate the two in the article although it might be subtle (because I didn't want to make it confusing).
Owning a domain means you own your handle. Not data. In atproto, a domain is just a handle — you can swap it out without breaking links. (This relies on a centralized auditable repository which is currently being moved out of Bluesky as a separate independent entity. If you don't want to rely on that, yes, you'd have to tie your identity to the domain.)
Owning "data" is not related to owning the domain per se. It has to do with the fact that you can point your identity at a different physical server over time without breaking links. So your hosting doesn't have any real leverage over you. That's what I mean by meaningful ownership.
I've sort of conflated domains and persistent identity in the article to simplify the picture a bit. Your identity is not tied to a domain, but a domain serves as a bidirectionally verified user-friendly alias for it. If you lose control over the domain, you can tie a different one to the same identity later. This doesn't break links between records or functionality.
The most safe way to accomplish what you want is using postal pigeons, made stealthy with black spray paint.
All jokes aside, an educated guess on what to trust (or not) is necessary. Otherwise you wind up on a slippery slope that goes in circles and always results in 'we need more laws'.
Long way to say that I think 'owning' a domain name and publishing on there is way better than the silos we're accustomed to nowadays. The open web never stopped working as intended, the genie is out of the bottle for 30+ years yet, make use of it if you want.
Easy. Trust cryptography. I generate a private key and sign everything as me. This takes out all the BS. Of course you cant age verify and anonymous accounts and spam become easy. But that is your trade-off. Nostr allows relays to filter out shit they dont like. So you can have your 4chan but also your more moderated sites too.
Governments can and do censor domains. A theoretically censorship-proof system is impossible; even communication over bluetooth or radio can be shut down by signal jamming and physical persecution.
Also, you technically "own" your data on any social network. If you put a public key in your bio and archive every post, you can move to another network. Then use friends and close followers to broadcast your new location; those who care will probably find you without much effort, but if not, Open Social doesn't solve this problem either.
However, I still think Open Social is an improvement. Most social networks are really bad these days: manipulated engagement-driven algorithms, locked-down data accessible via poor UI, toxic community, and inconsistently-applied unspoken rules. These issues all have workarounds, and can still happen on Open Social (BlueSky's community is toxic, I don't know if its algorithm is gamed or its global moderation is reasonable). But it certainly makes them harder to form and easier to avoid:
- If everyone's data is available raw via API, it's easier to create your own algorithm and frontend (or realistically, use someone else's which is better designed and more suited to you personally than what a generic social media company would make)
- With all data available, it's more likely people will develop better algorithms to filter out toxicity and discover interesting posts. At minimum, it's more acceptable and easier to create whitelisted groups, where one person maintains an "algorithm" that simply selects posts they (and others who are granted invites) have determined are not trolls.
- If data access and ban lists are separate, the same network can have multiple ban-lists, so being banned isn't "all or nothing". You can choose a ban-list with rules you agree with and continue to see posts that most others would prefer banned. If no ban list is dominant, there's a good chance the rules that the ban-lists share are reasonable; you can worry less about being banned inconsistently or for a widely-considered unfair reason (e.g. upsetting a specific moderator), because in those cases you'll only be banned from one list.
- If having a public key and archive of your data is the default, and your followers' frontends automatically recognize the key and find your new domain/hub (e.g. if someone links it to the old hub), it's easier to move. If BlueSky shuts down tomorrow, some clients can just be updated to point to another domain with all the data and continue working as if nothing changed. Whereas if Reddit shuts down, in theory one can develop a clone from scratch and populate it with the archived data, but users would have to re-register and it would be a huge mess (+ legal issues).
There are clearnet websites for flat earthers, anti-vaxxers, cults, hacker groups, classified document leakers, nazi groups and terrorist organisations. Finding a registrar that lets you say what you want is a solved problem.
Currently most people publish stuff on big platforms so governments, activists and billionaires will go after these platforms to influence or control what's being talked about. I worry that if we never had big platforms, or we moved past them, all of the focus would be on going after registrars and hosts instead. It's not a bulletproof system unfortunately
I don't have a horse in which decentralized protocol wins, but while ATProtocol sounds great on paper I'm still inching closer to liking ActivityPub more. I'm pretty active on Lemmy[1] which is quite active and fun to browse
1. 99.99% (literally) of AT users are on Bluesky, which is helmed by a for-profit corporation. The argument is that they don't control the protocol but considering it is THE dominating instance of that protocol, what's stopping them from strong-arming the protocol and changing how it works to benefit them? Better yet, what's stopping them from doing a rugpull and closing off their open service? What if bluesky decides 5 years from now that you aren't allowed to move your account? This isn't some hypothetical scenario, this already happened before. A lot of social medias started off with fairly open features and APIs and slowly choked them out for profit.
2. Users don't really care about protocol, they care about momentum and userbase. Piefed/Lemmy/Mbin are all popular-ish Reddit alternatives using AP. It was already a struggle to reach a point where posts could get over a hundred comments a day, how are you going to convince people to move to another platform again? I'm worried this will just end in splintering an already niche community and cause people to just give up and go back to using popular platforms.
Being able to move accounts is a very neat feature but it's not a reason enough to move. You can already export your settings and make an account on another instance in 20 seconds then import your settings again, which would bring back your subscriptions and blocks and all you set up from account 1. To me it's not a huge deal.
> considering it is THE dominating instance of that protocol,
Instances don't work like they do on mastodon. There's not really a "dominating instance" in the same way. Heck, even within Bluesky's infra, there are multiple PDSes. Basically, stuff is layered in a different way (which the article shows the details of) and so talking about the structure of things ends up working differently.
> what's stopping them from strong-arming the protocol and changing how it works to benefit them?
This is absolutely a real concern. I believe they have shown themselves to be good stewards, and they also recognize this concern. As the ecosystem grows, this will be fixed.
> Better yet, what's stopping them from doing a rugpull and closing off their open service? What if bluesky decides 5 years from now that you aren't allowed to move your account?
This is built into the protocol! You can back up your CAR file and move it to another host without the approval of your current host.
> You can already export your settings and make an account on another instance
This doesn't work on masto to the same degree as atproto. You lose a lot of stuff when you move on masto, but it's 100% transparent on atproto.
I don't think being able to migrate your account addresses the rugpull concern. The rugpull scenario is that one day, in five years or so, bsky.app drops all AT Protocol support and transforms into a Twitter-like centralized social media website. The problem isn't that the account will stop "existing" but that Bluesky users will stop seeing it. The average non-techie Bluesky user who doesn't know about the AT Protocol won't even notice the change, except that, from their perspective, a tiny percentage of nerdy users have stopped posting. For you, "migrating" your account away is effectively just deleting it from the now-centralized Bluesky and willfully decreasing your audience by 100-fold or more.
The problem is a social not a technical one. It doesn't matter how good AT Protocol is at account migration. The vast majority of AT Protocol users think of themselves as Bluesky users and don't even know what the AT Protocol is. If the official Bluesky clients move away from the AT Protocol, the majority of users are moving with Bluesky.
For all the UX concerns people have with Mastodon/ActivityPub, at least they make it obvious that different users are hosted on different instances, and no one instance has more to gain than it does to lose by defederating.
It is true that there are both social and technical components. You cannot force someone to use an app they don’t want to, so there’s no real solution to the social problem you pose. However, this isn’t any better in Mastodon. If you instance decides to swap the software to no longer federate, you’re stuck.
Regular backups help in this case, you can move all of your data to a new host if you have a recent backup somewhere and your rotation key. Not really approachable for the average user today but there are people working to make this easier.
I read your reply as the scenario from GP is unlikely to happen in practice or has low impact. To me it seems you need to make frequent backups of "your" data to have a copy of it.
Can i run multiple PDSes with my own single identity to not give one provider exclusive power over access to "my" data?
Ideally, a client app would make these backups for you automatically. I hope Bluesky official client will add automatic backups (in addition to the existing manual export flow that already exists). It's not hard to set it up as a GitHub action today if you're technical but making it accessible to non-technical users seems important.
>Can i run multiple PDSes with my own single identity to not give one provider exclusive power over access to "my" data?
Not really since there has to be a source of truth where the writes happen. I guess you could manually replicate changes between multiple servers but there still has to be one that applications know to talk to. I'm not sure what problem it would solve. This seems similar to "can I have multiple deployments of my site" — you sure can, but you might as well deploy it elsewhere when you actually plan to point to it.
I personally believe that the chance of Bluesky PBC suddenly swapping all of their software to no longer be built on atproto to be a very low chance, yes.
There’s middle grounds here; for example, due to some recent moderation decisions, some users have decided to move away from Bluesky PBC-run PDSes and to self hosting. Those users did not need to proactively backup to move. The proactive backup cases are things like “Bluesky PBC’s servers disappear suddenly” or “they ban your account.”
I don’t think you can run multiple PDSes, but since it’s quick to move the canonical version, I don’t see that as a huge drawback personally. In the same way you’d fallback to the secondary if the primary turns out badly, you’d set up a new PDS and point your identity at it.
What irks me is that in the end of the day if you go to Bluesky it's all American politics and if you go to literally any mastodon instance it's all American politics.
Maybe it's because I don't like monster of the week political drama, but I still don't see a reason to use them instead of Tumblr, Pinterest, or even TikTok.
This is very true, and it's a large part of why I never use microblogging at all, it's impossible to just find posts that fit what you want to see.
That's why I mostly use Lemmy/Piefed because everything is neatly organized into communities that you can subscribe to. I mostly browse tech & gaming communities and my feed is very chill.
> if you go to literally any mastodon instance it's all American politics.
It really depends on who you follow. Almost all the talk I see is tagged with #uspol so I could easily filter it out, but even without it, it's not the dominating topic.
I feel like I get ${local_country} politics* because I follow people from ${local_country} and most the other people I follow who do post about US politics tend to spoiler their posts with USPOL, so I can just scroll past if I'm not feeling it.
* Usually spoilered with "${local_country_code}POL"
I know that Mastodon is not the same as ActivityPub, but I don't know how can it be treated seriously if it allows disappearing replies. Whatever we write will disappear after some time. Sometimes. Because sometimes not. Maybe it's an implementation problem, I don't know, but it was one of my two reasons for my exit from Mastodon.
It's literally a feature - individual users can set post auto-deletion on their instance. Because a government could suddenly start firing people from their jobs for some shitpost they made a decade ago.
But you have the fact that this is the Internet, and somebody will have archived your post no matter what you or your host instance does. So you can rest assured that whatever you wrote on Mastodon is out there somewhere...
I think it’s ultimately up to your instance whether it keeps your posts indefinitely or not. I think most do, but others might delete posts after a period of time, in which case they should mention this to their users (on their ‘About’ page, for example). Personally, I can’t say I’ve encountered this problem, but then again I’ve mostly used Pleroma (which is a different program implementing the ActivityPub protocol, like Mastodon).
It captures something that I think a lot of us in tech have been feeling but haven't quite articulated: that the social web feels increasingly rented, and the rent keeps going up
True of course that dollars is the end goal, but frankly it'd be better if they just took the dollars out of my pocket directly, instead of poisoning my brain first so that they can trick me into giving some dollars...
Obviously I'm being hyperbolic, but I think eventually if society survives past this phase, our descendants will look back and judge us for letting psychological manipulation be a valid economic process as a way to generate dollars, in much the same way we might judge our ancestors for ever building up a whole industry to hunt whales for oil for fuel (meaning, they might acknowledge that fuel is important and necessary to power an industrializing society, but they would mock us for not understanding how to refine petroleum sooner, and how silly going through the tech tree of fucking whale hunting is, just to get some fuel).
It is fucking silly/absurd/dangerous, that we go through the tech tree branch of psychological manipulation, just to be able to sell some ads or whatever.
Now here is a controversial question... Can we have a free of cost top level domain? What are the actual costs associated with registering a domain? If let's encrypt can provide secure certificates free of cost, why can't a different no profit provide domains free of cost as well? It doesn't have to be pretty. It could be a UUID v7 stacked on top of another UUID v7 for all I care but it would be globally unique and available free of cost.
And once you go to the site, your browser will remember it anyway so you don't need to type the monstrosity.
A free of cost TLD is probably not practical. There are some special things that go along with being a TLD and being in the public suffix list: https://github.com/publicsuffix/list
If you drop the TLD part though, you can do whatever you want with any domain you want, up to and including handing out free subdomains to anyone who asks. As usual, though, if you try to do this, the dark internet will make you regret it as one day, quite suddenly, you'd find you were hosting the DNS of some massive scam email or other, or any of who-can-even-enumerate ways of making you sorry you put this service up because of their abuse of it. Just like anyone can make a URL redirector, and many people even use it as a sort of "learn this language project" but if you actually put it up online you will rapidly regret it.
It's a bummer and I'm not celebrating this fact, but, yeah, it's not something you want to do.
Because .onion isn't a DNS domain. It uses the same syntax but you have to be on Tor for it to work and it does something completely different than DNS resolution. I read the original question as specifically about having top-level domains, not "something like domains that works on a special network".
Special networks can do as they like, but then they won't be DNS.
> It doesn't have to be pretty. It could be a UUID v7 stacked on top of another UUID v7 for all I care but it would be globally unique and available free of cost.
> It could be a UUID v7 stacked on top of another UUID v7 for all I care but it would be globally unique and available free of cost.
You're essentially talking about IPv6 addresses.
Interestingly, most residential ISPs these days already issue your home network an IPv6 /64 or better! But they (sadly) just firewall off use of most ports that residential users have no purpose for — on my own network, even if I configure my router to allocate each machine on the network a public-routable IPv6 address, the only port the network (not the router!) is willing to allow non-established incoming flows to is 22/tcp.
But even if they worked, they'd still be ephemeral. At best, even if your ISP keeps the allocation the same, you'd lose it if/when you switch ISPs. (Similar problem to ISP email addresses.)
The real key here, would be if someone was freely giving out tiny slices of IPv6 https://en.wikipedia.org/wiki/Provider-independent_address_s... to individuals; and there were hosting providers / residential ISPs willing to add BGP routes in their ASN for these tiny prefixes. Then you could have a stable and portable and free IPv6 address for life. (It's certainly possible in theory, just not built yet — similar to how LetsEncrypt was "certainly possible in theory, just not built yet" until it was built.)
---
That being said, if you really want this to be DNS (not sure why; if it's not a short memorable name [and thus inherently competed over by typosquatters], then DNS is the wrong tool for the job), then you could do what systems like ngrok do, but directly serving those dynamic records as domains under its own gTLD, rather than serving them as subdomains under a domain. Maybe with each domain getting its own DNS zone and everything. That'd certainly be neat.
Note that way back when, the .me ccTLD sort of did this — they gave away .me "domains" for "free"; but with all web traffic on those "free" domains being intermediated by their L7 reverse-proxy servers, where they'd inject ads into any delivered HTML pages.
.tk was widely known for taking back domains once they got popular and turning them into ad spam. That's how they made money "giving" the domains away for free: lead generation, basically.
There was a .FREE initiative but that got all weird after a while, the deadlines were not respected and then nothing happened... https://icannwiki.org/.free
Another thing, the thing that you mention is really similar to how tor onion links work... Except they offer encryption and prevents MITM/any other ways while still having your ip hidden.
Another idea which I use sometimes is to use something like cloudflare tunnels or ssh forwarding with things like serveo.net or any ssh based remote forwarding in general like pinggy or even ngrok.
If you are using this in some internal thing, I can also suggest something like piping server which I really like and I want to build something like a web browser tor-onion links esque but on top of piping server, its really really cool
running a domain costs money. there's no way around that - it requires server resources to respond to dns queries, and that requires servers and electricity.
so to offer it for free means somebody has to subsidize it. letsencrypt can operate because big companies with lots of money want their ads to be delivered without being intercepted by an ISP. what's the motivation for anybody to subsidize free domains?
> running a domain costs money. there's no way around that - it requires server resources to respond to dns queries, and that requires servers and electricity.
I guarantee you I can store and make available over DNS the less than 1 KiB of data for less than a penny a year.
Instead of free, charge a flat $1, put it in long term US treasuries at 5% / TIPS at 2.5% and you’ve covered your hosting costs forever. The principle will never need to be touched.
okay, so why aren't you doing that. if you can offer domains for $1, you can undercut all the existing players by a huge margin. that's a big opportunity, no?
I might not be fully understanding the idea, but the difference here is that a let's encrypt certificate can be generated on the fly. domains are considered branding, and getting a 5 letter domain nowadays is impossible. The cost here is that you're renting a domain that others might want aswell, people don't really want your LE cert
X lets people own a 5 letter username for free. Renting names is not even industry standard for platforms. It seems like it's only DNS that charges for names.
I'm a little saddened to see that each app has it's own collection type, even if they are able to use each others collections. That means that apps will only interoperate to the extent that they are explicitly designed to.
One of the beautiful (but perhaps not that practically relevant) things about ActivityPub is that a Mastodon user can subscribe to a Pixelfed user without anything special being done. It's like if Twitter, Instagram, Reddit, YouTube, and Substack all automatically interoperated.
AP intercompatibility is fun, but it starts to fall apart once you leave the safety of the "Note" (statuses) and "Question" (polls) types (which is what Mastodon, Pixelfed, Misskey, Pleroma, etc. all use as their primary elements). Everything outside of it becomes either loosely converted to a note (Mastodon does this for a lot of things, see https://docs.joinmastodon.org/spec/activitypub/#payloads) or is discarded by the instance. The only types that I know of which have been able to have native support from multiple AP implementations are micro-blogging and Lemmy's community system, with everything else essentially being a monoculture (or just extremely one-sided towards a specific implementation) due to a lack of interest from other implementations in providing full, standardized support. This isn't an inherent protocol limitation, but I do think that the community could do better in organizing standards outside of the core documents.
ATproto's system is a bit more well defined (you HAVE to abide by the lexicon/schema of the data collection to be accepted by implementations, reference implementation and some third-party ones have schema validators to do so) and allows for easier intercompatibility, but I do think that it could be a bit looser than it is right now (selective support for additional fields) to provide proper "sidecar" values in a record (they'll be in the user's PDS but it won't validate and could be rejected by indexers). Bridgy Fed does this to include the originating URL from APub and the original text, which third-party clients could certainly take advantage of if they detect that the post comes from a Bridgy account. (https://fed.brid.gy/docs#bluesky-fields)
Yeah, atproto pushes this down to be a community/governance issue. Nobody is preventing apps from working out a common standard and supporting it. However, nobody is forcing them to do that either. So it will play out with natural dynamics. What atproto ensures is that there's a convention for strongly-typed foward-evolving schemas and how they get validated (and reverse domains specify the authority). But ultimately cooperation is up to the community.
This is a fine example of technical exposition. Very easy to read and understand! Like many others, before this post I hadn't the vaguest idea what atproto was; I always assumed it was some decentralized thing a la crypto. But this actually makes a lot of sense to me and it feels like an objectively good thing.
Except for one thing which has been pointed out by others. Anyone can access *all* of my data over this protocol. I like the idea that a lot of my data is directly accessible similar to the early web. But it would be nice if some of that data was only accessible if the accessor was permitted.
I don't really know much about auth tokens but I'm guessing they shouldn't be that hard to incorporate into this thing? When BlueSky or whatever app queries "@username.com/private/documents" the server expects an auth token, whereas it does not when the app tries accessing "@username.com/bluesky/posts".
Yes, something like this is planned in longer term.
The team decided to tackle public data first because scaling aggregation while preserving meaningful ownership is hard. So far I think they’ve succeeded at that.
Private or semi-private comes with a set of different challenges. Indeed scoped tokens are coming (via OAuth scopes) but that’s used for writes. The same mechanism could be extended for private reads in the future, like you describe. There’s questions about what shape private data would have though.
I was ruminating about how Atproto would be great for re-thinking the peer review system for scientific journals.
Imagine a world where a preprint is “published” onto the social web, from which you could aggregate reviews/comments. I eventually ended up thinking about exactly what you raise - it would be great to have some degree of access control on this so both comments and published things can be selectively shared (with an option to make everything public later on, maintaining all the links).
I'm starting to feel many of "next big Twitter to fill its power vacuum" projects are tackling the problem slightly wrong - they all perfect the Twitter feature set, then hit the wall with user growth and content deprivation chicken and egg problem. People gather where there are others and that's still around the rotting whale.
That OpenAI timeline thing that just launched is more better approach, it solves content problem by just gathering data in background and feeding it to the user anyway. That particular implementation might not work but it sounds correct.
IMO, not much of value of Twitter for most users is in ability to post tweets, it's in data bandwidth. 99.9% of users don't post anything interesting, those might as well be local text file or oit of band shared filler content. The value is in content sourcing, so something like multi-social RSS reader with optional P2P should be the way to go. Just IMdimO, though...
While I use microblogging to frame the initial narrative, as explained in the article, this isn’t limited to Twitter-like products. Tangled is “GitHub on atproto”, Leaflet is “Medium on atproto”, and so on.
The problem with client-side P2P is you can’t do large-scale aggregation with consistency. Large-scale aggregation with consistency is what normal people expect from social apps.
Re: the OpenAI thing you mentioned, that's actually a perfect example of something atproto excels at. Since the data already exists in the network, you can crawl/index it and run your own tooling that does something proactive on cron jobs etc. See https://github.com/graze-social/iftta for some initial work in that area.
"Unique" is definitely not necessary. Look at the dominant social media platforms of the last two decades. MySpace -> Facebook -> Twitter -> Instagram -> Snapchat -> TikTok. Each of them was a minor evolution over the last, with the core feature set remaining basically the same. Lots of user-generated content, algorithmic recommendations, likes, comments, DMs, ads. There has really not been a revolution in the social media space since it was invented.
...and this is why Nostr is different! You can build basically anything on it. A blog, a Twitter like application, a streaming service, messaging apps, the sky is the limit!
Nostr is not different from atproto in that sense because atproto also supports arbitrary applications (the article uses Leaflet and Tangled as examples). There's a good comparison of atproto vs Nostr: https://shreyanjain.net/2024/07/05/nostr-and-atproto.html
I really like the approach of nostr, but when I tried to use it, each client I tried would start me off following ecoin pump and dump influencers. It was really off putting.
I would’ve preferred starting off in an empty room, an experience more like using signal.
I've heard this multiple times but I don't know what clients do that? Most allow you to click something akin to the Following tab, just like Twitter, BlueSky, or what not.
Are you asking for an application that does not have other kinds of feeds?
I'm a bit concerned that the open web only won because of first mover advantage. What gives me hope is OSS winning.
I'd love to see something like atproto win though. It's clear that a major issue with social media is network effects preventing better apps from becoming popular.
AIUI, HTML won because it was free. There were competing paid for online hypermedia standards at the time, but many cost money.
Anyone could make a web browser or server quite easily.
> a major issue with social media is network effects preventing better apps from becoming popular.
One thing ATProto does is enable real competition in social apps, assuming they all run on the atproto fabric. One of the core hopes is that we can get everyone over to something like atproto once, to get them out of the silos, such that this is there last time they have to "move" their social network
Sadly, it's hard to imagine a world where something like this will ever catch on. The target audience for "traditional" social media is very different from the niche of people who want decentralized social media. Most people just use social media as a means to an end and don't really care about the systems behind it.
If the answer is that most people should just make a bluesky account, that defeats the whole purpose because then everyone will still be on one or two large providers.
Even if everyone is on bsky.social, that's still a huge improvement on the status quo. It's not like the web isn't decentralised just because lots of people are on AWS - you can move away at any moment, adversarially if necessary.
Looking forward to the future where an app just sort of silently backs up your PDS/keys on your device until the day you need it and everyone finds out they can log into whatever platform replaces the one that blew up like nothing happened.
This is misleading. I’m not sure if you’ve read the article so it’s difficult to elaborate — it aims to explain precisely that.
There isn’t such a thing as “Bluesky getting federated” — that doesn’t on its own mean anything. In Mastodon world, “getting federated” means many copies of the same webapp emailing each other. In atproto, you don’t create many copies of the same app. Instead, it’s shaped like the web — individual users can host their data in different places, and apps aggregate over that data. There’s no point in having many copies of the same app.
The BGS server you’re referring to is the “relay” mentioned in the article. Running your own relay is possible (Blacksky does it, as mentioned in the article). It costs about $30/mo with the current traffic. However, note that a relay is very dumb (it’s just a retransmitter of signed JSON over websocket). It’s cool that anyone can run one but by itself this isn’t a vanity metric to chase. We’ll probably see more independent relays but usually someone would run one for a reason — to insulate a company or a community from upstream failures, or maybe to censor things (in repressive governments).
I think the other issue here is that there's a serious question of why bother "upgrading" your social media from closed to open when we've all figured out that it's bad for you, worsens your mood, and generally wastes your time?
If I'm going to delete my Facebook/Instagram account then why am I trying to pick up a new drug to replace it?
Those products are both owned by an ad company, they're incentivized to push all your buttons so they can maximize the time you spend looking at ads. Similar offerings exist which don't, and as a result have a very different vibe.
Social media is just a paradigm for multimedia communication and networking over the internet. It isn't inherently good or bad, any more than telephones, television, radio or the internet itself.
I think many people find social media useful. If you aren't one of those people, fair enough. But not everyone is angry and addicted all the time.
They said the same thing about video games, and the internet as a whole, and cellphones, and television, and magazines.
I'm not going to claim that social media can't have negative consequences for young people, lots of things do. But the hyperbole behind the discourse makes it obvious there is also a moral panic at work. In every case, technology is blamed for a failure of society's responsibility to educate and raise children properly.
It is quite debatable whether it is inherently good or bad.
There is not a whole lot of scientific evidence for it being good from what I understand.
I would also argue that if you broaden the definition of social media too far you’re not really talking about social media anymore. Calling your friends on Signal isn’t “social media.”
"good" and "bad" aren't objective or quantifiable, so there can't be scientific evidence that social media is either.
And the definition of social media is broad. I would argue Signal is social media. It lets you form social networks, chat and share different kinds of media. That's all social media is. Social media is more than Twitter, Facebook and TikTok. And I have trouble with the argument that being able to form social networks and share different kind of media is somehow ontologically evil. There are hundreds of social media platforms around the world and countless apps integrating social features, but only a few American platforms seem to be a problem. So maybe it isn't "social media," maybe it's American culture and Silicon Valley capitalism.
The addiction loops, surveillance, data mining, radicalization through algorithms promoting extremist content, etc. aren't fundamental to what social media is, they're aspects of how specific social media platforms have been implemented. It is possible to have social media without all of those negative externalities.
On one side I find these ideas extremely compelling. This is aligned with the Indie web body of work, that pictures anyone having a personal website of their own content and ownership over that. And this page an article are beautifully put together.
On the other hand, we haven’t really seen a lot of developers adopting these standards for their own projects (like using this for their personal website or open source project). Nor from casual users (including people who make their own blogs and websites).
I am deeply concerned about the apathy people have towards the idea of ownership, openness and interoperability. It gives the idea that people just want to be fed TikTok and Instagram reels.
I respect the vision and the work. Will personally see if we can use this for our work. But I wonder how we make this into something that’s not just a micro niche hobby.
There's still some more work to do to make the developer experience simple enough that it's a no-brainer for people to pick ATProto up in anger.
But there's a lot of work developing on that front, and the next 6-12 months will be super exciting to watch.
The longer story is that most people don't understand that ATProto is more than just Bluesky, and the usecases are wayyyyyy broader. That's going to take more time to play out in the market.
Absolutely. In fact I’d love for my startup to run our own atproto instance separately from Bluesky, but it still looks like quite a lift. Lmk if you have some recommendations.
Basically our thing would give that ecosystem the ability to have personal pages that can look like Patreon, YouTube, Instagram and others
Are you trying to run a parallel network, or build on top of the existing one? "run our own atproto instance separately from Bluesky" sounds like you want a fully parallel network, but that should be pretty rare to need or want, so I'm not sure that's what you actually mean. An "atproto instance" isn't exactly a thing.
I’d prefer running our own thing separate from bluesky. We’d give people something like username.page.app and they’d make posts there. If people wanna follow on bluesky they can, and we provide a username that’s just the url.
I know we can do all this by just posting to Bluesky. But I want to give usernames, host the data on our end, and I’d prefer using the protocol but not be directly associated or dependent on Bluesky.
Okay, so this sounds like you'd want to run an appview + pds. (and possibly a relay, depending on some details.) Except for one thing:
> or dependent on Bluesky.
If you want to take this to an extreme, and are uncomfortable with how did:plc has not yet moved into its own org, then you'd want to also run your own plc server, etc. The problem with doing this is:
> If people wanna follow on bluesky they can
You lose this. Because you're now not running on the main atproto system, but instead a fully parallel one of your own.
Anyway, you could start on this by running a PDS via the reference implementation here: https://github.com/bluesky-social/pds and then building your own appview (application).
You could also take a look at Blacksky's implementation https://github.com/blacksky-algorithms/rsky and if you end up using it, consider throwing them a few dollars. Alternative implementations are super important!
Thank you for the detailed answer! Totally comfortable with the did implementation. Just trying to separate from their brand and just use the standard :)
We already built our own platform independently from Bluesky, so we have a timeline in the wrong post and everything. I’m just trying to give our users into opera ability. So that when they make a post on our platform, people can also follow your Bluesky and see on their timeline. Am I correct to assume then that we would not require our own app view?
> Am I correct to assume then that we would not require our own app view?
Well, given that you have built a platform, and you then want to interact with the atproto eocsystem, that means you'd be making your platform an appview, in a sense. An appview is just a service that reads the underlying data from the network and does something useful with it.
It depends how much you want to replicate. All you really need is the Application Data Server (or AppView) to aggregate the records you are interested in, serve them to your client app, and write them to people’s repos. I’ve been tinkering with the ‘personal website on AT’ idea space for a bit, tons of cool possibilities (and several people already have implemented cool AT integrations in their sites!). Happy to chat ab it.
HMU! I’m “shokunin.” on discord, leshokunin on TG / Twitter.
I’d prefer running our own thing separate from bluesky. We’d give people something like username.page.app and they’d make posts there. If people wanna follow on bluesky they can, and we provide a username that’s just the url.
I know we can do all this by just posting to Bluesky. But I want to give usernames, host the data on our end, and I’d prefer using the protocol but not be directly associated or dependent on Bluesky.
I am deeply concerned about the apathy people have towards the idea of ownership, openness and interoperability. It gives the idea that people just want to be fed TikTok and Instagram reels.
Can you expand on this feeling? Why is it deeply concerning? Why should people care about the abstract concept of data ownership? People were totally fine when they had zero ownership or agency over media and they were fed TV, books, movies, radio, etc. Most people do just want that, their primary motivation to engage with media is just to be entertained in that moment.
Now that they have places where they can publish stuff and their friends and family and maybe even some other people might see it, why should they care that they don't "own" their Instagram post, whatever that means?
It matters because your posts aren’t just entertainment in the moment — they’re your history, your proof of existence online. Platforms treat them as disposable. If Instagram dies or bans you, your years of photos, writing, and connections vanish. Owning your data means your work and identity survive these issues, if you want.
I think a lot of people treat their own content as disposable also though. I don't know if most people would really care to save or dig through their entire Twitter history, for example. The rise of Stories is evidence of this. We're moving from a culture of preserving ancient pieces of paper to swimming in a never-ending river of data where there's so many things coming at you that you just move forward and don't have a ton of time to look back.
People that really want to preserve and archive their content find a way to do it and manage it separately. I have all the pictures that I've posted to Instagram. I have anything I've written that I cared enough to keep. If and when IG dies or I move onto the next thing, am I really going to want to meaningfully preserve and transfer the specific contents of that walled garden somewhere else? Maybe. I can definitely see the value, but it doesn't seem super compelling to me yet.
There is something to be said for the uniquely curated walled gardens and the centralized trust and organization and opinions they bring. When I started an Instagram account, I didn't want to transfer my Facebook world, it's a new world with a fresh start. I didn't want the same friends, the same voice for myself, etc. I certainly wouldn't have wanted to dig through all of that to figure out what made sense to carry over.
An example: I have been a Swarm user for like, fifteen years. As soon as atproto has private records, I'll want to set up syncing that data into my PDS. It's kept track of a huge part of my life, and losing that would be sad.
You asked me to explain why this matters. I did. I think your answer is fairly dismissive. Not everyone who cares about this is going to be some terminally online edge case. Unclear why ask a question if you are not curious about it. Probably not an effective use of our time.
I mean.. if you can still find the archives (pretty sure they're out there, but getting harder and harder to find), I have my name on lots of usenet posts from the 90s. But I'm pretty sure all my BBS posts, GEnie posts, etc from before that are gone - they would stretch back as far as December '84, IIRC. And there's probably very little left from before 2000.
And yet, I don't lament that 10-15 years of my online life have "vanished" - I was an ignorant little snot back then, and actually, am VERY glad they HAVE vanished. And thankfully I've generally used aliases / usernames instead of my actual name in most places (other than the usenet posts that were from my university account) so that wayback can't be used against me easily. Heck - I wish I could assert/enforce a "right to be forgotten" (vanish) on some websites. Rarely have I wished (especially in this current administration) that I was MORE visible / persistent online.
> People were totally fine when they had zero ownership or agency over media
Disagree. The punk phenomenon was largely about reclaiming that ownership and agency over cultural output, and it was massive in the 70s/80s/90s. The early web was very punk in attitude, with people basically self-publishing. Even in the '00s, there was still a clear distinction between "corporate" portals and grassroots.
This phenomenon where even creatives and intellectuals are Just Fine with playing in someone else's heavily-tweaked, hyper-monetized sandbox, is a new development.
idk if the normal user should necessarily care about data ownership, but I think the incentive structure it creates would be immediately legible to most people
Did we read the same article? It spends so many words answering these exact questions with examples and helpful illustrations!
Your question:
> why should they care that they don't "own" their Instagram post, whatever that means?
From the article:
> The web Alice created—who she follows, what she likes, what she has posted—is trapped in a box that’s owned by somebody else. To leave it is to leave it behind.
On an individual level, it might not be a huge deal. However, collectively, the net effect is that social platforms—at first, gradually, and then suddenly—turn their backs on their users. If you can’t leave without losing something important, the platform has no incentives to respect you as a user.
Your question:
> can you give examples of good and bad incentive structures in this context?
From the article:
> Maybe the app gets squeezed by investors, and every third post is an ad. Maybe it gets bought by a congolomerate that wanted to get rid of competition, and is now on life support. Maybe it runs out of funding, and your content goes down in two days. Maybe the founders get acquihired—an exciting new chapter. Maybe the app was bought by some guy, and now you’re slowly getting cooked by the algorithm.
> Luckily, web’s decentralized design avoids this. Because it’s easy to walk away, hosting providers are forced to compete, and hosting is now a commodity.
I think you’re right that the average person doesn’t care so much as they just want to be entertained or reach a large network, but apathy is not an argument in favor of the status quo.
In fairness to you, I had originally skimmed the article and did later realize that some of my points had been addressed. In fairness to me, in this subthread I was responding to other commenters and asking them questions rather than commenting directly on the article itself.
At this point my argument is that the ability to switch providers is not a major concern to most users of these platforms. I don't want a generic social media hosting provider. I want the Facebook experience, or the Instagram experience, or the Twitter experience. I'm happy to be in the garden and on the rails because it's easy and tightly curated. I don't want some Frankenstein amalgamation of data from all these things. I don't want to shoehorn my Instagram world into something else.
It’s pithy because the request is pithy- if I have to explain the mechanisms at work here i doubt you’re ever going to buy into the theory at all. A short version is what Dan already said - the entire economic foundation of social media is predicated on high exit costs. ATProto takes substantive steps to lower them. The theory in turn is that new businesses will need to develop less extractive models of viability to survive, which will in turn read legibly to users as less exploitative (you decide your feed, you can switch providers, you can choose moderation layers, etc)
the entire economic foundation of social media is predicated on high exit costs
No I think it's predicated on creating a product that people like to use. That's the Step 1 that OSS zealots miss when they focus entirely on these niche lofty ideals. I highly doubt the average Instagram user is yearning for - or would even be enticed by - a version of that same experience that has a lower exit cost.
That's the problem with these Twitter clones. "It's just like Twitter, but RESPECTS your data ownership" is not compelling. Just create a freaking compelling and original user experience (the actual hard part that made the big platforms successful) and secretly do whatever you want on the back end.
The reason I like Bluesky is that they understand this, and that's why the protocol stuff isn't front and center. They're focused on product first, technology second. The tech serves to create a good product, they don't build the tech first and then hope people find the product acceptable.
There’s nothing compelling and original about the twitter UX compared to all the clones. Pretty much across the board it’s just posting short messages and following others.
The entire value of a social media platform is in the network. Accumulating and maintaining one is the actual hard part that made the big players successful.
It was compelling and original when the concept didn't exist, or at least hadn't been successfully brought to market like they did. In a world where Twitter exists, and has the network, there is nothing compelling about a Twitter clone.
None of these platforms started with a network. They weren't cooked up by evil investors and MBAs looking for a rent-extraction scheme. Nor were they designed by a committee of philosophical experts saying "oh we'll just copy their thing and make it more esoteric and confusing so that maybe one day we can aggregate content from 14 competing Twitter-like platforms and you can switch between them whenever you like!" They were started largely by kids goofing around and making fun things for people.
You are correct, and yet depends on ourselves to popularize and make this tech happen. Maybe, just maybe a newer startup out there will have a CEO/CTO that is deeply influenced by open social and delivers a success app that reaches the masses.
One never knows, but for sure it won't happen when we do nothing.
There are several protocol components you can run independently, each filling a different role and having different complexity levels
If you mean the PDS, not sure if it is simpler than the unknown point you are looking to compare against. Bsky did just announce that you can migrate back to their PDS hosting to make trying out alternatives a one-way trip
I’d prefer running our own thing separate from bluesky. We’d give people something like username.page.app and they’d make posts there. If people wanna follow on bluesky they can, and we provide a username that’s just the url.
I know we can do all this by just posting to Bluesky. But I want to give usernames, host the data on our end, and I’d prefer using the protocol but not be directly associated or dependent on Bluesky.
1. Run the PDS, many people who would not group themselves with technical folks do this. (data hosting, handles)
2. Use or create an alternative client app, depending on if you want to intermingle Bsky data
3. Relay, moderation, algorithms. If you want to divest completely from Bluesky, there is more to run. If you build your own lexicon, you have to do all the moderation and algorithms, among the many other things.
I think 1 is the main thing. We have our own posts and UI but we just want to give people usernames and a way that shares posts in a way that interop with Bluesky. Any advice on a simple way to self host a PDS?
I'm glad to see someone recognize the critical importance of authors owning their domain. Without that, you will alway be at the mercy of someone else. The rest is just technical detail.
Technically on Bluesky even if you don't own your own domain you can still move all your stuff to a competitor and everything will still work. The only thing you can't do is keep your original handle but no "links" to your account (posts, followers, comments) will be broken because there's a stable identifier for your account that's independent of your handle. You will still be verifiably the same person on the other server.
All of this is meant for 100% public data, right? Or is there a concept of visibility control? Can I create private communities, with data flowing just inside?
It doesn't matter who controls social media; federated or not, social media is inherently harmful to humans. In a few years we will find out it's like cigarettes. Addictive and harmful, and needs regulation, if not outright bans.
But going back to this obsession about data. It's really an obsession with control. But none of you really have control. You hope that you can "engineer" your way into control of your own lives, of your data, even of the way the world works. But engineers do not have power. Businessmen do. Until you realize that, you will continue writing technical specifications like this, making micro-communities, and missing the big picture. Control requires power. Power requires money. If you can't monetize it, you have no control.
Whatever federated thing you think is going to win, isn't going to win, if there isn't enough money to back it. Because someone with money will just make the biggest "federated thing" (or not; it could be completely proprietary and billions of people will still use it), and eventually close it off once they have enough users. You cannot engineer your way out of money, politics, or human nature.
I tried to make the case that the design of web itself creates different dynamics than the design of today’s social networks in a demonstrable way (walking away from hosting is still easy so it became commodified). I get your pessimism but I wonder how you’d engage with that argument. I think it shows the shape of the thing actually matters.
What happened to Solid Pod? Tim Berners Lee’s project? I feel like it’s another project of this type, and even predates AT, but ever since its announcement hasn’t made much waves.
Yeah, the linked article did make me smile because the previous iteration of OpenSocial - which had a LOT of buzz around it back in 2007-2010 - was such an ambitious swing that completely missed.
This doesn’t similar to atproto, which is what I discuss in the article. “Open social” isn’t an official term btw, I just like it enough to refer to this movement. I think recycling names from dead projects to refer to new concepts is fine. You’re welcome to ignore the article’s title.
> Open source has clearly won. Yes, there are plenty of closed source products and businesses. But the shared infrastructure—the commons—runs on open source.
Lost me right there. Open source is the infrastructure that powers closed cloud. None of the openness makes it to the end user. It only benefits highly technical users and businesses.
Open source was made irrelevant (to non-technical users) by the shift to services and cloud.
What would in practice happen in a two user scenario where user A replied to user B, and later user B's repository gets completely deleted.
We have this cache thing via wss connections. Do they invalidate this messages from user B? Is user's A worldview now completely dead?
Owning a thing in the internet is a complicated topic i guess.
Preserving past information via copying what a user said so that it does not get lost maybe also in the interest of some users (equivalent to the webarchive). I understand that this contradict the whole "owning your data" premise, but fundamentally since it was open in the first place the thing always can be copied right?
Whatever content is produced in this "open social" network, some of it may have long lasting "value" to an individual. Is there anything to make sure that what they interacted with can not completely broken by the other site of the party?
If the user chooses to delete their account, it is a separate event on the network, which well-behaved apps should respect (and update their caches accordingly). So an app like Bluesky would display this as a reply to a deleted post.
If the user's repo just goes down (e.g. the host is down), then indeed it won't be available upstream and only cached versions will remain. It might be that the user is having problems, and the repository will be up on a different host later. It's up to each application how to handle this, but it seems reasonable to keep serving cached content since there was no explicit deletion instruction. E.g. I presume Bluesky would keep showing both replies in the conversation.
>I understand that this contradict the whole "owning your data" premise, but fundamentally since it was open in the first place the thing always can be copied right?
Yeah this is a tricky thing. The general guideline is that the user expresses intent (e.g. can delete post or entire repo) and well-behaved apps respect that intent. But of course there can be non-well-behaved apps that don't, or that permanently archive everything ever emitted.
I've been on and off thinking about this problem for years. Very excited to see an ecosystem popping up.
But I wonder, why JSON if the web is already built on HTML documents? Is it possible to just store our data in a web of authenticated html documents and have the protocol be built on that? Are there other open standards we can leverage to reduce the amount of new infra / protocols? I wonder if there's a less complex "good enough" mvp version.
The thing I miss the most in social networks is the ability to verify the provenance of information through social graph (chain of trust).
Ideally, if I see a post or comment, a process that I control should be able to establish whether the user is trustworthy, by asking the intermediate nodes whether the next hop is trustworthy. Essentially, I should be able to walk that chain of trust to see whether the information comes from a trustworthy source (and possibly input user's own evaluation of the chain links and nodes).
Unfortunately, social media companies do not let users access the social graph, because not being able to ascertain provenance of information is what makes paid advertising possible. It would also greatly help to combat bots.
The social graph, at least in Bluesky's own collection[0], is made up of the sum of follow records in individual repositories on PDSes. Anyone can enumerate them.
These are summed up by Bluesky's app server (app view) and then used to fill out following lists in apps that connect to that server through its API.
A fact checking or web of trust tool could pull these records down and use it for exactly this purpose. It could even weight by who they repost, for example.
Thank you Dan for the post! I think two other things to point out:
1. Because open social has to actually compete for a user's business, any sufficiently mature platform build in the ecosystem will necessarily trend towards being more responsive to those users needs, which will trend towards a better product than the legacy crop,
2. Precisely at a moment where governments lean on large, visible corporate entities to enact desired policies, splintering that ownership helps ensure a resilient communications network
I think it would be better articulated if comparisons to ActivityPub were made. Those are I believe two competing visions of Open Social defined as communication protocol, not a platform. Otherwise it just sounds like evangelizing employer and that compromises the whole “open” concept of the article, fairly.
The author surely knows about competing protocols but prefers at. It would be just as easy to argue the author is biased if a comparison was made. Maybe more informative though.
I thought about covering others at first but it ended up distracting from the point I wanted to make. I tried to make a strong case for this particular vision in this article. I could write something separate as a comparison, or maybe let other voices speak for their thing.
In short, I don’t think ActivityPub solves any of the stated problems (ability to walk away without cooperation; forking products; giving new life to old data). In that sense it doesn’t mirror “open source but for data” and doesn’t match the premise of my post.
I don't believe anybody else can do it with good start you've made. I think above is nice headline for some more complete assessment as a follow-up article. indeed!
> What’s more interesting is that Tangled prefilled my avatar based on my Bluesky profile. It didn’t need to hit the Bluesky API to do that; it just read the Bluesky profile record in my repository.
I'm a bit confused by this. If a bluesky avatar contains an image, isn't that stored (at least by default) within bluesky? Meaning that Tangled will have to hit the Bluesky API?
Or maybe Dan is saying that his own repository is not hosted with Bluesky in which it would make sense, if wherever his repo is stored is getting hit to retrieve the image.
If I understand correctly it doesn’t matter where the user’s profile is hosted, the point is the user has a store of data that can be accessed by multiple apps via the AT protocol, only naming convention separates one app’s data from another’s within a given user’s profile.
The “Bluesky API” is the appview, but the avatar is stored in your PDS. Even if you’re using a PDS hosted by Bluesky, it’s a different component that’s being asked to serve the avatar.
Great post. Why use Social Media when you can use your own blog with RSS. I think it's because of Network effects, Social Media gives you an identity/address within a social network that has demand for your posts and a supply of posts that interests you. The Social Network itself should be vybrant for strong Network Effects to take place, this is inherently centralizing sorta like super markets. Thus the idea of Decentralization and Social Media don't go well together.
Decentralization is also more complex for the developers and particularly for the users, this creates a market for people offering services to operate decentralized systems, which ends up centralizing the network. This is how the WWW, Email, Git, BTC all got more and more centralized.
The functioning is similar, albeit there is no need for hosting user data since it can be sent to multiple relays and live reachable to others from there.
Thanks for sharing. By coincidence (or not so much) I had lunch this week with a founder of bluesky along with a others and many names were mentioned that I'd never heard about. They were mentioned on that article and now understand better.
Quite a lot of food for thought today. Thank you for that.
The bit about aggregation is interesting, but it's not clear to me what the performance characteristics will be for very popular accounts. Presumably Justin Beiber's repo cannot be expected to handle 100 million WebSocket connections, all of which push out a message the instant he posts something. Is it vital to have more centralized hosts which can implement the sort of hybrid push vs. pull models that Twitter famously needed to implement?
In atproto, those websocket connections aren't between users's repos, they're between an application and user's repos. Bieber has one connection per application doing aggregation, not per follower.
Relays also provide an important scaling building block, such that every app can listen to the relay, which listens to all the repos, instead of many app<->pds.
I can forgive them that. There are only 26*26 = 676 two-letter acronyms to go around, and they had the decency to call it "AT protocol" which makes it clearly different from "AT command set".
Sometimes I wonder - maybe websites were enough? Most people on most platforms are readers/consumers, not producers anyways. Maybe having a personal website was a good filter for publishing after all? Maybe personal websites + sites like hackernews that allows us to discuss our and other people's work is the best the Internet could be.
It depends; not everything that's newer is automatically better.
Web and websites did the heavy lifting of instant and world-wide information sharing.
With social media, open or closed, there are many non-obvious tradeoffs; I am not sure whether on the whole, we are better off with or without them - time will tell
Even if the information consumers are 99% of the users, making the features available for the content creators leads to much better content. Plus people want the ability to be able to post content if they need to. I shall point to the /r/ask* subreddits as an example.
This is all based on the premise that you maintain ownership of the DNS. Once you lose control of your domain due to legal issues in the relevant country, those references/citations become invalid. However, this is still a great improvement over the current situation.
My sibling links a great post on this, but to say it in a slightly shorter way, the core of identity is a DID, not a domain. You can update the domain associated with your DID if you lose control of the DNS and it will all transparently update.
I’ve skirted around this in the post to keep conceptual clarity but you can always move away from the domain (as a handle) without breaking links. This is because there’s a more persistent identifier that represents your identity (or at least there’s an option of having one, and that’s the default mechanism). Links between records actually use that identifier instead of the domain handle.
I've always thought it would be interesting to apply this sort of approach to health data. I own my data and control where it's stored and how it's accessed. And hospitals anywhere can interact with my data as needed while labs, doctors notes, etc. all live with the hospitals.
After developing my own rss reader[1] i think atproto could be the successor of rss. It is the same principal. The only difference is it is more complex and there are more components like the firehose, which is optional, the reader could just scrape their following themself.
I think the resource usage is also only a problem if you want a view of the entire network, if we treat it more like rss it would be totally fine to just keep the portion of the network we are interested in. Its not as straight forward as rss, because of types like comments and likes. To notice them you need to listen to the entire network stream, but you do not need to save everything. I am really excited where this will go.
Yeah. I was thinking of emphasising RSS as a comparison more but didn’t end up using it much. But I do like to explain atproto as basically typed and signed JSON RSS over HTTP and WebSockets.
This has already been covered many times but the design of the AT protocol requires a lot more resources than AP. Meaning it will be reserved for large organizations, while AP has a lower entry of threshold.
I want both to thrive, but I prefer AP for small communities.
Hm? Which part of the stack requires a lot of resources? Each part (PDS, Relay, AppServer (AppView)) can be run on a PI. Blacksky (not a large organization by any means and completely community funded) is almost running the entire bluesky stack themselves. IMO there's not much of a reason to run every part of the stack yourself unless you want to be completely independent from bluesky. At the very least if you want to host your own data then that just means running a PDS, which means finding the cheapest VPS you can that fulfills the min spec. Mine costs about 7 bucks per month and I never have to think about it. I'm also running a relay for no reason other than for learning purposes for about 30 bucks a month.
The AppServer, if you want index the full bluesky network (39M users) will run you about 200-300 dollars a month. Again, not really needed but you can if you want. There's also experiments people are trying out to only index smaller parts of the network, e.g. only users you follow which would mean hosting an AppServer would be even cheaper. FWIW, I like both protocols and want them to succeed, anything that gets people off of closed social media.
It sounds like the AT protocol is improving in the right direction, but the numbers still say it's highly centralized and therefore closed social media owned by one monolithic entity.
AP has its issues, namely not being at all consistent, but that trade-off allows anyone to run all the components of the network without breaking their bank.
AP is just “many small centralized services that email each other”. Its scaling characteristics reflect that - of course running a “little Twitter for 100 people” is cheap. But it’s a completely different thing. You could “scale down” atproto in the same way, but the point of atproto is that you can aim higher than niche islands.
ActivityPub doesn’t attempt to solve any of the same issues that atproto does — there’s no ability to have a full consistent view of the network. So it’s comparing apples and oranges.
I agree that AT aims high, maybe a little too high.
To me Fediverse is basically all the forums we had in the 90s and 00s, but now they can talk to each other. So with that said, I am principally against huge instances like mastodon.social and such.
While bsky is more like decentralized Twitter, meaning it also requires a significant chunk of the resources of Twitter to run consistently. Which is also why it has not decentralized yet, and probably won't any time soon.
We have to ask ourselves, what is the point of decentralization? What is the USP?
To me the USP is that no one person or entity can buy it, sell it, or ruin it.
If we had to start over from scratch then I think AT would be a good way to start, because it would presumably not be federated with bsky and therefore low volume. But as volume grows it becomes harder and harder to maintain for small groups and eventually they all consolidate into big groups that are easier to take over and ruin.
Basically it's a difficult decision we have to make, a trade-off between consistency, and decentralization. Which do you value more?
Me never having been on Twitter, and coming from that era of the 90s and 00s, I value decentralization and small groups participating in a federated network more than large entities.
How I envision the future of social media, all these actors like bsky, Twitter, Meta, Fediverse will continue existing side by side, but Fediverse will likely be the smallest and most niche of them all. Fedi has, to me, taken the place of all those old message boards I used to hang on, while the rest are mainstream social media that made its entrance onto the world wide web back in early 00s with Facebook.
Depending on what exactly you mean, this isn't the case. For example, running your own PDS is very cheap.
If you want to fully run a full copy of everything yourself, it's going to be more expensive, sure, but those costs have gone down dramatically over time. The most expensive bit is running $34/month: https://whtwnd.com/bnewbold.net/3lo7a2a4qxg2l
Yes, it’s interesting but there is no way the instantiation of the protocol (Bluesky) remains free of investor influences. It would require a great deal of capital for anyone to recreate the “network” in such an eventuality. So yes, it’s cool but not really Open.
So what, the governance is not open and what good is a perfectly written engineering spec without the actual place where people hang out?
It’s just a lot of tech jargon masking yet-another “let’s make someone very rich” scheme.
You can be as cynical as you like but I actually tried hard to avoid tech jargon in the article. I’d appreciate you giving it a read — happy to answer questions or discuss specific concerns.
I’m really impressed by the quality of this post, as others have mentioned. It’s very well written, and the clarity of the drawings adds a lot to the overall explanation.
It perfectly illustrates the old saying: a picture is worth a thousand words.
I had never heard of this protocol before (even though I’ve been using Bluesky since the Twitter/X takeover), but after reading this, I feel even more confident that the migration was the right call.
The AT Protocol's approach to decentralized data repositories is excellent for empowering users with greater control, but it also creates vulnerabilities to automated abuse, such as bots disrupting event streams or fabricating repositories to distribute spam. I've integrated Sceptive bl0ck API to access IP and behavioral intelligence, which has reduced false positives from aggressive crawlers by at least 70% on my setup.
I like the skepticism against Bluesky, and I agree that where VC money is involved things are mostly sketchy.
However, this post was about the at protocol, which seems like you just hand-waved in one sentence:
> The AT Protocol used by Bluesky has some interesting features, although to be honest I don't know how many of these are just impossible to achieve on ActivityPub or are just WIP lagging behind due to funding constraints.
I don't think the debate between them is super useful because their architectures are very different.
You also mentioned an issue with the bluesky relay, but others already exist so it's not techincally tied to Bluesky. Heck, I think the fact multiple can exist at the same, while degrades the social aspect, still makes it decentralized.
> I don't think the debate between them is super useful because their architectures are very different.
Sure, that's true, but I, personally, care mostly about one question: Who holds the keys to the kingdom? In this respect, I think the AT Protocol fails spectacularly, mainly due to the lack of a credible strategy to implement really self-custodian identities.
> You also mentioned an issue with the bluesky relay, but others already exist so it's not techincally tied to Bluesky. Heck, I think the fact multiple can exist at the same, while degrades the social aspect, still makes it decentralized.
Yes, but this is also true for Nostr, Diaspora, Mastodon, etc. The difference being, last time I checked (and of course things might have changed in the meantime) with AT Protocol it was only possible to self-host part of the infrastructure (and hosting the relay is insanely demanding).
This is another example of gaslighting from Bluesky that just makes me angry. How in the holiest of Hells does an "Identity directory controlled by a Swiss Association" make the whole thing better?
Sorry, not buying it. I don't have a horse in the race, but won't fall for the marketing.
I agree with the sentiment and I wouldn't call Bluesky "open social"- I don't trust them either. But I still don't find these to be arguments to be against the protocol per se, which I find really interesting.
> Who holds the keys to the kingdom? In this respect, I think the AT Protocol fails spectacularly, mainly due to the lack of a credible strategy to implement really self-custodian identities
From what I've read, you can still own the entire stack from top to bottom, none of it is necessarily tied to bluesky.
Even the identity managed being discussed only applies to bluesky, and whatever ecosystem subscribed to it; but in theory, you could create your own social platform with a new one (you'd obviously lose that ecosystem).
But then again, this would also apply to Mastodon, since whoever owns the instance could always nuke it, and if you own your own instance, you need to build an network that trusts you. There's always an authority involved.
> The difference being, last time I checked (and of course things might have changed in the meantime) with AT Protocol it was only possible to self-host part of the infrastructure (and hosting the relay is insanely demanding).
Well it's definitely not the "50TB" you mentioned e.g here is someone running a relay on a $34/month vps and isn't going to accumulate more disk: https://whtwnd.com/bnewbold.net/3lo7a2a4qxg2l
But it's importance is overblown anyway, it's just a json transmitter for signed data. I think the pds and identity managements are the better concern, and I hope there's a better way to decentralize those (if that makes sense).
EDIT: You're still correct that to fully spin up a new bluesky on your own you'd need an insane amount of storage for hosting all that data that's currently stored on bluesky (especially the did:plc and pds). All good arguments against the company, but that's only because people are choosing to store their pds repositories on bluesky.
You could just as well point your repo to your own server and use a different social media. They could go under and someone else can create a new app view. I find that really cool; still leaves the identity issue open.
> What is the incentive of someone to create an app and just pay for all the hosting involved?
If you're creating a social app, website, or whatever, you still have to host all your users' data regardless. This is just about the protocol you use which enables universal compatibility, meaning users have the choice to store elsewhere.
> Also, does everyone need to have their own domain name in order to have an identity cuz that seems like a non-starter.
Not really. Bluesky is a good example; when you first sign up it does it for you under their own top domain by default iirc, but the great thing is you can actually use your own domain.
Very well done. I hope this happens soon. I'm an engineer but not the software kind and I will look into this area more closely and try to support it. Thank you.
Yes, down in every measure over the last 6 months. I think it's primarily used by a lot of people to organize sockpuppet-aided raids on twitter towards people who are instantly banned by mass-reporting the second they create an account on bluesky. It's basically old 4chan for unfunny people who think they're better than everybody else.
I'd be positive about any distributed social protocol, though, no matter who delivered it. The problem is that this was a Dorsey project that he already abandoned and denounced because it took a bunch of VC and is just waiting for the rugpull. Now you're supposed to trust a bunch of people you never heard of and a few famous paid evangelists.
Any implementation if I don't care? Like if I want my Web application to support either ATProto, AP, and eventually whatever else is around the corner even if it means only have the lowest common denominator?
Thanks. Well that's a good question, namely what do I actually expect out of federation.
In my case it's to remix pedagogical exercises. So I need :
- actual content (e.g. exercise and assets) to remix (imagine changing the language)
but also optionally
- author ID for attribution
- a stable URL for provenance, again from attribution but possibly metadata (e.g. how many times played on origin server, language, etc)
How does blacklisting / moderation etc. work here. How does blocking work? How do people make sure to distance themselves from political enemies? Do the aggregator cache servers block certain user domains? How do you ensure that the aggregator returns valid and non-forged comments and likes?
> How does blacklisting / moderation etc. work here.
Anyone can run a moderation service. Users subscribe to the services they want. When you flag a post or account for moderation, you choose which service you send the report to.
> How does blocking work?
Blocking works by publishing a "hey I've blocked this person" record in your database. Applications then can use this to enforce that.
> How do people make sure to distance themselves from political enemies?
I'm not sure what this means.
> Do the aggregator cache servers block certain user domains?
They could, and this is also a property that's not really about blocking, that is, you could choose to cache only part of the network if you choose, which could be useful for various reasons.
> How do you ensure that the aggregator returns valid and non-forged comments and likes?
I'm trying to imagine how a situation analogous to Gab vs Mastodon may arise and play out here, or if the setup is different. Like would they just live side by side, with various frontend aggregators that present one or the other world to you?
> Cryptography, basically.
How do I, the user with a browser verify that? Do I need to use a different client program, or a browser extension? The aggregator site can show me a green checkmark or whatever, but that's just a claim by the aggregator. Am I expected to fire up a terminal window to compute signature validations to check if Alice really put a like on that comment?
Ah, I see. Yeah, you could build alternative clients that only show you part of the network if you want. Or run your own separate copy of the entire network. Because the two models work differently, there’s not an exact analogy.
You could also use one of the various PDS browser websites to go check their PDS, or a terminal tool, sure. I will be honest and the details of exactly how the cryptography stuff works is not my strongest point when understanding the protocol, maybe someone else can chime in and give you a more detailed description here.
AT seems cool — but it’s not built on the web. That’s a dealbreaker for me.
I can’t link to a Bluesky post. I can’t use Bluesky from the browser. It’s a silo’d network.
The indie web has the right idea: Use the web, build ontop of blogs, degrade gracefully. We could have central aggregators just like Bluesky crawling the web with microformats.
The polished experience with Bluesky has little to do with the tech and everything to do with financing and talent. Give me millions of dollars in grants and I’m sure I can build a polished UX too.
99% of social media users don't care about any of this. If it's one extra step or configuration they need to learn, or includes a word like "protocol" that they need to understand, they won't use it.
Right, which is why the article makes the point that it’s invisible to the end user several times.
That’s also why it frames the benefits in the concrete way that shows up in the products — like products being able to riff on each other’s data.
My audience for this article is slightly technical so I put some focus on the technical parts. I don’t try to avoid mentioning the “protocol” for the same reason why teaching to make websites involves mentioning HTTP.
I 100% agree with you though and that’s important for broader communication. What people care about are good products.
You don't need to know how any of those features or websites work to use them. I'd also argue that most users have no idea who the people working on the site are. (even if reading the replies under their personal posts gives a different impression)
The end user just sees they can subscribe to a moderation list that hides any post labelled as "Beans", or that they can have a feed next to their Discover feed that's an endless stream of people getting ligma'd.
Or that they can use their account to log into a seemingly unrelated site.
I really hope this doesn't catch on. Having ever random site on the internet being able to see every bit of my data sounds like a nightmare. Unless I am misunderstanding something.
Think Twitter posts, StackOverflow answers, Reddit comments, etc. The stuff you don’t want companies to gradually start locking up for their own gains (as they tend to).
The protocol will likely be extended for private and semi-private data in the future, which would work by granting explicit permissions to apps. For now, app developers would keep private data in databases, same as usual.
Loved the breakdown of a topic I wasn't familiar with.
I just can't help but think that the whole ethos of Open Social Media is misguided. I think that social media isn't good for us -- not just because of the big companies making it worse, but because the technology itself doesn't promote health.
It feels like trying to make cigarettes open-source. Sure you can stick it to big tobacco but at the end of the day you're still making cigarettes.
As long as the Eternal September remains on Twitter, there's nothing unhealthy about being on Bluesky. The format isn't the problem, it's the people who use it as a stupid culture war battlefield. Those people seem content to remain on Twitter.
Yes, which is a point the article repeatedly makes. I totally agree with you. See also https://knotbin.leaflet.pub/3lx3uqveyj22f/ which I linked to close to the end of the article.
One can explain features that are possible on ATProto but not Big Social without talking about "decentralization". My pitch to the non-technical typically follows or covers these points
- Social today is not healthy
- Single account instead of N
- All apps keep your data in your database
- User level choice over apps, algos, moderation. Esp algos, my social media usage patterns have changed for the better since I started using custom feeds
- Real competition in social media
- Take back our shared digital experience from a handful of billionaires deciding everything and keeping us locked into their attention economy
the view of social media as just data that can be rehosted i think misses a large part of its success
Twitter and Instagram are fundamentally different scenes bc of their restricted formats. Twitter has/had character limits. Instagram was primary for photo sharing. if you try to cram a long political rant in an instagram photo or description.. it is fighting against the app format and limitations. This sculpts the apps "culture"
im sure it can work, creating a hodge podge of random unstructured content.. like the blogosphere or Facebook. But it wont displace the walled gardens. You can make a Kiki app that only shows images, but youre following someone who is using Booba app which allows him to post pictures with descriptions. And suddenly nobody really knows what to expect
Designers of atproto actually agree with you so the data is not unstructured! It’s structured by schemas (called “lexicons”) controlled by app developers.
Data in user repositories is treated as untrusted input by apps, and rejected if it doesn’t pass the corresponding schema. Schemas are evolved in a backwards-compatible way with a nudge towards future extension (eg open unions are default).
That’s exactly why you can’t make a 500 character post on Bluesky. The Bluesky server will ignore your record as being invalid.
I meant specifically that “unions” default to open. Let me give you an example. A Bluesky post may contain different types of attachments. Image, gallery, video, etc. That’s a union of known schemas. However, that union is open. That means that generated type will include “or unknown” as the last possible value. Apps are expected to ignore that case when pattern patching since they wouldn’t know how to interpret it. However, that leaves Bluesky with ability to later officially support other types of attachments. Because more potential types could be added to the union layer (making some previously “unknown” stuff typed).
This has an interesting consequence that third party clients can “recognize” some type before it’s official. Eg some third party Bluesky client could choose to explicitly support a “Leaflet document” attachment to Bluesky posts, governed by Leaflet schema. If this pattern gets popular, Bluesky could be motivated to also support it, and even to reference a Leaflet document as one explicitly noted subtype of that union. Or it could keep ignoring it as one of the “unknown” values.
It does kind of sound like the app that recognizes the most schemas will likely win. It seems there is no benefit to using a limited schema app - and you'd end up missing content that the creator assumes you see. Ex: You can make an app that only shows pictures, but the people posting pictures will likely assume you also can see.. their Leaflet docs or whatnot. You can't force restrictions on the users - ex: if you use my Freegram schema then well you can't add additional stuff - b/c that's the social space we're building
Unless I'm misunderstanding the doc, the lexicon seems also very limited in what it can express. You can't specify images have to be black and white, or video clips have to be shorter than 15seconds. Or replies have different restrictions from posts.
It's maybe impossible to encode everything - but furthermore a lot of the "app culture" is just due to the app design. The photo description on instagram can be extremely long. You can write a diatribe about.. whatever. But it's hidden behind an collapsible button - which make it so people don't typically engage with it.
That's all to say, I think ATProto is very cool - but there is (maybe unfortunately) still a space for the walled gardens b/c they're providing a certain subculture.
> Twitter has/had character limits. Instagram was primary for photo sharing. if you try to cram a long political rant in an instagram photo or description.. it is fighting against the app format and limitations. This sculpts the apps "culture"
A big part of Twitter’s “culture” is creating “threads” to work around the character limit, which kind of defeats the point.
This "Open Social" stuff is too complicated I think. I don't see what's wrong with having your own website. It takes a couple of minutes with the help of GPT to write an HTML 1.1 basic page and host it from home on your own hardware. Or better yet, don't have an online presence at all.
I'd argue that ATProto is the next iteration of open internet. It's what an internet where accounts/identity and verifiable content attribution are built in, and nobody using the technology needs to think about any of that.
There's a space here where we can move from nobody having smart phones or hosting digital presences -> everyone having digital presence provided by Facebook/Instagram, and icloud/google accounts -> Accounts w/ something like ATProto where its your stuff, you get to decide where you keep it, and you get to decide who gets access to it.
I have my own site. But the people love engagement - it motivates a lot of content creation. Back in the day we had web log rings and WordPress comments, but that stuff is dead on the modern web, it's too adversarial an environment. My blog has no meaningful engagement, I don't even know if anyone ever reads it. It works for me since I write primarily for myself, but this is just not the case for most people
Personal websites are great. They don’t do large-scale aggregation which a lot of people enjoy and look for. The article is about an approach to large-scale aggregation with important properties of personal sites. For what it’s worth, you can host atproto repositories from your home too — some people run them on Raspberry Pi.
If you think that there are specific resources, you can just post them here. The fact that you didn't, and instead linked to a corporate walled garden, is very suspicious.
This is a beautifully written introduction to the architecture of AT, but after much consideration I will still remain on ActivityPub for the time being.
I love the idea to define data formats first, and then build on top of that. It's the only way we should do everything, because if you have the data, everything can be re-built on top. Unfortunately the way AT works is all contained in here:
> Social aggregation features like notifications, feeds, and search are non-negotiable in modern social products. [...] Coincidentally, that’s the exact mechanism you would use for aggregation. You listen to events from all of your app users’ repositories, write them to a local database, and query that database as much as you like with zero extra latency. [...] This might remind you of how Google Reader crawls RSS (rip).
In order for the social aspect to work, all data must at some point or another be aggregated in a single place. Said single place must then be huge, as it scales linearly with the activity of the network; in a still-capitalist world this means that this single place will always be run and led by money, unless some extraordinary volunteers-based project like Wikipedia springs up. The example of Google Reader is to the point: it was the biggest tech company at the time, provided a service for free, and decided to stop because it didn't care anymore.
In fact Google Reader is a very good comparison. AT works exactly as if you had websites, each with their own RSS feed, and then a big relay called Google, providing search, feeds, notifications, ... but as we all know by being the middleman between producers and readers Google gained an astonishingly high power. That is the business model described by Cory Doctorow when he talks about enshittification. Put yourself in the middle, and everyone will depend on you.
The only way an AT based product works at scale, ie with everyone easily talking to everyone, is with one or a few mega intermediaries between everyone of us. I fear this is not going to solve any of the issues we have.
What is different in ActivityPub ? Intermediaries are definitely useful for some services, but once your network is built you don't need them anymore: content flows directly between the repository, no middlemen needed.
In short: if we want a single network at large scale, AT requires large scale centralization points, while AP certainly needs them but could survive without them. Either we face that, or we start exploring and living within small-scale networks
Well, atproto can scale down too if you’re content with a subset of data. In other words, it’s not that atproto requires you to have a full network, it’s that it lets you build apps over whole network. ActivityPub doesn’t offer an approach to do that. So we’re not comparing apples to oranges.
I do think that you’re underestimating the value of open network for large-scale aggregation. Yes, for big open world you need big indexes. But indexes don’t have to always done by single entity. Some can be shared. Resources can be pooled for apps that need a materialized index of the same data. We haven’t really seen how this plays out yet because big indexes only existed behind the doors so far.
And if all else fails, limiting the scope (by time or community) works in atproto too. It’s just… not as fun :)
The subtext of my comment is that the people doing and pushing for atproto are not building for small networks but for big networks. Yes, technical solutions can be found; the problem is, as usual, not technical but rather social. What kind of organization can build and maintain world-scale indexes ? What kind of people can be in those organizations ? There is very little reason to believe that those intermediaries will not behave the same way intermediaries have always behaved, if we don't also challenge the socio-economico-political system they are developed in. Which developers have an automatic reaction to not do. That's where ActivityPub changes: the social aspect of what it takes for viable communities cannot be evaded. Sometimes with bad consequences though.
I guess I just don’t believe that any solution where you don’t have full view of the network is aligned with what normal people want. Maybe AP is on a bigger mission to teach people that they’re “wanting wrong things” and actually you should enjoy a system where everyone sees a different like count and half the replies are missing. I think it’s a dead end.
That's a purely personal point of view but I don't think the AP people claim that "people want the wrong things", but rather that "the things you want have a cost and we're not hiding it".
The fact that likes count and half the replies are missing is not specific to AP but to implementations not willing to actually follow the AP community: in fact the SocialHub (https://socialhub.activitypub.rocks/) community is the place where all coordinated development happens, and solutions to those issues have already been designed and implemented in multiple softwares, with the notable exception of Mastodon. Maybe that's the issue: people keep looking at Mastodon to understand AP, but Mastodon is one of the worst examples of AP, even when talking only about the technical domain. It doesn't implement the C2S API, it doesn't have portability, likes counts and missing replies as you said, ...
> That's a purely personal point of view but I don't think the AP people claim that "people want the wrong things", but rather that "the things you want have a cost and we're not hiding it".
I think that's a great way of putting it, and it it's at the root of a lot of problems we have today. Our society increasingly encourages people to make money by coaxing other people into doing things whose costs are hidden.
Mastodon/AP is difficult to discuss because pointing to flaws of Mastodon leads to people saying "it's just a Mastodon problem", but AP doesn't by itself specify much so it's hard to critique it too. If there's a "flavor" of AP that's competitive with what atproto solves (can "walk away" without cooperation, can "revive" and "remix" data from other apps, can "fork" products with all their data), I'd like to read a condensed summary of that architecture.
What I found most exciting while reading this article was the promise that you can “up and leave” and take your data with you without breaking links, because the links are based on a domain name you control.
This is not so in ActivityPub. The data you post is owned by/controlled by the instance you're on. In the language of the article, you're still a row in somebody else's database.
I was on Mastodon for a while until the instance I was on shut down. I naively assumed that I could export and re-import my posts but that was not so. Everything is deleted. I technically have an archive of it in the form of some JSON files, but as illustrated by the article, this is now dead data. The same will happen again if/when my current instance shuts down. The only way around it is to run my own instance, which for the vast majority of people is a ludicrous proposition.
If we're talking strictly ActivityPub, they're exactly the same: servers where your data lives. AT's PDS give you access to your data, but proper AP servers also do that: you have your collections, and all your activities in them. The trick is to recognize which software is actually a proper ActivityPub software, and unfortunately Mastodon isn't one of them. The current issue is not with ActivityPub.
Dominant programming languages, servers, package managers, UI libraries and components, and much development tooling (IDEs, language servers) is largely open source. This wasn't the case when I started programming.
I can’t help but cringe whenever I see a Bluesky fan stubbornly clinging to the past by calling X ‘Twitter.’ This one went even further - using the old logo and even the outdated URL.
My post retraces a historical progression of social media, and it was indeed called "Twitter" at the time. You can scroll a bit down and you'll see "X" a bit below. In general, actually reading the articles you comment on won't hurt you.
I did read the thread — and I’m specifically referring to the third (and final) diagram where it still literally labels X as “Twitter.” No amount of timeline layout gymnastics explains that. It feels less like faithful documentation and more like a pretext to take a swipe at the acquisition by “some guy,” which then segues into the whole “getting cooked by the algorithm” bit.
This is such an important idea -- and yet I feel like the hyper-individualized "bluesky" implementation pictured is a less good practical idea than Mastodons more "server/host" way of doing things.
I get that theoretically the two should be similar or even identical in practice, but I feel like the way Bluesky goes so hard at "literally individuals maintain control over their own stuff" is kinda too hard for most, and that Mastodon's "just trust the server" way, which ABSOLUTELY has it's own problems, of course -- is still better, mostly because we have better practice in this style, in the form of good ol email.
>Social aggregation features like notifications, feeds, and search are non-negotiable in modern social products.
Conceptually, Mastodon is a bunch of copies of the same webapp emailing each other. There is no realtime global aggregation across the network so it can only offer a fragmented user experience. While some people might like it, it can't directly compete with closed social products because it doesn't have a full view of the network like they do.
The goal of atproto is enable real competition with closed social products for a broader set of products (e.g. Tangled is like GitHub on atproto, Leaflet is like Medium on atproto, and so on). Because it enables global aggregation, every atproto app has a consistent state of the world. There's no notion of "being on a different instance" and only seeing half the replies, or half the like counts, or other fragmentation artifacts as you have in Mastodon.
I don't think they're really comparable in scope, ambition, or performance characteristics.
Yeah, the goals of atproto are REALLY GOOD ones. The only thing I'm skeptical of is the extent to which "centralized state of the world" really needs to be a core of the protocol -- and does that sort of thing introduce the same kind of centralization that makes it vulnerable to enshittification?
My gut is that IT DOES. Put differently, there's presently nothing about TECH of the Mastodon model that prevents building tools that achieve similar "centralized everything" goals on top of Mastodon; only, you know, people and trust, the easiest part </sarcasm>.
Mastodon's probably the best long-term model and it's email that makes me think that.
In my view the atproto approach asks the users to make fewer required complex decisions, but gives them the freedom to make many voluntary ones. If someone wants to use a particular application, they basically just need to sign in. If they don't have an existing ATProto account, they can just make one, in the flow of the application they're signing into. Later they can chose different clients, or different infrastructure, or move their account, to their own hosting even if they want.
Mastodon requires a complex decision upfront, which server do I trust, which is analogous to where you create your account on ATProto, but unlike ATProto, doesn't give the tools to seamlessly transition later.
The trust lens I think is a good one. You want to let different users make different tradeoffs in effort without having that leading to a worse experience..
I mean, this might depend on who your intended audience is? As perhaps pie-in-the-sky my desire is, I'd like to see one of these things replace twitter (as opposed to smaller communities.)
And it seems to me that the more frictionless model is the one that looks like something people are used to; just "sign up with a thing."
That does leave the interconnection to the servers and others, but that may be how it has to be?
"Sign up with a thing" -- but then what about after that? You've made a bunch of stuff, what happens to it?
Offloading THAT mentally to a different "service" or "account" I think is easier than this all-in-one thing.
Again, I like the IDEA a lot; if you'd presented it to me like in 2000 before a lot of this stuff took off I would have been all about it.
Today? No, I think it's reasonable to offload that to so-and-so-dot-com, each as a separate account. Like the phrase "I have a facebook" always sounds weird to ME, but I think that's "the way."
They should be interoperable... I should be able to take my account from bluesky and host it on any other pub server
The server shouldn't need to be specific to mastodon/bluesky networks either
Ghost (the blogging platform) is kind of a peek into this — you can host your microblogging account there and interact with other activity pub networks like mastodon
this is the promise of the activitypub standard, anyone that uses the standard can interact with anyone else using the standard...
This is clearly a wild claim that almost undermines the rest of the argument, but to the extent that we can accept that there are open source software packages that decision-makers deep in that industry will reliably choose for their business...it's not clear how this revolution will extend to "regular people." They just want easy. Make something as easy and fun as Instagram. They don't give a crap about all this, they don't want to think about it.
In the tech industry, open source has clearly won. You're right that most end users don't particularly care. The engineers building solutions definitely care, and prefer to build on top of open source dependencies.
That was very well written. I have to admit that because AT Protocol was Bluesky's I thought it was some corpo version of ActivityPub, but based on this post it makes a lot of sense. The data is in a 'repository' of my choice. I think I like that very much and it aligns with the kind of general principle I have where it's better to apply filtering etc. on the read side rather than on the write side so that I can publish all sorts of things that I want into my repo and others can then read etc. that stuff.
The arrows do seem to imply that commenting on my posts goes into my repo, but I'm sure that's just an imprecision trying to express an idea. The whole thing seems very cool and decentralized.
When I went to see what it takes to run a separate PDS on AT, though, I see that it's all nice and packaged up and has certain assumptions:
1. It takes care of SSL etc.
2. It will stand up HTTPS/WSS servers to handle a bunch of RPC
So in practice, you don't get https://roshangeorge.dev and at://roshangeorge.dev because for the latter you kind of need https://roshangeorge.dev/xrpc and wss://roshangeorge.dev
Therefore, you probably end up with https://roshangeorge.dev and at://at.roshangeorge.dev and then you can run https://at.roshangeorge.dev and wss://at.roshangeorge.dev
All minor stuff and doesn't take away from the main point, but it was a thing.
>The arrows do seem to imply that commenting on my posts goes into my repo, but I'm sure that's just an imprecision trying to express an idea. The whole thing seems very cool and decentralized.
The way I used arrows might’ve been a bit confusing because I use two types of them.
The solid ones pointing from @alice.com downwards indicate ownership. They’re the same thing as grouping by color. All blue stuff is Alice’s.
The dashed ones pointing between records are links. Those are equivalent of <a href>. Any record can link to any other record, no matter which repositories either is in.
When you comment on someone’s post, your comment goes into your repo, but it has a link to the parent post (which may be in any repo). That’s usually how you want to represent it in the data model so that anyone indexing both records can reconstruct the relationship.
In the example, Bob comments on Alice’s post. So Bob’s comment is in Bob’s repo and Alice’s post is in Alice’s repo.
To clarify your specific point, a person commenting on your post will create record in their repo. In fact one can never create records in somebody else’s repo. That’s the central premise.
Hope that makes sense.
This makes sense but doesn’t this imply that displaying comments under a post is a very expensive operation?
Also not totally clear to me (apologies if I missed it in the post) is where repositories live, I have a bsky account with my own domain, but I am not running anything to host a repo. Am I correct in assuming that bsky is hosting my repo, but I would have the option to self host or move it elsewhere and continue using bsky?
> doesn’t this imply that displaying comments under a post is a very expensive operation?
It would be expensive if you don’t do your own aggregation. The recommendation for social atproto apps is to aggregate the records you care about into a local database and essentially build your app-specific index/cache of the network.
Ctrl+F to this part: “Coincidentally, that’s the exact mechanism you would use for aggregation. You listen to events from all of your app users’ repositories, write them to a local database, and query that database as much as you like with zero extra latency.”.
(One interesting consequence is that indexing the network can also be done by someone on your behalf, see https://slices.network/ for an upcoming experiment in that area.)
> Also not totally clear to me (apologies if I missed it in the post) is where repositories live, I have a bsky account with my own domain, but I am not running anything to host a repo.
Yeah, Ctrl+F here: ”Note that https://alice.com and at://alice.com do not need to resolve to the same server. This is intentional so that having a nice handle like @alice.com doesn’t force Alice to host her own data, to mess with her website, or even to have a site at all. If she owns alice.com, she can point at://alice.com at any server.”
You can inspect where at:// points for your handle in an online browser like http://pdsls.dev. If you put your handle there you’ll see the physical server it resolves to at the top.
Presumably you signed up from Bluesky so yes, Bluesky is hosting your repo by default. You can move it somewhere else with no disruption. See https://whtwnd.com/bnewbold.net/3l5ii332pf32u for how to do this from CLI and https://pdsmoover.com/info.html for something less technical.
Displaying comments is cheap because the AppView (the "cache" layer that consumes the aggregated feed of records from the relay) can maintain a relational database of the social web/graph.
When it receives a post, it creates a row in the Post table. When it receives a comment, it creates a row in the Comment table, which has a column pointing to the Post it's replying to. Then, getting all comments under a post is easy SQL.
About your second question: yes, you're correct. What handle you use and where your data is hosted are completely separate matters.
The default pds packaging takes care of SSL, but thats not a requirement, just something we try to make easy for users.
Also at:// URIs are of the form at://DID/..., and your human readable handle is bound to your DID through DNS TXT records _atproto.roshangeorge.dev, but applications all know to render that as just roshangeorge.dev. That DID points to a document that specifies where your server lives, so the HTTPS/WSS routes can live wherever you want them to.
Also likes/replies/etc on your posts go in their authors repos not yours, your intuition is correct there.
You can authenticate a handle via a file in ./well-known/ at the domain too, which is how bluesky does it for their default handles.
Being able to dump everything into your own repo and let others filter it however they want - that's a powerful shift
Wow, I always imagined Activitypub to be the better protocol and AT a cheap knock-off, but reading this article made me realize at is, actually, way better - primarily because multiple programs can access the same identity. This is really a great feature to have! This article was a real mind-opener for me.
Every one of these "How AT proto works" explainers focuses on data ownership—which is where ATProto shines—and glosses over data processing, where ATProto is decidedly weaker than ActivityPub. ATProto is built on a global, public view of the world, where all events are visible to a trusted global "AppServer" that can make all of the decisions for you—how to create your feed, who can see who's posts, etc—all of those decisions have to be made by a trusted intermediary. ActivityPub is more like RSS or email—your local server only has to manage the feeds you subscribe to, and your inbox is directly built from all of the posts you have access to. People you subscribe to send you your posts, and you don't have to process them at all.
This is why Bluesky could never have "private likes" in the same way Twitter or ActivityPub does—every AppView needs to track the like counts of every post in the network manually. It's a huge hassle! I just don't see this architecture winning out in the long term, when compared to the AP feed-subscription architecture.
Actually, this was how AP was originally designed as well—it was just that the most popular early implementations took shortcuts to remove that functionality to fit them into their existing architecture. This is a direct consequence of the fact that the biggest AP implementations when it was initially adopted were descendants of older OStatus social networks, and not built to be "ActivityPub-native" from the ground up.> This is why Bluesky could never have "private likes" in the same way Twitter or ActivityPub does
I didn't know "private likes" even existed, but if atproto includes public key encryption, I could publish a record containing a "like" that I have encrypted with the "liked" user's public key. Only that user would know what the record contained. Though, the fact that the encrypted message exists and had a cleartext "@name" is itself informative to adversaries. Concealing that level of info would require other measures.
Correct. All information in the system is part of a public, append-only ledger. That's the thing I'm pointing out is a fundamental weakness of the system.
... if Bluesky users owned their private key.
I think the lack of owner's custody of the private key in bluesky is more the result of a convenience design than of a technical limitation. If the user is expected to manage the private key, you might end up with something similar in complexity to Nostr. But it might still be possible if you're running your own PDS.
Wow thanks for the valuable info. Would you recommend, for people who wants to add AP to their existing username/password application?
We are currently working on something based on https://fedify.dev
Would you consider that can provide more complete AP functionality?
I haven't worked with Fedify before, but what I'm talking about is the difference between a service that has a "translation layer" between their own internal data model and ActivityPub, and a server that actually stores full ActivityPub object's in the user's inbox and outbox, and displays them unchanged to clients. 90% of deployed ActivityPub applications—like yours!—are the former, not the latter.
A true "ActivityPub server" is almost as simple as a Bluesky PDS—all it's responsible for is 1) storing blobs of data, 2) fanning out subscriptions and 3) collecting incoming data for you to view. In the original way ActivityPub was designed, all of the actual data presentation layers—Mastodon, PeerTube, Pixelfed—were designed to be specialized clients that could communicate with the user's generic server. However, the first popular implementations cut out the client-to-server part of the protocol, so now we're stuck in a place where everyone thinks ActivityPub means you need a separate identity for every client application.
So, what I would recommend for your own username/password site is implementing an ActivityPub client, and recommending that users use it to connect to a third-party ActivityPub server. That way, the user owns the data, and they simply use your service to get access to (filtered version of) it.
Unfortunately, since this is a less implemented part of the protocol, the client APIs necessary to make this a reality haven't seen much development. And you're facing an uphill battle for user adoption. In practice, users don't seem to mind having separate accounts and identities for different clients. It reminds me a bit of the "key management problem" in e2e cryptography. Having a stable cryptographic identity is doable if you're technically minded, but most people just muddle along and don't really care about it that much—they create new keys every time they get a new laptop instead of trying to figure out cross-signing, and everything works itself out more or less fine.
I mess around with fedify a lot, it's great. It's fun to integrate with existing websites.
I've thought a lot about ATProto and integrating it in similar ways. I'd love to have a look at what you're doing and how. The struggle I have is that I think the ATProto repos have a fairly strong cryptographic structure compared to AP
If someone requests an object over AP, that object contents can come from anywhere easily, and can be signed easy. So for me, when someone requests an activitypub object of one of my notes via fedify, it just reads the truth from my markdown note files and returns it. If I edit my markdown files, it's no real issue, the next request gets the latest version of that markdown (there's some signing nuances in places, but it's generally straightforward)
With ATProto PDS and repositories use things like Merkle Search Trees and other things which I assume means the backend data needs to be a lot more... consistent. Like the data has to live in the PDS, and that has to become the source of truth to maintain the merkle structures, including updates.
But with AP via fedify, it feels super easy and nice for my source of truth to be whatever backend store I like (markdown notes).
I've done enough with crypto to see the benefits provided by the transparent verifiable history of merkle like structures, but honestly, this is social media not cash: I don't care if someone wants to subtly change something to manage how they come across with their own social media. In that respect, I feel the ATProto repositories overcomplicate things a bit.
Private likes are the only way forward on social media if we're to finally decouple free speech from the vindictive outrage mob feedback loop
The AT vs AP issue is full of nuance. Our community has gone back and forth on this: https://github.com/bevyengine/bevy/discussions/18302
Interesting discussion, and good points highlighted about Bluesky's did model that means you essentially don't own your identity either (in typical scenarios and when it will likely matter most). That takes a big chunk out of the "host your own data" narrative.
One point I disagree on that's also mentioned in the replies: I don't think a global state should be seen as necessary or even desirable. Sure, it helps people who optimize for clicks/likes/attention as a business model But that shouldn't be the only concern. Having some degree of uncertainty around the global state can help reinforce a healthy skepticism towards what you're seeing in general. The 'correct' global number of upvotes on a post, or the majority of what has been said about a subject might still be manipulated to the point of being essentially fake. Optimizing for virality is not desirable if you think of the platform as a public good. Think about what it has done for the centralized platforms, and the consequences it's had in the real world.
> We should pick a platform that is federated, where you have ownership and autonomy over your identity and your audience. Social media should not be own-able by a single group or person. Social media is serious business. It ties directly to human rights and business outcomes. It shouldn't be in anyone else's control but yours.
I agree, but why not also apply the same logic to the other two communication platforms you are using (Discord and GitHub)?
> I agree, but why not also apply the same logic to the other two communication platforms you are using (Discord and GitHub)?
Aside, this infuriates me - "here's our open source project/website, join our Discord!" (even Lemmy instances). sigh
There aren't many realistic alternatives.
The Janet community uses Zulip and it works well.
Really nice analysis, thank you.
This is not meant as a criticism at all, I like Bevy. Are you familiar with the Mr. Beast PowerPoint that said:
> Your goal here is to make the best YOUTUBE videos possible. That’s the number one goal of this production company. It’s not to make the best produced videos. Not to make the funniest videos. Not to make the best looking videos. Not the highest quality videos.. It’s to make the best YOUTUBE videos possible.
When I glance at the Bevy discussion link you shared, my reaction is:
> Your goal here is to make the best GITHUB OPEN SOURCE game engine possible. It's not to make the most performant game engine. Not to make the game engine that powers the best games. Not to make the best looking graphics in a game engine. Not the highest quality game engine or game editing experience. It's to make the best GITHUB OPEN SOURCE game engine.
> Your goal here is to make the best GITHUB OPEN SOURCE game engine possible.
That sounds awful if applied to Bevy, and seems you misunderstand what "Mr. Beast" is trying to say.
They're not saying make the best game engine, but make the game engine that would do best by GitHub-popular metrics, which is absolutely the wrong way to go.
I hope they continue to simply make the best game engine available, as before, and ignore useful metrics or focusing on where it's hosted.
They didn't misunderstand, they're calling out Bevy's priorities.
Bevy is still incomplete as an engine. AFAIK there's only one commercially successful game made with it, Tiny Glade, and it doesn't even use Bevy's renderer but a custom one.
Yet the Bevy developers distract the project with essays and debates about the politics of their federated social media presence. You don't need that to build a game engine, but you do to build a "GITHUB OPEN SOURCE" game engine. I don't think there's anything inherently wrong with it, but that's clearly the focus here.
> They didn't misunderstand, they're calling out Bevy's priorities.
Yes, but the misunderstanding I'm trying to point out is that Mr Beast is not trying to create something of value, they're trying to create something that works well on a specific platform.
In the Bevy analogy, that would be creating a GitHub project that gets the most stars, regardless of how useful or well the engine itself is working.
I'm instead saying the same thing as you, they should continue focusing on building the greatest engine, regardless of the platform for hosting the project.
If Bevy were to follow Mr Beasts advice, they'd focus on flashy demos, engaging READMEs and so on, to increase the success on the platform itself, instead of focusing on the engine itself, which from following their direction almost since inception, they're doing a pretty good job with already.
If your goal is to be viral and not care about the quality, then maybe following Mr. Beast's advice might make sense. If you'd rather risk popularity by trying to what you think will actually be better without knowing whether it will end up being viral, it makes sense probably to take anything he says with a grain of salt.
I guess my point is, writing 3,000 words on social media choices isn't going to make the game engine any better. But I can see how it is really important to the community and developers, which is to say, it's really important if the product is not a game engine but An Open Source (Esoteric) Game Engine Hosted On GitHub. Do you see what I am saying? That is the difference between making the best videos and making the best YOUTUBE videos. Mr. Beast isn't confusing, he's capitalizing the important part of what he is trying to say!
I fully understand what you're saying; I just don't agree with it. For starters, people can be complex and have more than one goal. The effect of making an open source project isn't necessarily just the utility of the project itself, and if some of those other potential effects are desired, the best way to do things won't necessarily be the same as if there's only one output that someone cares about.
For another thing, even if there aren't any other specific effects that are desired, there still might be some that are specifically not wanted, and avoiding those might be important. Mr. Beast is a exactly the type of example that demonstrates this point; by focusing on making the "best" YouTube content as measured purely by popularity, he's done all sort of things that someone might very understandably want to avoid. I agree that he's not confusing, but that's not the issue with him. He's extremely transparent in how little he cares about whether what he does actually helps anyone other than himself (or if he hurts other people in the process of helping himself). I suspect this is quite different from the mentality of most open source developers, who are putting in personal time and effort towards contributing to something that realistically has little likelihood of direct personal benefits for those involved. What you're perceiving as a lack of focus comes across to me as having the humility and thoughtfulness to try to look at the big picture and understand one's actions in the context of a larger environment that isn't improved in the long term by pursuing a single narrow goal to the exclusion of literally everything else.
Okay… Unity and Unreal have a lot less focus than Bevy, but are much better game engines. They will be shipping more great games every day than Bevy will in the next year, including beloved meaningful ones, like Silksong and Indiecute and Cuddlygame or whatever. And hardly anyone there, like most big corpo employees, is directly benefitted from the better games, they get paid the same amount of money, but the rub is also, everyone I know working at Unity and Epic is really sincere and loves games.
Of course I understand these are different things. Bevy is not at all competing with Unity.
Because Bevy is trying to be best GITHUB OPEN SOURCE game engine. I’m just trying to be a little jocular about how… you know, I didn’t say unfocused, but surely it seems a little silly to write 3000 words in response to a community worried about which open source social media federation protocols to adopt. That giant thread IS the product, it makes perfect sense from the POV that Bevy is trying to be the best OPEN SOURCE GITHUB GAME ENGINE, in the same way that Mr Beast is making the best YOUTUBE videos or Egyptology professors are making the best EGYPTOLOGY writing or painters are making the best PERSONALLY MEANINGFUL FINE ART or whatever. I like Bevy!
> Bevy is trying to be best GITHUB OPEN SOURCE game engine
You're the only one saying this. No one else, including the person working on the project that you originally responded to, have claimed this is their sole goal to the inclusion of everything else. It's hard to tell if you think they literally don't care about anything else but are choosing their actions poorly, or if you think that they have the wrong priorities and should change them, or if you just didn't really stop to consider that maybe your assumption about what you're saying they're trying to do is incorrect and haven't read what I'm saying closely enough to understand that no number of examples of other things that happen to fit what you're saying is relevant if you aren't able to establish why anyone else should agree that it applies here in the first place.
> Okay… Unity and Unreal have a lot less focus than Bevy
Unity and Unreal also have billions of dollars in funding
One could argue the opposite, let's take bevy as an example: more popularity could bring in more contributors or more funding which would hopefully result in making a better engine. The same could apply to Mr. Beast videos (more views translate to more money which translate to better production and staff which translate to more or better videos) but the goals are inherently different (maximizing profit which rewards quantity over quality)
Community drama has always been the achilles heel of large, open-source projects which are volunteer driven. Focus on community is critical to delivering this, especially when your product relies on mind share.
In my experience, focus on community is how you get community drama in the first place.
Thanks! I’m glad it’s clicking. The comparisons with AP are always frustrating for this reason as it doesn’t try to do anything similar in scope.
imo ActivityPub sounds better than ATProto, hence people assume the former is superior. This is a branding issue.
Yea maybe! I think at:// is an even stronger brand in a sense though. Actually makes sense as something browsers may support one day, “at://alice.com” makes sense at “stuff at alice dot com”, “authenticated transfer” is a decent acronym, “atmosphere” for the ecosystem is just great (and wasn’t even coined by the team).
You'd probably like this article too, same ideas from the distributed engineer perspective
https://atproto.com/articles/atproto-for-distsys-engineers
Does that mean there is a centralized identity service?
You have two choices of identity service: did:plc, which is, and did:web, which is not.
In theory additional dids could come into existence too, those are just the two that blueksy supports at the moment.
That’s correct. PLC is being split into an independent entity but that is ongoing: https://docs.bsky.app/blog/plc-directory-org
It’s worth noting that PLC can’t fake your data because each edit is recursively signed. So you can verify a chain of updates. However, PLC can in theory deny you service or ignore your updates.
it's def not doing that right now lol, more than half the ops are adversarial and still accepted (the vast majority contain invalid contents)
Yeah, there are tens of thousands of records referencing a PDS with a certain… controversial president's name in the hostname, which doesn't actually exist at all.
Also someone from Nostr made a tool that let you upload image files and encode them (split into parts) into plc directory records…
Oh is Nostr the other one, why do these groups feel the need to try and ruin what other people enjoy?
Blessed are the troublemakers, for they expose your vulnerabilities
> primarily because multiple programs can access the same identity
Why do you think that's different in ActivityPub? As far as I know there's nothing preventing (for example) Mastodon and Pixelfed using the same identity.
[dead]
So email threads but on a web page, and filtered by subscription instead of senders/receivers. Clever.
How can I add this to my website?
How do you facilitate discovery? IE, what if I want to know about replies people have made without subscribing to their /social page?
Responding to the proposal (which is unjustly flagged to death, even if I agree that it isn’t a good idea):
> I came up with a solution that eliminates centralized control, trolls, advertising, and really all forms of harassment, and it doesn't even require a special server.
If it behaved as you describe (only followers see top-level updates and only followers of every person i the chain see replies; which I don’t think the concrete features you describe actually support, but I’ll get to that next), then it also eliminates the thing that makes social media work for both audiences and the people looking for audiences—there is zero discoverability, you can’t even encounter people through conversations.
Of course, with public outgoing feeds where visibility limits are a decision of the viewer’s client (to which all the visibility-deciding work of a server is outsourced, to avoid having a dedicated social server and just rely on regular web pages), it can’t be guaranteed to work that way. It can work that way for a viewer who wants to see that restrictive of a view, but that doesn’t prevent other people from having a more expansive view.
You can choose what you see, but not who can see your stuff or who can engage with it (if you have a client that behaves in the described restrictive manner, you won’t see engagement from people you don’t follow, but they can engage and others with a permissive client can see that engagement.)
> there is zero discoverability, you can’t even encounter people through conversations.
based on the spam and harassment on most social sites, I'd call this a feature.
If you read something interesting you can email the person with your thoughts , and if they find it interesting they'll follow you. If you are a troll, they'll delete your message and they don't need to use their platform to support your comments. If everyone used this system, trolls wouldn't have a platform anymore.
Here is a great example of discoverability without comments : https://herman.bearblog.dev/misc-updates/
Herman from bear blog posted about a topic, a bunch of people emailed him their thoughts, and he created a follow up post with the best of those thoughts listed out.
This system definitely won't work for people that have FOMO, or need validation through votes on their comments.
> How do you facilitate discovery? IE, what if I want to know about replies people have made without subscribing to their /social page?
That's what makes this system so great, you don't see what other people you don't even know say, and you should be ok with that. Don't look for validation from the trolls on the internet. Reading what random people you don't know say is how you get spam and harassment.
> How can I add this to my website?
currently this is a thought experiment, but if anyone wants to work on it, let me know, my contact info is on the post.
Also, this wasn't meant as "the solution" to the problem, more just maybe we should be looking for small solutions that don't require a huge amount of infrastructure to run.
> That's what makes this system so great, you don't see what other people you don't even know say
But how do you get started? Are you saying you only look at blogs of people who you've met in real life and who told you their blog URL? Even that is unrealistic because lots of blogs link to other blogs. Why should I be okay with following a link from one blog post to another blog post but not okay with seeing a comment on a blog post?
The author is talking about owning a domain and how having that domain gives you ownership over your data... But I can't but think that, at least in the US, domain names are rented from private Internet service providers. There is no ownership involved. One way or another, we are still paying a company.
The assumption of the article is that ISPs are stable and net neutral enough that one would not worry about the ISP going under or seeking some personal vendetta against you and booting your domain. A separate entity may no longer be hosting our data, but a private entity is the gatekeeper of whether anyone is able to see your data.
All that to say, if we want true ownership of domains, ISPs need to be a nationalized, democratized service.
While I agree with the sentiment, I think it confuses ISPs with registrars. There are still many ISPs that do that service as well, it's less common than it used to be.
It is quite common for national TLDs (like .de, .jp or .cn) to be managed by not-for-profit entities, under contract with their respective governments... which might also not be great wrt censorship.
There is also the general issue of equal access, where shorter, more memorable domains get more expensive and hodling domain names is only disincentivized for people without enough funds. I would very much like to see an alternative system to domain names, probably something more in the web of trust space.
>The author is talking about owning a domain and how having that domain gives you ownership over your data
I've actually tried to separate the two in the article although it might be subtle (because I didn't want to make it confusing).
Owning a domain means you own your handle. Not data. In atproto, a domain is just a handle — you can swap it out without breaking links. (This relies on a centralized auditable repository which is currently being moved out of Bluesky as a separate independent entity. If you don't want to rely on that, yes, you'd have to tie your identity to the domain.)
Owning "data" is not related to owning the domain per se. It has to do with the fact that you can point your identity at a different physical server over time without breaking links. So your hosting doesn't have any real leverage over you. That's what I mean by meaningful ownership.
I've sort of conflated domains and persistent identity in the article to simplify the picture a bit. Your identity is not tied to a domain, but a domain serves as a bidirectionally verified user-friendly alias for it. If you lose control over the domain, you can tie a different one to the same identity later. This doesn't break links between records or functionality.
There are alternatives to DNS, like GNS (GNU Name System): https://www.gnunet.org/en/gns.html
The difficulty with the GNS is getting the public keys that enable the decentralisation. Key signing parties seem to have their limits.
There’s a bunch of alternative DNS roots out there, that are similarly hierarchical, but really interesting: https://en.wikipedia.org/wiki/Alternative_DNS_root#Implement...
Or, at the risk of saying the unpopular thing, Ethereum Name Service? (ENS) This sort of thing is pretty much exactly what ENS is for.
Opennic too, they even allow you to host your own tld.
https://opennic.org/
It's getting harder to change DNS settings on Windows, even systemd makes it a PITA to update DNS entries.
The most safe way to accomplish what you want is using postal pigeons, made stealthy with black spray paint.
All jokes aside, an educated guess on what to trust (or not) is necessary. Otherwise you wind up on a slippery slope that goes in circles and always results in 'we need more laws'.
Long way to say that I think 'owning' a domain name and publishing on there is way better than the silos we're accustomed to nowadays. The open web never stopped working as intended, the genie is out of the bottle for 30+ years yet, make use of it if you want.
Easy. Trust cryptography. I generate a private key and sign everything as me. This takes out all the BS. Of course you cant age verify and anonymous accounts and spam become easy. But that is your trade-off. Nostr allows relays to filter out shit they dont like. So you can have your 4chan but also your more moderated sites too.
I think the article's argument is more about relative control than absolute sovereignty
Governments can and do censor domains. A theoretically censorship-proof system is impossible; even communication over bluetooth or radio can be shut down by signal jamming and physical persecution.
Also, you technically "own" your data on any social network. If you put a public key in your bio and archive every post, you can move to another network. Then use friends and close followers to broadcast your new location; those who care will probably find you without much effort, but if not, Open Social doesn't solve this problem either.
However, I still think Open Social is an improvement. Most social networks are really bad these days: manipulated engagement-driven algorithms, locked-down data accessible via poor UI, toxic community, and inconsistently-applied unspoken rules. These issues all have workarounds, and can still happen on Open Social (BlueSky's community is toxic, I don't know if its algorithm is gamed or its global moderation is reasonable). But it certainly makes them harder to form and easier to avoid:
- If everyone's data is available raw via API, it's easier to create your own algorithm and frontend (or realistically, use someone else's which is better designed and more suited to you personally than what a generic social media company would make)
- With all data available, it's more likely people will develop better algorithms to filter out toxicity and discover interesting posts. At minimum, it's more acceptable and easier to create whitelisted groups, where one person maintains an "algorithm" that simply selects posts they (and others who are granted invites) have determined are not trolls.
- If data access and ban lists are separate, the same network can have multiple ban-lists, so being banned isn't "all or nothing". You can choose a ban-list with rules you agree with and continue to see posts that most others would prefer banned. If no ban list is dominant, there's a good chance the rules that the ban-lists share are reasonable; you can worry less about being banned inconsistently or for a widely-considered unfair reason (e.g. upsetting a specific moderator), because in those cases you'll only be banned from one list.
- If having a public key and archive of your data is the default, and your followers' frontends automatically recognize the key and find your new domain/hub (e.g. if someone links it to the old hub), it's easier to move. If BlueSky shuts down tomorrow, some clients can just be updated to point to another domain with all the data and continue working as if nothing changed. Whereas if Reddit shuts down, in theory one can develop a clone from scratch and populate it with the archived data, but users would have to re-register and it would be a huge mess (+ legal issues).
There are clearnet websites for flat earthers, anti-vaxxers, cults, hacker groups, classified document leakers, nazi groups and terrorist organisations. Finding a registrar that lets you say what you want is a solved problem.
Currently most people publish stuff on big platforms so governments, activists and billionaires will go after these platforms to influence or control what's being talked about. I worry that if we never had big platforms, or we moved past them, all of the focus would be on going after registrars and hosts instead. It's not a bulletproof system unfortunately
I don't have a horse in which decentralized protocol wins, but while ATProtocol sounds great on paper I'm still inching closer to liking ActivityPub more. I'm pretty active on Lemmy[1] which is quite active and fun to browse
1. 99.99% (literally) of AT users are on Bluesky, which is helmed by a for-profit corporation. The argument is that they don't control the protocol but considering it is THE dominating instance of that protocol, what's stopping them from strong-arming the protocol and changing how it works to benefit them? Better yet, what's stopping them from doing a rugpull and closing off their open service? What if bluesky decides 5 years from now that you aren't allowed to move your account? This isn't some hypothetical scenario, this already happened before. A lot of social medias started off with fairly open features and APIs and slowly choked them out for profit.
2. Users don't really care about protocol, they care about momentum and userbase. Piefed/Lemmy/Mbin are all popular-ish Reddit alternatives using AP. It was already a struggle to reach a point where posts could get over a hundred comments a day, how are you going to convince people to move to another platform again? I'm worried this will just end in splintering an already niche community and cause people to just give up and go back to using popular platforms.
Being able to move accounts is a very neat feature but it's not a reason enough to move. You can already export your settings and make an account on another instance in 20 seconds then import your settings again, which would bring back your subscriptions and blocks and all you set up from account 1. To me it's not a huge deal.
See also: https://arewedecentralizedyet.online/
[1]: A fediverse Reddit alternative, e.g https://lemmy.world/ and https://programming.dev/ . See also Piefed which I think is better nowadays https://piefed.social/
> considering it is THE dominating instance of that protocol,
Instances don't work like they do on mastodon. There's not really a "dominating instance" in the same way. Heck, even within Bluesky's infra, there are multiple PDSes. Basically, stuff is layered in a different way (which the article shows the details of) and so talking about the structure of things ends up working differently.
> what's stopping them from strong-arming the protocol and changing how it works to benefit them?
This is absolutely a real concern. I believe they have shown themselves to be good stewards, and they also recognize this concern. As the ecosystem grows, this will be fixed.
> Better yet, what's stopping them from doing a rugpull and closing off their open service? What if bluesky decides 5 years from now that you aren't allowed to move your account?
This is built into the protocol! You can back up your CAR file and move it to another host without the approval of your current host.
> You can already export your settings and make an account on another instance
This doesn't work on masto to the same degree as atproto. You lose a lot of stuff when you move on masto, but it's 100% transparent on atproto.
I don't think being able to migrate your account addresses the rugpull concern. The rugpull scenario is that one day, in five years or so, bsky.app drops all AT Protocol support and transforms into a Twitter-like centralized social media website. The problem isn't that the account will stop "existing" but that Bluesky users will stop seeing it. The average non-techie Bluesky user who doesn't know about the AT Protocol won't even notice the change, except that, from their perspective, a tiny percentage of nerdy users have stopped posting. For you, "migrating" your account away is effectively just deleting it from the now-centralized Bluesky and willfully decreasing your audience by 100-fold or more.
The problem is a social not a technical one. It doesn't matter how good AT Protocol is at account migration. The vast majority of AT Protocol users think of themselves as Bluesky users and don't even know what the AT Protocol is. If the official Bluesky clients move away from the AT Protocol, the majority of users are moving with Bluesky.
For all the UX concerns people have with Mastodon/ActivityPub, at least they make it obvious that different users are hosted on different instances, and no one instance has more to gain than it does to lose by defederating.
It is true that there are both social and technical components. You cannot force someone to use an app they don’t want to, so there’s no real solution to the social problem you pose. However, this isn’t any better in Mastodon. If you instance decides to swap the software to no longer federate, you’re stuck.
[dead]
If your pds refuses to serve you your CAR file I don’t think you can do anything about it, can you?
Regular backups help in this case, you can move all of your data to a new host if you have a recent backup somewhere and your rotation key. Not really approachable for the average user today but there are people working to make this easier.
Yes, if you are really worried about this you’d want to regularly back that up.
I read your reply as the scenario from GP is unlikely to happen in practice or has low impact. To me it seems you need to make frequent backups of "your" data to have a copy of it.
Can i run multiple PDSes with my own single identity to not give one provider exclusive power over access to "my" data?
Ideally, a client app would make these backups for you automatically. I hope Bluesky official client will add automatic backups (in addition to the existing manual export flow that already exists). It's not hard to set it up as a GitHub action today if you're technical but making it accessible to non-technical users seems important.
>Can i run multiple PDSes with my own single identity to not give one provider exclusive power over access to "my" data?
Not really since there has to be a source of truth where the writes happen. I guess you could manually replicate changes between multiple servers but there still has to be one that applications know to talk to. I'm not sure what problem it would solve. This seems similar to "can I have multiple deployments of my site" — you sure can, but you might as well deploy it elsewhere when you actually plan to point to it.
I personally believe that the chance of Bluesky PBC suddenly swapping all of their software to no longer be built on atproto to be a very low chance, yes.
There’s middle grounds here; for example, due to some recent moderation decisions, some users have decided to move away from Bluesky PBC-run PDSes and to self hosting. Those users did not need to proactively backup to move. The proactive backup cases are things like “Bluesky PBC’s servers disappear suddenly” or “they ban your account.”
I don’t think you can run multiple PDSes, but since it’s quick to move the canonical version, I don’t see that as a huge drawback personally. In the same way you’d fallback to the secondary if the primary turns out badly, you’d set up a new PDS and point your identity at it.
What irks me is that in the end of the day if you go to Bluesky it's all American politics and if you go to literally any mastodon instance it's all American politics.
Maybe it's because I don't like monster of the week political drama, but I still don't see a reason to use them instead of Tumblr, Pinterest, or even TikTok.
This is very true, and it's a large part of why I never use microblogging at all, it's impossible to just find posts that fit what you want to see.
That's why I mostly use Lemmy/Piefed because everything is neatly organized into communities that you can subscribe to. I mostly browse tech & gaming communities and my feed is very chill.
> if you go to literally any mastodon instance it's all American politics.
It really depends on who you follow. Almost all the talk I see is tagged with #uspol so I could easily filter it out, but even without it, it's not the dominating topic.
I feel like I get ${local_country} politics* because I follow people from ${local_country} and most the other people I follow who do post about US politics tend to spoiler their posts with USPOL, so I can just scroll past if I'm not feeling it.
* Usually spoilered with "${local_country_code}POL"
so what we need a de-politics filter by default?
I know that Mastodon is not the same as ActivityPub, but I don't know how can it be treated seriously if it allows disappearing replies. Whatever we write will disappear after some time. Sometimes. Because sometimes not. Maybe it's an implementation problem, I don't know, but it was one of my two reasons for my exit from Mastodon.
It's literally a feature - individual users can set post auto-deletion on their instance. Because a government could suddenly start firing people from their jobs for some shitpost they made a decade ago.
But you have the fact that this is the Internet, and somebody will have archived your post no matter what you or your host instance does. So you can rest assured that whatever you wrote on Mastodon is out there somewhere...
I think it’s ultimately up to your instance whether it keeps your posts indefinitely or not. I think most do, but others might delete posts after a period of time, in which case they should mention this to their users (on their ‘About’ page, for example). Personally, I can’t say I’ve encountered this problem, but then again I’ve mostly used Pleroma (which is a different program implementing the ActivityPub protocol, like Mastodon).
It captures something that I think a lot of us in tech have been feeling but haven't quite articulated: that the social web feels increasingly rented, and the rent keeps going up
We’d be lucky if the rent was paid in dollars but, instead, it’s paid in psychological manipulation
Psychological manipulation is only being performed because it generates dollars.
True of course that dollars is the end goal, but frankly it'd be better if they just took the dollars out of my pocket directly, instead of poisoning my brain first so that they can trick me into giving some dollars...
Obviously I'm being hyperbolic, but I think eventually if society survives past this phase, our descendants will look back and judge us for letting psychological manipulation be a valid economic process as a way to generate dollars, in much the same way we might judge our ancestors for ever building up a whole industry to hunt whales for oil for fuel (meaning, they might acknowledge that fuel is important and necessary to power an industrializing society, but they would mock us for not understanding how to refine petroleum sooner, and how silly going through the tech tree of fucking whale hunting is, just to get some fuel).
It is fucking silly/absurd/dangerous, that we go through the tech tree branch of psychological manipulation, just to be able to sell some ads or whatever.
Correct
Check out Technofeudalism by Yanis Varoufakis, he really expands on the idea of web being mostly rent-seeking and not productive.
Now here is a controversial question... Can we have a free of cost top level domain? What are the actual costs associated with registering a domain? If let's encrypt can provide secure certificates free of cost, why can't a different no profit provide domains free of cost as well? It doesn't have to be pretty. It could be a UUID v7 stacked on top of another UUID v7 for all I care but it would be globally unique and available free of cost.
And once you go to the site, your browser will remember it anyway so you don't need to type the monstrosity.
Or is it a really bad idea™?
A free of cost TLD is probably not practical. There are some special things that go along with being a TLD and being in the public suffix list: https://github.com/publicsuffix/list
If you drop the TLD part though, you can do whatever you want with any domain you want, up to and including handing out free subdomains to anyone who asks. As usual, though, if you try to do this, the dark internet will make you regret it as one day, quite suddenly, you'd find you were hosting the DNS of some massive scam email or other, or any of who-can-even-enumerate ways of making you sorry you put this service up because of their abuse of it. Just like anyone can make a URL redirector, and many people even use it as a sort of "learn this language project" but if you actually put it up online you will rapidly regret it.
It's a bummer and I'm not celebrating this fact, but, yeah, it's not something you want to do.
Why can't it be a keypair like a .onion domain?
DNS is not a sybil resistance mechanism
Because .onion isn't a DNS domain. It uses the same syntax but you have to be on Tor for it to work and it does something completely different than DNS resolution. I read the original question as specifically about having top-level domains, not "something like domains that works on a special network".
Special networks can do as they like, but then they won't be DNS.
> It doesn't have to be pretty. It could be a UUID v7 stacked on top of another UUID v7 for all I care but it would be globally unique and available free of cost.
This is basically where did:plc comes in, for atproto. https://web.plc.directory/ provides free ID numbers. For example, mine is https://plc.directory/did:plc:3danwc67lo7obz2fmdg6jxcr .
Your domain then uses a txt record to indicate that you want it to be associated with that particular did:plc.
just to note, did:web is also an option, but has drawbacks like losing your identity if you lose your domain.
> It could be a UUID v7 stacked on top of another UUID v7 for all I care but it would be globally unique and available free of cost.
You're essentially talking about IPv6 addresses.
Interestingly, most residential ISPs these days already issue your home network an IPv6 /64 or better! But they (sadly) just firewall off use of most ports that residential users have no purpose for — on my own network, even if I configure my router to allocate each machine on the network a public-routable IPv6 address, the only port the network (not the router!) is willing to allow non-established incoming flows to is 22/tcp.
But even if they worked, they'd still be ephemeral. At best, even if your ISP keeps the allocation the same, you'd lose it if/when you switch ISPs. (Similar problem to ISP email addresses.)
The real key here, would be if someone was freely giving out tiny slices of IPv6 https://en.wikipedia.org/wiki/Provider-independent_address_s... to individuals; and there were hosting providers / residential ISPs willing to add BGP routes in their ASN for these tiny prefixes. Then you could have a stable and portable and free IPv6 address for life. (It's certainly possible in theory, just not built yet — similar to how LetsEncrypt was "certainly possible in theory, just not built yet" until it was built.)
---
That being said, if you really want this to be DNS (not sure why; if it's not a short memorable name [and thus inherently competed over by typosquatters], then DNS is the wrong tool for the job), then you could do what systems like ngrok do, but directly serving those dynamic records as domains under its own gTLD, rather than serving them as subdomains under a domain. Maybe with each domain getting its own DNS zone and everything. That'd certainly be neat.
Note that way back when, the .me ccTLD sort of did this — they gave away .me "domains" for "free"; but with all web traffic on those "free" domains being intermediated by their L7 reverse-proxy servers, where they'd inject ads into any delivered HTML pages.
.tk used to be free and was the top ccTLD in the world by the number of domains registered. You can imagine what it was mostly used for.
Facebook sued the operator (Dutch company called Freenom) for facilitating phishing and now we can't have that anymore.
.tk was widely known for taking back domains once they got popular and turning them into ad spam. That's how they made money "giving" the domains away for free: lead generation, basically.
There was a .FREE initiative but that got all weird after a while, the deadlines were not respected and then nothing happened... https://icannwiki.org/.free
That's almost like regular free dynamic DNS, just people don't mentally frame "example.dyndns.net" as their online "handle"
There are some github project which offer free domains if you send them a issue asking them kindly for subdomain iirc
https://github.com/topics/free-domains
Another thing, the thing that you mention is really similar to how tor onion links work... Except they offer encryption and prevents MITM/any other ways while still having your ip hidden.
Another idea which I use sometimes is to use something like cloudflare tunnels or ssh forwarding with things like serveo.net or any ssh based remote forwarding in general like pinggy or even ngrok.
If you are using this in some internal thing, I can also suggest something like piping server which I really like and I want to build something like a web browser tor-onion links esque but on top of piping server, its really really cool
https://github.com/nwtgck/piping-server
running a domain costs money. there's no way around that - it requires server resources to respond to dns queries, and that requires servers and electricity.
so to offer it for free means somebody has to subsidize it. letsencrypt can operate because big companies with lots of money want their ads to be delivered without being intercepted by an ISP. what's the motivation for anybody to subsidize free domains?
> running a domain costs money. there's no way around that - it requires server resources to respond to dns queries, and that requires servers and electricity.
I guarantee you I can store and make available over DNS the less than 1 KiB of data for less than a penny a year.
Instead of free, charge a flat $1, put it in long term US treasuries at 5% / TIPS at 2.5% and you’ve covered your hosting costs forever. The principle will never need to be touched.
okay, so why aren't you doing that. if you can offer domains for $1, you can undercut all the existing players by a huge margin. that's a big opportunity, no?
You would need to pay the ICANN fief
Everyone would get a subdomain and so you only need to pay for 1 TLD.. that's <$20US/year.
How about DNS on a blockchain?
https://docs.ens.domains/learn/protocol/
Supporting DNS all up should be possible but organizing the other decentralized services (compute, storage) is the hard part
The name service is easy, namecoin did it more efficiently than ENS a decade ago.
The decentralized services need not be attached to some blockchain due to the resource constraints. But there are examples like Filecoin and such.
Aka DNS where if you lose your passphrase (or get phished) you irreversibly lose control of that domain.
But the tradeoff is that it’s free right?
That sounds like an unnecessarily overcomplicated nightmare.
They already work in Brave too or for other browsers if you install a webextention.
I might not be fully understanding the idea, but the difference here is that a let's encrypt certificate can be generated on the fly. domains are considered branding, and getting a 5 letter domain nowadays is impossible. The cost here is that you're renting a domain that others might want aswell, people don't really want your LE cert
X lets people own a 5 letter username for free. Renting names is not even industry standard for platforms. It seems like it's only DNS that charges for names.
The main thing standing in the way isn't technical feasibility, it's governance and control
Just FYI: there is handshake. It was on HN quite a few years ago: https://handshake.org
Maybe AT over TOR? A hidden domain / onion address is totally free... I would supporting this a really nice enhancement to the protocol.
It's been tried. People quickly distribute a JavaScript snippet to remove whatever monetization you put on there, as Namezero discovered.
Umm ever heard of .tk domains?
I'm a little saddened to see that each app has it's own collection type, even if they are able to use each others collections. That means that apps will only interoperate to the extent that they are explicitly designed to.
One of the beautiful (but perhaps not that practically relevant) things about ActivityPub is that a Mastodon user can subscribe to a Pixelfed user without anything special being done. It's like if Twitter, Instagram, Reddit, YouTube, and Substack all automatically interoperated.
AP intercompatibility is fun, but it starts to fall apart once you leave the safety of the "Note" (statuses) and "Question" (polls) types (which is what Mastodon, Pixelfed, Misskey, Pleroma, etc. all use as their primary elements). Everything outside of it becomes either loosely converted to a note (Mastodon does this for a lot of things, see https://docs.joinmastodon.org/spec/activitypub/#payloads) or is discarded by the instance. The only types that I know of which have been able to have native support from multiple AP implementations are micro-blogging and Lemmy's community system, with everything else essentially being a monoculture (or just extremely one-sided towards a specific implementation) due to a lack of interest from other implementations in providing full, standardized support. This isn't an inherent protocol limitation, but I do think that the community could do better in organizing standards outside of the core documents.
ATproto's system is a bit more well defined (you HAVE to abide by the lexicon/schema of the data collection to be accepted by implementations, reference implementation and some third-party ones have schema validators to do so) and allows for easier intercompatibility, but I do think that it could be a bit looser than it is right now (selective support for additional fields) to provide proper "sidecar" values in a record (they'll be in the user's PDS but it won't validate and could be rejected by indexers). Bridgy Fed does this to include the originating URL from APub and the original text, which third-party clients could certainly take advantage of if they detect that the post comes from a Bridgy account. (https://fed.brid.gy/docs#bluesky-fields)
See https://github.com/lexicon-community for the effort towards common lexicon
Yeah, atproto pushes this down to be a community/governance issue. Nobody is preventing apps from working out a common standard and supporting it. However, nobody is forcing them to do that either. So it will play out with natural dynamics. What atproto ensures is that there's a convention for strongly-typed foward-evolving schemas and how they get validated (and reverse domains specify the authority). But ultimately cooperation is up to the community.
For anyone who wants to read up more on this, another of Paul's (non-math) Notes (also, not the same Paul :)
https://www.pfrazee.com/blog/lexicon-guidance
This is a fine example of technical exposition. Very easy to read and understand! Like many others, before this post I hadn't the vaguest idea what atproto was; I always assumed it was some decentralized thing a la crypto. But this actually makes a lot of sense to me and it feels like an objectively good thing.
Except for one thing which has been pointed out by others. Anyone can access *all* of my data over this protocol. I like the idea that a lot of my data is directly accessible similar to the early web. But it would be nice if some of that data was only accessible if the accessor was permitted.
I don't really know much about auth tokens but I'm guessing they shouldn't be that hard to incorporate into this thing? When BlueSky or whatever app queries "@username.com/private/documents" the server expects an auth token, whereas it does not when the app tries accessing "@username.com/bluesky/posts".
Yes, something like this is planned in longer term.
The team decided to tackle public data first because scaling aggregation while preserving meaningful ownership is hard. So far I think they’ve succeeded at that.
Private or semi-private comes with a set of different challenges. Indeed scoped tokens are coming (via OAuth scopes) but that’s used for writes. The same mechanism could be extended for private reads in the future, like you describe. There’s questions about what shape private data would have though.
See https://pfrazee.leaflet.pub/3lzhmtognls2q and https://pfrazee.leaflet.pub/3lzhui2zbxk2b for recent thoughts on this topic from Paul who works on atproto.
I was ruminating about how Atproto would be great for re-thinking the peer review system for scientific journals.
Imagine a world where a preprint is “published” onto the social web, from which you could aggregate reviews/comments. I eventually ended up thinking about exactly what you raise - it would be great to have some degree of access control on this so both comments and published things can be selectively shared (with an option to make everything public later on, maintaining all the links).
I'm starting to feel many of "next big Twitter to fill its power vacuum" projects are tackling the problem slightly wrong - they all perfect the Twitter feature set, then hit the wall with user growth and content deprivation chicken and egg problem. People gather where there are others and that's still around the rotting whale.
That OpenAI timeline thing that just launched is more better approach, it solves content problem by just gathering data in background and feeding it to the user anyway. That particular implementation might not work but it sounds correct.
IMO, not much of value of Twitter for most users is in ability to post tweets, it's in data bandwidth. 99.9% of users don't post anything interesting, those might as well be local text file or oit of band shared filler content. The value is in content sourcing, so something like multi-social RSS reader with optional P2P should be the way to go. Just IMdimO, though...
While I use microblogging to frame the initial narrative, as explained in the article, this isn’t limited to Twitter-like products. Tangled is “GitHub on atproto”, Leaflet is “Medium on atproto”, and so on.
The problem with client-side P2P is you can’t do large-scale aggregation with consistency. Large-scale aggregation with consistency is what normal people expect from social apps.
Re: the OpenAI thing you mentioned, that's actually a perfect example of something atproto excels at. Since the data already exists in the network, you can crawl/index it and run your own tooling that does something proactive on cron jobs etc. See https://github.com/graze-social/iftta for some initial work in that area.
I like that labeler that shows which lexicons a user has in their repo.
https://bsky.app/profile/recordcollector.edavis.dev
I love your idea of a multi-social RSS reader with P2P underpinnings
Social networks rarely come up by being "the same but..."
They come up by doing something unique that can't be done on older platforms.
"Unique" is definitely not necessary. Look at the dominant social media platforms of the last two decades. MySpace -> Facebook -> Twitter -> Instagram -> Snapchat -> TikTok. Each of them was a minor evolution over the last, with the core feature set remaining basically the same. Lots of user-generated content, algorithmic recommendations, likes, comments, DMs, ads. There has really not been a revolution in the social media space since it was invented.
I see the features that launched them as substantially distinct.
The mode of interaction between users was wildly different from one to the other.
You may be considering their convergent evolution not what caused their rise in the first place.
...and this is why Nostr is different! You can build basically anything on it. A blog, a Twitter like application, a streaming service, messaging apps, the sky is the limit!
Here's a selection of things built on the protocol: https://nostrapps.com
Nostr is not different from atproto in that sense because atproto also supports arbitrary applications (the article uses Leaflet and Tangled as examples). There's a good comparison of atproto vs Nostr: https://shreyanjain.net/2024/07/05/nostr-and-atproto.html
Fair enough. But it is a more complicated protocol that, I feel, makes it a lot harder to diversify and build different applications on.
I really like the approach of nostr, but when I tried to use it, each client I tried would start me off following ecoin pump and dump influencers. It was really off putting.
I would’ve preferred starting off in an empty room, an experience more like using signal.
I've heard this multiple times but I don't know what clients do that? Most allow you to click something akin to the Following tab, just like Twitter, BlueSky, or what not.
Are you asking for an application that does not have other kinds of feeds?
Unfortunately Bitcoin has strong ties with the planet-burning-coin community.
I'm a simple man, I see a Dan post and I click.
I'm a bit concerned that the open web only won because of first mover advantage. What gives me hope is OSS winning.
I'd love to see something like atproto win though. It's clear that a major issue with social media is network effects preventing better apps from becoming popular.
AIUI, HTML won because it was free. There were competing paid for online hypermedia standards at the time, but many cost money. Anyone could make a web browser or server quite easily.
> Anyone could make a web browser or server quite easily.
Oh how times have changed. . .
> a major issue with social media is network effects preventing better apps from becoming popular.
One thing ATProto does is enable real competition in social apps, assuming they all run on the atproto fabric. One of the core hopes is that we can get everyone over to something like atproto once, to get them out of the silos, such that this is there last time they have to "move" their social network
The challenge will be that first move, yeah. Current social media companies have every incentive not to let users do that.
with every additional user, every additional post, the value of the open network only grows, and eventually becomes too big to ignore.
Sadly, it's hard to imagine a world where something like this will ever catch on. The target audience for "traditional" social media is very different from the niche of people who want decentralized social media. Most people just use social media as a means to an end and don't really care about the systems behind it.
If the answer is that most people should just make a bluesky account, that defeats the whole purpose because then everyone will still be on one or two large providers.
Even if everyone is on bsky.social, that's still a huge improvement on the status quo. It's not like the web isn't decentralised just because lots of people are on AWS - you can move away at any moment, adversarially if necessary.
Looking forward to the future where an app just sort of silently backs up your PDS/keys on your device until the day you need it and everyone finds out they can log into whatever platform replaces the one that blew up like nothing happened.
AFAIK bluesky isn't even properly federated yet, everything relies on a single "BGS" router server.
This is misleading. I’m not sure if you’ve read the article so it’s difficult to elaborate — it aims to explain precisely that.
There isn’t such a thing as “Bluesky getting federated” — that doesn’t on its own mean anything. In Mastodon world, “getting federated” means many copies of the same webapp emailing each other. In atproto, you don’t create many copies of the same app. Instead, it’s shaped like the web — individual users can host their data in different places, and apps aggregate over that data. There’s no point in having many copies of the same app.
The BGS server you’re referring to is the “relay” mentioned in the article. Running your own relay is possible (Blacksky does it, as mentioned in the article). It costs about $30/mo with the current traffic. However, note that a relay is very dumb (it’s just a retransmitter of signed JSON over websocket). It’s cool that anyone can run one but by itself this isn’t a vanity metric to chase. We’ll probably see more independent relays but usually someone would run one for a reason — to insulate a company or a community from upstream failures, or maybe to censor things (in repressive governments).
Not true, there are many independent relays (one went online today, in fact: https://bsky.app/profile/upcloud.com/post/3lzqkrrqap22n).
This also completely misunderstands the architecture. Things don't hinge on the relays at all and they don't act as routers.
Unfortunately, yes. The problem is, basically, people.
I think the other issue here is that there's a serious question of why bother "upgrading" your social media from closed to open when we've all figured out that it's bad for you, worsens your mood, and generally wastes your time?
If I'm going to delete my Facebook/Instagram account then why am I trying to pick up a new drug to replace it?
Those products are both owned by an ad company, they're incentivized to push all your buttons so they can maximize the time you spend looking at ads. Similar offerings exist which don't, and as a result have a very different vibe.
Social media is just a paradigm for multimedia communication and networking over the internet. It isn't inherently good or bad, any more than telephones, television, radio or the internet itself.
I think many people find social media useful. If you aren't one of those people, fair enough. But not everyone is angry and addicted all the time.
For a significant subset of users - younger people and children - a consensus is forming among specialists that social media is indeed inherently bad.
They said the same thing about video games, and the internet as a whole, and cellphones, and television, and magazines.
I'm not going to claim that social media can't have negative consequences for young people, lots of things do. But the hyperbole behind the discourse makes it obvious there is also a moral panic at work. In every case, technology is blamed for a failure of society's responsibility to educate and raise children properly.
IIRC peer reviewed scientific study was not saying that about video games, it was other less thoroughly researched sources and/or propaganda groups.
It is quite debatable whether it is inherently good or bad.
There is not a whole lot of scientific evidence for it being good from what I understand.
I would also argue that if you broaden the definition of social media too far you’re not really talking about social media anymore. Calling your friends on Signal isn’t “social media.”
"good" and "bad" aren't objective or quantifiable, so there can't be scientific evidence that social media is either.
And the definition of social media is broad. I would argue Signal is social media. It lets you form social networks, chat and share different kinds of media. That's all social media is. Social media is more than Twitter, Facebook and TikTok. And I have trouble with the argument that being able to form social networks and share different kind of media is somehow ontologically evil. There are hundreds of social media platforms around the world and countless apps integrating social features, but only a few American platforms seem to be a problem. So maybe it isn't "social media," maybe it's American culture and Silicon Valley capitalism.
The addiction loops, surveillance, data mining, radicalization through algorithms promoting extremist content, etc. aren't fundamental to what social media is, they're aspects of how specific social media platforms have been implemented. It is possible to have social media without all of those negative externalities.
[flagged]
u mad?
I feel very conflicted about this work.
On one side I find these ideas extremely compelling. This is aligned with the Indie web body of work, that pictures anyone having a personal website of their own content and ownership over that. And this page an article are beautifully put together.
On the other hand, we haven’t really seen a lot of developers adopting these standards for their own projects (like using this for their personal website or open source project). Nor from casual users (including people who make their own blogs and websites).
I am deeply concerned about the apathy people have towards the idea of ownership, openness and interoperability. It gives the idea that people just want to be fed TikTok and Instagram reels.
I respect the vision and the work. Will personally see if we can use this for our work. But I wonder how we make this into something that’s not just a micro niche hobby.
There's still some more work to do to make the developer experience simple enough that it's a no-brainer for people to pick ATProto up in anger.
But there's a lot of work developing on that front, and the next 6-12 months will be super exciting to watch.
The longer story is that most people don't understand that ATProto is more than just Bluesky, and the usecases are wayyyyyy broader. That's going to take more time to play out in the market.
Absolutely. In fact I’d love for my startup to run our own atproto instance separately from Bluesky, but it still looks like quite a lift. Lmk if you have some recommendations.
Basically our thing would give that ecosystem the ability to have personal pages that can look like Patreon, YouTube, Instagram and others
Are you trying to run a parallel network, or build on top of the existing one? "run our own atproto instance separately from Bluesky" sounds like you want a fully parallel network, but that should be pretty rare to need or want, so I'm not sure that's what you actually mean. An "atproto instance" isn't exactly a thing.
I’d prefer running our own thing separate from bluesky. We’d give people something like username.page.app and they’d make posts there. If people wanna follow on bluesky they can, and we provide a username that’s just the url.
I know we can do all this by just posting to Bluesky. But I want to give usernames, host the data on our end, and I’d prefer using the protocol but not be directly associated or dependent on Bluesky.
Okay, so this sounds like you'd want to run an appview + pds. (and possibly a relay, depending on some details.) Except for one thing:
> or dependent on Bluesky.
If you want to take this to an extreme, and are uncomfortable with how did:plc has not yet moved into its own org, then you'd want to also run your own plc server, etc. The problem with doing this is:
> If people wanna follow on bluesky they can
You lose this. Because you're now not running on the main atproto system, but instead a fully parallel one of your own.
Anyway, you could start on this by running a PDS via the reference implementation here: https://github.com/bluesky-social/pds and then building your own appview (application).
You could also take a look at Blacksky's implementation https://github.com/blacksky-algorithms/rsky and if you end up using it, consider throwing them a few dollars. Alternative implementations are super important!
Thank you for the detailed answer! Totally comfortable with the did implementation. Just trying to separate from their brand and just use the standard :)
We already built our own platform independently from Bluesky, so we have a timeline in the wrong post and everything. I’m just trying to give our users into opera ability. So that when they make a post on our platform, people can also follow your Bluesky and see on their timeline. Am I correct to assume then that we would not require our own app view?
You're welcome, yeah then that's a lot easier.
> Am I correct to assume then that we would not require our own app view?
Well, given that you have built a platform, and you then want to interact with the atproto eocsystem, that means you'd be making your platform an appview, in a sense. An appview is just a service that reads the underlying data from the network and does something useful with it.
There's hope for an independent but synchronized PLC directory: https://tangled.org/@microcosm.blue/Allegedly
You mean you want to host the personal repositories (PDS) for your users?
Ideally yes!
It depends how much you want to replicate. All you really need is the Application Data Server (or AppView) to aggregate the records you are interested in, serve them to your client app, and write them to people’s repos. I’ve been tinkering with the ‘personal website on AT’ idea space for a bit, tons of cool possibilities (and several people already have implemented cool AT integrations in their sites!). Happy to chat ab it.
HMU! I’m “shokunin.” on discord, leshokunin on TG / Twitter.
I’d prefer running our own thing separate from bluesky. We’d give people something like username.page.app and they’d make posts there. If people wanna follow on bluesky they can, and we provide a username that’s just the url.
I know we can do all this by just posting to Bluesky. But I want to give usernames, host the data on our end, and I’d prefer using the protocol but not be directly associated or dependent on Bluesky.
I am deeply concerned about the apathy people have towards the idea of ownership, openness and interoperability. It gives the idea that people just want to be fed TikTok and Instagram reels.
Can you expand on this feeling? Why is it deeply concerning? Why should people care about the abstract concept of data ownership? People were totally fine when they had zero ownership or agency over media and they were fed TV, books, movies, radio, etc. Most people do just want that, their primary motivation to engage with media is just to be entertained in that moment.
Now that they have places where they can publish stuff and their friends and family and maybe even some other people might see it, why should they care that they don't "own" their Instagram post, whatever that means?
It matters because your posts aren’t just entertainment in the moment — they’re your history, your proof of existence online. Platforms treat them as disposable. If Instagram dies or bans you, your years of photos, writing, and connections vanish. Owning your data means your work and identity survive these issues, if you want.
I think a lot of people treat their own content as disposable also though. I don't know if most people would really care to save or dig through their entire Twitter history, for example. The rise of Stories is evidence of this. We're moving from a culture of preserving ancient pieces of paper to swimming in a never-ending river of data where there's so many things coming at you that you just move forward and don't have a ton of time to look back.
People that really want to preserve and archive their content find a way to do it and manage it separately. I have all the pictures that I've posted to Instagram. I have anything I've written that I cared enough to keep. If and when IG dies or I move onto the next thing, am I really going to want to meaningfully preserve and transfer the specific contents of that walled garden somewhere else? Maybe. I can definitely see the value, but it doesn't seem super compelling to me yet.
There is something to be said for the uniquely curated walled gardens and the centralized trust and organization and opinions they bring. When I started an Instagram account, I didn't want to transfer my Facebook world, it's a new world with a fresh start. I didn't want the same friends, the same voice for myself, etc. I certainly wouldn't have wanted to dig through all of that to figure out what made sense to carry over.
An example: I have been a Swarm user for like, fifteen years. As soon as atproto has private records, I'll want to set up syncing that data into my PDS. It's kept track of a huge part of my life, and losing that would be sad.
Sure, this might matter to "very online" people. But I don't think it's the norm.
You asked me to explain why this matters. I did. I think your answer is fairly dismissive. Not everyone who cares about this is going to be some terminally online edge case. Unclear why ask a question if you are not curious about it. Probably not an effective use of our time.
I mean.. if you can still find the archives (pretty sure they're out there, but getting harder and harder to find), I have my name on lots of usenet posts from the 90s. But I'm pretty sure all my BBS posts, GEnie posts, etc from before that are gone - they would stretch back as far as December '84, IIRC. And there's probably very little left from before 2000.
And yet, I don't lament that 10-15 years of my online life have "vanished" - I was an ignorant little snot back then, and actually, am VERY glad they HAVE vanished. And thankfully I've generally used aliases / usernames instead of my actual name in most places (other than the usenet posts that were from my university account) so that wayback can't be used against me easily. Heck - I wish I could assert/enforce a "right to be forgotten" (vanish) on some websites. Rarely have I wished (especially in this current administration) that I was MORE visible / persistent online.
> People were totally fine when they had zero ownership or agency over media
Disagree. The punk phenomenon was largely about reclaiming that ownership and agency over cultural output, and it was massive in the 70s/80s/90s. The early web was very punk in attitude, with people basically self-publishing. Even in the '00s, there was still a clear distinction between "corporate" portals and grassroots.
This phenomenon where even creatives and intellectuals are Just Fine with playing in someone else's heavily-tweaked, hyper-monetized sandbox, is a new development.
idk if the normal user should necessarily care about data ownership, but I think the incentive structure it creates would be immediately legible to most people
I'm not sure what that means, can you give examples of good and bad incentive structures in this context?
sure, https://x.com
So mysterious, so edgy. Hope you at least feel better, because you've utterly failed to communicate a coherent idea.
Did we read the same article? It spends so many words answering these exact questions with examples and helpful illustrations!
Your question:
> why should they care that they don't "own" their Instagram post, whatever that means?
From the article:
> The web Alice created—who she follows, what she likes, what she has posted—is trapped in a box that’s owned by somebody else. To leave it is to leave it behind. On an individual level, it might not be a huge deal. However, collectively, the net effect is that social platforms—at first, gradually, and then suddenly—turn their backs on their users. If you can’t leave without losing something important, the platform has no incentives to respect you as a user.
Your question:
> can you give examples of good and bad incentive structures in this context?
From the article:
> Maybe the app gets squeezed by investors, and every third post is an ad. Maybe it gets bought by a congolomerate that wanted to get rid of competition, and is now on life support. Maybe it runs out of funding, and your content goes down in two days. Maybe the founders get acquihired—an exciting new chapter. Maybe the app was bought by some guy, and now you’re slowly getting cooked by the algorithm.
> Luckily, web’s decentralized design avoids this. Because it’s easy to walk away, hosting providers are forced to compete, and hosting is now a commodity.
I think you’re right that the average person doesn’t care so much as they just want to be entertained or reach a large network, but apathy is not an argument in favor of the status quo.
In fairness to you, I had originally skimmed the article and did later realize that some of my points had been addressed. In fairness to me, in this subthread I was responding to other commenters and asking them questions rather than commenting directly on the article itself.
At this point my argument is that the ability to switch providers is not a major concern to most users of these platforms. I don't want a generic social media hosting provider. I want the Facebook experience, or the Instagram experience, or the Twitter experience. I'm happy to be in the garden and on the rails because it's easy and tightly curated. I don't want some Frankenstein amalgamation of data from all these things. I don't want to shoehorn my Instagram world into something else.
It’s pithy because the request is pithy- if I have to explain the mechanisms at work here i doubt you’re ever going to buy into the theory at all. A short version is what Dan already said - the entire economic foundation of social media is predicated on high exit costs. ATProto takes substantive steps to lower them. The theory in turn is that new businesses will need to develop less extractive models of viability to survive, which will in turn read legibly to users as less exploitative (you decide your feed, you can switch providers, you can choose moderation layers, etc)
the entire economic foundation of social media is predicated on high exit costs
No I think it's predicated on creating a product that people like to use. That's the Step 1 that OSS zealots miss when they focus entirely on these niche lofty ideals. I highly doubt the average Instagram user is yearning for - or would even be enticed by - a version of that same experience that has a lower exit cost.
That's the problem with these Twitter clones. "It's just like Twitter, but RESPECTS your data ownership" is not compelling. Just create a freaking compelling and original user experience (the actual hard part that made the big platforms successful) and secretly do whatever you want on the back end.
The reason I like Bluesky is that they understand this, and that's why the protocol stuff isn't front and center. They're focused on product first, technology second. The tech serves to create a good product, they don't build the tech first and then hope people find the product acceptable.
There’s nothing compelling and original about the twitter UX compared to all the clones. Pretty much across the board it’s just posting short messages and following others.
The entire value of a social media platform is in the network. Accumulating and maintaining one is the actual hard part that made the big players successful.
It was compelling and original when the concept didn't exist, or at least hadn't been successfully brought to market like they did. In a world where Twitter exists, and has the network, there is nothing compelling about a Twitter clone.
None of these platforms started with a network. They weren't cooked up by evil investors and MBAs looking for a rent-extraction scheme. Nor were they designed by a committee of philosophical experts saying "oh we'll just copy their thing and make it more esoteric and confusing so that maybe one day we can aggregate content from 14 competing Twitter-like platforms and you can switch between them whenever you like!" They were started largely by kids goofing around and making fun things for people.
lol, ok
You are correct, and yet depends on ourselves to popularize and make this tech happen. Maybe, just maybe a newer startup out there will have a CEO/CTO that is deeply influenced by open social and delivers a success app that reaches the masses.
One never knows, but for sure it won't happen when we do nothing.
Has the experience of spinning up an instance been simplified?
What do you mean by "instance"?
There are several protocol components you can run independently, each filling a different role and having different complexity levels
If you mean the PDS, not sure if it is simpler than the unknown point you are looking to compare against. Bsky did just announce that you can migrate back to their PDS hosting to make trying out alternatives a one-way trip
I’d prefer running our own thing separate from bluesky. We’d give people something like username.page.app and they’d make posts there. If people wanna follow on bluesky they can, and we provide a username that’s just the url.
I know we can do all this by just posting to Bluesky. But I want to give usernames, host the data on our end, and I’d prefer using the protocol but not be directly associated or dependent on Bluesky.
So it sounds like multiple things then
1. Run the PDS, many people who would not group themselves with technical folks do this. (data hosting, handles)
2. Use or create an alternative client app, depending on if you want to intermingle Bsky data
3. Relay, moderation, algorithms. If you want to divest completely from Bluesky, there is more to run. If you build your own lexicon, you have to do all the moderation and algorithms, among the many other things.
I think 1 is the main thing. We have our own posts and UI but we just want to give people usernames and a way that shares posts in a way that interop with Bluesky. Any advice on a simple way to self host a PDS?
https://github.com/bluesky-social/pds
There are also a couple of discord channels and even a server for PDS self-hosters
https://discord.atprotocol.dev
Wonderful, ty
I really hope ATProto considered static-hosting by design.
Like RSS, people can host it on github pages, a service would poll it periodically to aggregate.
This would lower the barrier of entry by a large margin.
Maybe not all of bsky functions are viable, but I hope certain core part of "open social" can happen in this way.
But ATProto chose wss:// isntead.
I'm glad to see someone recognize the critical importance of authors owning their domain. Without that, you will alway be at the mercy of someone else. The rest is just technical detail.
Technically on Bluesky even if you don't own your own domain you can still move all your stuff to a competitor and everything will still work. The only thing you can't do is keep your original handle but no "links" to your account (posts, followers, comments) will be broken because there's a stable identifier for your account that's independent of your handle. You will still be verifiably the same person on the other server.
All of this is meant for 100% public data, right? Or is there a concept of visibility control? Can I create private communities, with data flowing just inside?
For now, yes, only 100% public data lives on the protocol (you can still, of course, augment protocol data with the stuff you hold in the DB).
In the future, the plan is to also enable some types of private data on the protocol. See these recent notes from Paul on the state of things:
- https://pfrazee.leaflet.pub/3lzhmtognls2q
- https://pfrazee.leaflet.pub/3lzhui2zbxk2b
There is also a Working Group that just formed to push the envelope on private data / permissioned spaces
Links to my own efforts on this
- https://github.com/blebbit/atproto (fork)
- https://youtu.be/oYKA85oZc8U?si=DIf09hu8-REw-yHj&t=3758 (presentation I gave last week)
It doesn't matter who controls social media; federated or not, social media is inherently harmful to humans. In a few years we will find out it's like cigarettes. Addictive and harmful, and needs regulation, if not outright bans.
But going back to this obsession about data. It's really an obsession with control. But none of you really have control. You hope that you can "engineer" your way into control of your own lives, of your data, even of the way the world works. But engineers do not have power. Businessmen do. Until you realize that, you will continue writing technical specifications like this, making micro-communities, and missing the big picture. Control requires power. Power requires money. If you can't monetize it, you have no control.
Whatever federated thing you think is going to win, isn't going to win, if there isn't enough money to back it. Because someone with money will just make the biggest "federated thing" (or not; it could be completely proprietary and billions of people will still use it), and eventually close it off once they have enough users. You cannot engineer your way out of money, politics, or human nature.
I tried to make the case that the design of web itself creates different dynamics than the design of today’s social networks in a demonstrable way (walking away from hosting is still easy so it became commodified). I get your pessimism but I wonder how you’d engage with that argument. I think it shows the shape of the thing actually matters.
Anisota is one of the more interesting attempts at a new presentation:
https://anisota.net/profile/dame.is
What happened to Solid Pod? Tim Berners Lee’s project? I feel like it’s another project of this type, and even predates AT, but ever since its announcement hasn’t made much waves.
We already had that in 2007:
https://en.wikipedia.org/wiki/OpenSocial
It was a complete disaster
Yeah, the linked article did make me smile because the previous iteration of OpenSocial - which had a LOT of buzz around it back in 2007-2010 - was such an ambitious swing that completely missed.
Apparently I wrote about it a fair bit back then, mostly noting how confusing it all was: https://simonwillison.net/tags/opensocial/
This doesn’t similar to atproto, which is what I discuss in the article. “Open social” isn’t an official term btw, I just like it enough to refer to this movement. I think recycling names from dead projects to refer to new concepts is fine. You’re welcome to ignore the article’s title.
Shindig https://shindig.apache.org/ was the reference implementation of this spec. Was pretty novel at the time.
Why disaster? Google used it successfully in their products like Orkut. It was a novel federation protocol at that time.
> Open source has clearly won. Yes, there are plenty of closed source products and businesses. But the shared infrastructure—the commons—runs on open source.
Lost me right there. Open source is the infrastructure that powers closed cloud. None of the openness makes it to the end user. It only benefits highly technical users and businesses.
Open source was made irrelevant (to non-technical users) by the shift to services and cloud.
What would in practice happen in a two user scenario where user A replied to user B, and later user B's repository gets completely deleted.
We have this cache thing via wss connections. Do they invalidate this messages from user B? Is user's A worldview now completely dead?
Owning a thing in the internet is a complicated topic i guess.
Preserving past information via copying what a user said so that it does not get lost maybe also in the interest of some users (equivalent to the webarchive). I understand that this contradict the whole "owning your data" premise, but fundamentally since it was open in the first place the thing always can be copied right?
Whatever content is produced in this "open social" network, some of it may have long lasting "value" to an individual. Is there anything to make sure that what they interacted with can not completely broken by the other site of the party?
If the user chooses to delete their account, it is a separate event on the network, which well-behaved apps should respect (and update their caches accordingly). So an app like Bluesky would display this as a reply to a deleted post.
If the user's repo just goes down (e.g. the host is down), then indeed it won't be available upstream and only cached versions will remain. It might be that the user is having problems, and the repository will be up on a different host later. It's up to each application how to handle this, but it seems reasonable to keep serving cached content since there was no explicit deletion instruction. E.g. I presume Bluesky would keep showing both replies in the conversation.
>I understand that this contradict the whole "owning your data" premise, but fundamentally since it was open in the first place the thing always can be copied right?
Yeah this is a tricky thing. The general guideline is that the user expresses intent (e.g. can delete post or entire repo) and well-behaved apps respect that intent. But of course there can be non-well-behaved apps that don't, or that permanently archive everything ever emitted.
I've been on and off thinking about this problem for years. Very excited to see an ecosystem popping up.
But I wonder, why JSON if the web is already built on HTML documents? Is it possible to just store our data in a web of authenticated html documents and have the protocol be built on that? Are there other open standards we can leverage to reduce the amount of new infra / protocols? I wonder if there's a less complex "good enough" mvp version.
The thing I miss the most in social networks is the ability to verify the provenance of information through social graph (chain of trust).
Ideally, if I see a post or comment, a process that I control should be able to establish whether the user is trustworthy, by asking the intermediate nodes whether the next hop is trustworthy. Essentially, I should be able to walk that chain of trust to see whether the information comes from a trustworthy source (and possibly input user's own evaluation of the chain links and nodes).
Unfortunately, social media companies do not let users access the social graph, because not being able to ascertain provenance of information is what makes paid advertising possible. It would also greatly help to combat bots.
The social graph, at least in Bluesky's own collection[0], is made up of the sum of follow records in individual repositories on PDSes. Anyone can enumerate them.
[0] A collection is basically an app's particular set of records stored in a user's PDS repository. Here's an example using the Bluesky CTO's follow records: https://pdsls.dev/at://did:plc:ragtjsm2j2vknwkz3zp4oxrd/app....
These are summed up by Bluesky's app server (app view) and then used to fill out following lists in apps that connect to that server through its API.
A fact checking or web of trust tool could pull these records down and use it for exactly this purpose. It could even weight by who they repost, for example.
There was this amazing demo I was given at the at proto dev con of a working web site using the protocol https://danielmangum.com/posts/this-website-is-hosted-on-blu...
It could definitely work as an alternative for the HTTP based web.
Thank you Dan for the post! I think two other things to point out:
1. Because open social has to actually compete for a user's business, any sufficiently mature platform build in the ecosystem will necessarily trend towards being more responsive to those users needs, which will trend towards a better product than the legacy crop,
2. Precisely at a moment where governments lean on large, visible corporate entities to enact desired policies, splintering that ownership helps ensure a resilient communications network
I think it would be better articulated if comparisons to ActivityPub were made. Those are I believe two competing visions of Open Social defined as communication protocol, not a platform. Otherwise it just sounds like evangelizing employer and that compromises the whole “open” concept of the article, fairly.
The author surely knows about competing protocols but prefers at. It would be just as easy to argue the author is biased if a comparison was made. Maybe more informative though.
I thought about covering others at first but it ended up distracting from the point I wanted to make. I tried to make a strong case for this particular vision in this article. I could write something separate as a comparison, or maybe let other voices speak for their thing.
In short, I don’t think ActivityPub solves any of the stated problems (ability to walk away without cooperation; forking products; giving new life to old data). In that sense it doesn’t mirror “open source but for data” and doesn’t match the premise of my post.
I don't believe anybody else can do it with good start you've made. I think above is nice headline for some more complete assessment as a follow-up article. indeed!
Awesome read!
Question:
> What’s more interesting is that Tangled prefilled my avatar based on my Bluesky profile. It didn’t need to hit the Bluesky API to do that; it just read the Bluesky profile record in my repository.
I'm a bit confused by this. If a bluesky avatar contains an image, isn't that stored (at least by default) within bluesky? Meaning that Tangled will have to hit the Bluesky API?
Or maybe Dan is saying that his own repository is not hosted with Bluesky in which it would make sense, if wherever his repo is stored is getting hit to retrieve the image.
If I understand correctly it doesn’t matter where the user’s profile is hosted, the point is the user has a store of data that can be accessed by multiple apps via the AT protocol, only naming convention separates one app’s data from another’s within a given user’s profile.
Yeah I understood that part, was just confused by this particular sentence
The “Bluesky API” is the appview, but the avatar is stored in your PDS. Even if you’re using a PDS hosted by Bluesky, it’s a different component that’s being asked to serve the avatar.
Interesting. Ok just saw this https://github.com/bluesky-social/pds
> Self-hosting a Bluesky PDS means running your own Personal Data Server that is capable of federating with the wider ATProto network.
So pds (personal data server) is like the container where you chose to store the data and it follows a certain standard.
If the container is hosted is bluesky, i still consider it a "bluesky api" but I understand the nuance better now.
Great post. Why use Social Media when you can use your own blog with RSS. I think it's because of Network effects, Social Media gives you an identity/address within a social network that has demand for your posts and a supply of posts that interests you. The Social Network itself should be vybrant for strong Network Effects to take place, this is inherently centralizing sorta like super markets. Thus the idea of Decentralization and Social Media don't go well together.
Decentralization is also more complex for the developers and particularly for the users, this creates a market for people offering services to operate decentralized systems, which ends up centralizing the network. This is how the WWW, Email, Git, BTC all got more and more centralized.
Good article, very clear.
Can you also do one for NOSTR?
The functioning is similar, albeit there is no need for hosting user data since it can be sent to multiple relays and live reachable to others from there.
Thanks in advance.
I probably won’t do it myself but this one should be helpful: https://shreyanjain.net/2024/07/05/nostr-and-atproto.html
Thanks for sharing. By coincidence (or not so much) I had lunch this week with a founder of bluesky along with a others and many names were mentioned that I'd never heard about. They were mentioned on that article and now understand better.
Quite a lot of food for thought today. Thank you for that.
nostr started as simple but now there's like a million NIPs.
The bit about aggregation is interesting, but it's not clear to me what the performance characteristics will be for very popular accounts. Presumably Justin Beiber's repo cannot be expected to handle 100 million WebSocket connections, all of which push out a message the instant he posts something. Is it vital to have more centralized hosts which can implement the sort of hybrid push vs. pull models that Twitter famously needed to implement?
In atproto, those websocket connections aren't between users's repos, they're between an application and user's repos. Bieber has one connection per application doing aggregation, not per follower.
Relays also provide an important scaling building block, such that every app can listen to the relay, which listens to all the repos, instead of many app<->pds.
And if Justin's pds goes down, then his followers won't be able to consume his content.
They read the content cached from the AppView, not directly from the PDS
I really dislike that BlueSky named their protocol the "AT protocol" [1], when we already have the AT command set which remains important [2].
[1] https://atproto.com/
[2] https://en.wikipedia.org/wiki/Hayes_AT_command_set
I can forgive them that. There are only 26*26 = 676 two-letter acronyms to go around, and they had the decency to call it "AT protocol" which makes it clearly different from "AT command set".
well if you think the name is bad, there's also Go, which is conveniently typed as Golang.
Huge missed opportunity not using Alice and Tom for the relevant initials lol
Sometimes I wonder - maybe websites were enough? Most people on most platforms are readers/consumers, not producers anyways. Maybe having a personal website was a good filter for publishing after all? Maybe personal websites + sites like hackernews that allows us to discuss our and other people's work is the best the Internet could be.
Maybe pianos were enough. Radio has made it so families no longer gather round and sing in the evenings and TikTok is even worse than radio
It depends; not everything that's newer is automatically better.
Web and websites did the heavy lifting of instant and world-wide information sharing.
With social media, open or closed, there are many non-obvious tradeoffs; I am not sure whether on the whole, we are better off with or without them - time will tell
Even if the information consumers are 99% of the users, making the features available for the content creators leads to much better content. Plus people want the ability to be able to post content if they need to. I shall point to the /r/ask* subreddits as an example.
Hacker News doesn't allow you to build an audience, so every post has to appeal to the average HN reader to get attention.
This is all based on the premise that you maintain ownership of the DNS. Once you lose control of your domain due to legal issues in the relevant country, those references/citations become invalid. However, this is still a great improvement over the current situation.
My sibling links a great post on this, but to say it in a slightly shorter way, the core of identity is a DID, not a domain. You can update the domain associated with your DID if you lose control of the DNS and it will all transparently update.
I’ve skirted around this in the post to keep conceptual clarity but you can always move away from the domain (as a handle) without breaking links. This is because there’s a more persistent identifier that represents your identity (or at least there’s an option of having one, and that’s the default mechanism). Links between records actually use that identifier instead of the domain handle.
For a more technical overview, see “identity” here: https://mackuba.eu/2025/08/20/introduction-to-atproto/
There's still a way: https://whtwnd.com/bnewbold.net/3lj7jmt2ct72r
It's one of those in-progress things that will get better and easier to use.
I've always thought it would be interesting to apply this sort of approach to health data. I own my data and control where it's stored and how it's accessed. And hospitals anywhere can interact with my data as needed while labs, doctors notes, etc. all live with the hospitals.
After developing my own rss reader[1] i think atproto could be the successor of rss. It is the same principal. The only difference is it is more complex and there are more components like the firehose, which is optional, the reader could just scrape their following themself. I think the resource usage is also only a problem if you want a view of the entire network, if we treat it more like rss it would be totally fine to just keep the portion of the network we are interested in. Its not as straight forward as rss, because of types like comments and likes. To notice them you need to listen to the entire network stream, but you do not need to save everything. I am really excited where this will go.
[1] https://ivyreader.com
Yeah. I was thinking of emphasising RSS as a comparison more but didn’t end up using it much. But I do like to explain atproto as basically typed and signed JSON RSS over HTTP and WebSockets.
Does this article mention anywhere that Dan is a former employee of Bluesky and I just missed that disclosure?
Thanks for the nudge, should deploy soon. https://github.com/gaearon/overreacted.io/commit/26d40321dc7...
wait what? where does he work now?
https://overreacted.io/im-doing-a-little-consulting/
This has already been covered many times but the design of the AT protocol requires a lot more resources than AP. Meaning it will be reserved for large organizations, while AP has a lower entry of threshold.
I want both to thrive, but I prefer AP for small communities.
Hm? Which part of the stack requires a lot of resources? Each part (PDS, Relay, AppServer (AppView)) can be run on a PI. Blacksky (not a large organization by any means and completely community funded) is almost running the entire bluesky stack themselves. IMO there's not much of a reason to run every part of the stack yourself unless you want to be completely independent from bluesky. At the very least if you want to host your own data then that just means running a PDS, which means finding the cheapest VPS you can that fulfills the min spec. Mine costs about 7 bucks per month and I never have to think about it. I'm also running a relay for no reason other than for learning purposes for about 30 bucks a month.
The AppServer, if you want index the full bluesky network (39M users) will run you about 200-300 dollars a month. Again, not really needed but you can if you want. There's also experiments people are trying out to only index smaller parts of the network, e.g. only users you follow which would mean hosting an AppServer would be even cheaper. FWIW, I like both protocols and want them to succeed, anything that gets people off of closed social media.
It sounds like the AT protocol is improving in the right direction, but the numbers still say it's highly centralized and therefore closed social media owned by one monolithic entity.
AP has its issues, namely not being at all consistent, but that trade-off allows anyone to run all the components of the network without breaking their bank.
AP is just “many small centralized services that email each other”. Its scaling characteristics reflect that - of course running a “little Twitter for 100 people” is cheap. But it’s a completely different thing. You could “scale down” atproto in the same way, but the point of atproto is that you can aim higher than niche islands.
ActivityPub doesn’t attempt to solve any of the same issues that atproto does — there’s no ability to have a full consistent view of the network. So it’s comparing apples and oranges.
I agree that AT aims high, maybe a little too high.
To me Fediverse is basically all the forums we had in the 90s and 00s, but now they can talk to each other. So with that said, I am principally against huge instances like mastodon.social and such.
While bsky is more like decentralized Twitter, meaning it also requires a significant chunk of the resources of Twitter to run consistently. Which is also why it has not decentralized yet, and probably won't any time soon.
We have to ask ourselves, what is the point of decentralization? What is the USP?
To me the USP is that no one person or entity can buy it, sell it, or ruin it.
If we had to start over from scratch then I think AT would be a good way to start, because it would presumably not be federated with bsky and therefore low volume. But as volume grows it becomes harder and harder to maintain for small groups and eventually they all consolidate into big groups that are easier to take over and ruin.
Basically it's a difficult decision we have to make, a trade-off between consistency, and decentralization. Which do you value more?
Me never having been on Twitter, and coming from that era of the 90s and 00s, I value decentralization and small groups participating in a federated network more than large entities.
How I envision the future of social media, all these actors like bsky, Twitter, Meta, Fediverse will continue existing side by side, but Fediverse will likely be the smallest and most niche of them all. Fedi has, to me, taken the place of all those old message boards I used to hang on, while the rest are mainstream social media that made its entrance onto the world wide web back in early 00s with Facebook.
Depending on what exactly you mean, this isn't the case. For example, running your own PDS is very cheap.
If you want to fully run a full copy of everything yourself, it's going to be more expensive, sure, but those costs have gone down dramatically over time. The most expensive bit is running $34/month: https://whtwnd.com/bnewbold.net/3lo7a2a4qxg2l
Yes, it’s interesting but there is no way the instantiation of the protocol (Bluesky) remains free of investor influences. It would require a great deal of capital for anyone to recreate the “network” in such an eventuality. So yes, it’s cool but not really Open.
for clarity, Bluesky is an app and ATProtocol is an Open Social fabric they built along with it and what Bluesky is built on top of
In the long-term, ATProtocol will be separated from Bluesky the company and end up as a standards and in some shared governance structure
There are already working alternate implementations of every protocol component.
So what, the governance is not open and what good is a perfectly written engineering spec without the actual place where people hang out? It’s just a lot of tech jargon masking yet-another “let’s make someone very rich” scheme.
They’re actually making first steps to bring it to IETF: https://docs.bsky.app/blog/taking-at-to-ietf
You can be as cynical as you like but I actually tried hard to avoid tech jargon in the article. I’d appreciate you giving it a read — happy to answer questions or discuss specific concerns.
They took VC a long time ago.
I’m really impressed by the quality of this post, as others have mentioned. It’s very well written, and the clarity of the drawings adds a lot to the overall explanation.
It perfectly illustrates the old saying: a picture is worth a thousand words.
I had never heard of this protocol before (even though I’ve been using Bluesky since the Twitter/X takeover), but after reading this, I feel even more confident that the migration was the right call.
I'm curious how did he create those illustrations - by hand or AI generated?
I’ve used https://excalidraw.com and exported to SVG. It’s very nice for quick technical illustrations.
The AT Protocol's approach to decentralized data repositories is excellent for empowering users with greater control, but it also creates vulnerabilities to automated abuse, such as bots disrupting event streams or fabricating repositories to distribute spam. I've integrated Sceptive bl0ck API to access IP and behavioral intelligence, which has reduced false positives from aggressive crawlers by at least 70% on my setup.
Personal opinion: Bluesky is "fedi-washing". Better Mastodon or Nostr.
https://gagliardoni.net/#20250818_battle_of_socials
I like the skepticism against Bluesky, and I agree that where VC money is involved things are mostly sketchy.
However, this post was about the at protocol, which seems like you just hand-waved in one sentence:
> The AT Protocol used by Bluesky has some interesting features, although to be honest I don't know how many of these are just impossible to achieve on ActivityPub or are just WIP lagging behind due to funding constraints.
I don't think the debate between them is super useful because their architectures are very different.
You also mentioned an issue with the bluesky relay, but others already exist so it's not techincally tied to Bluesky. Heck, I think the fact multiple can exist at the same, while degrades the social aspect, still makes it decentralized.
As for the identity management issue, they announced just last week that it's getting branched to an independent entity: https://docs.bsky.app/blog/plc-directory-org
> I don't think the debate between them is super useful because their architectures are very different.
Sure, that's true, but I, personally, care mostly about one question: Who holds the keys to the kingdom? In this respect, I think the AT Protocol fails spectacularly, mainly due to the lack of a credible strategy to implement really self-custodian identities.
> You also mentioned an issue with the bluesky relay, but others already exist so it's not techincally tied to Bluesky. Heck, I think the fact multiple can exist at the same, while degrades the social aspect, still makes it decentralized.
Yes, but this is also true for Nostr, Diaspora, Mastodon, etc. The difference being, last time I checked (and of course things might have changed in the meantime) with AT Protocol it was only possible to self-host part of the infrastructure (and hosting the relay is insanely demanding).
> As for the identity management issue, they announced just last week that it's getting branched to an independent entity: https://docs.bsky.app/blog/plc-directory-org
This is another example of gaslighting from Bluesky that just makes me angry. How in the holiest of Hells does an "Identity directory controlled by a Swiss Association" make the whole thing better?
Sorry, not buying it. I don't have a horse in the race, but won't fall for the marketing.
I agree with the sentiment and I wouldn't call Bluesky "open social"- I don't trust them either. But I still don't find these to be arguments to be against the protocol per se, which I find really interesting.
> Who holds the keys to the kingdom? In this respect, I think the AT Protocol fails spectacularly, mainly due to the lack of a credible strategy to implement really self-custodian identities
From what I've read, you can still own the entire stack from top to bottom, none of it is necessarily tied to bluesky. Even the identity managed being discussed only applies to bluesky, and whatever ecosystem subscribed to it; but in theory, you could create your own social platform with a new one (you'd obviously lose that ecosystem). But then again, this would also apply to Mastodon, since whoever owns the instance could always nuke it, and if you own your own instance, you need to build an network that trusts you. There's always an authority involved.
> The difference being, last time I checked (and of course things might have changed in the meantime) with AT Protocol it was only possible to self-host part of the infrastructure (and hosting the relay is insanely demanding).
Well it's definitely not the "50TB" you mentioned e.g here is someone running a relay on a $34/month vps and isn't going to accumulate more disk: https://whtwnd.com/bnewbold.net/3lo7a2a4qxg2l But it's importance is overblown anyway, it's just a json transmitter for signed data. I think the pds and identity managements are the better concern, and I hope there's a better way to decentralize those (if that makes sense).
EDIT: You're still correct that to fully spin up a new bluesky on your own you'd need an insane amount of storage for hosting all that data that's currently stored on bluesky (especially the did:plc and pds). All good arguments against the company, but that's only because people are choosing to store their pds repositories on bluesky. You could just as well point your repo to your own server and use a different social media. They could go under and someone else can create a new app view. I find that really cool; still leaves the identity issue open.
What is the incentive of someone to create an app and just pay for all the hosting involved?
Also, does everyone need to have their own domain name in order to have an identity cuz that seems like a non-starter.
> What is the incentive of someone to create an app and just pay for all the hosting involved?
If you're creating a social app, website, or whatever, you still have to host all your users' data regardless. This is just about the protocol you use which enables universal compatibility, meaning users have the choice to store elsewhere.
> Also, does everyone need to have their own domain name in order to have an identity cuz that seems like a non-starter.
Not really. Bluesky is a good example; when you first sign up it does it for you under their own top domain by default iirc, but the great thing is you can actually use your own domain.
Very well done. I hope this happens soon. I'm an engineer but not the software kind and I will look into this area more closely and try to support it. Thank you.
The protocol is cool, but Bluesky continues to trend downward. My experience on it wasn’t positive.
It could be interesting to see what other apps may be born out of the protocol though!
https://bsky.jazco.dev/stats
Yes, down in every measure over the last 6 months. I think it's primarily used by a lot of people to organize sockpuppet-aided raids on twitter towards people who are instantly banned by mass-reporting the second they create an account on bluesky. It's basically old 4chan for unfunny people who think they're better than everybody else.
I'd be positive about any distributed social protocol, though, no matter who delivered it. The problem is that this was a Dorsey project that he already abandoned and denounced because it took a bunch of VC and is just waiting for the rugpull. Now you're supposed to trust a bunch of people you never heard of and a few famous paid evangelists.
Any implementation if I don't care? Like if I want my Web application to support either ATProto, AP, and eventually whatever else is around the corner even if it means only have the lowest common denominator?
If you just care about the identity part, atproto uses a flavor of oauth.
Thanks. Well that's a good question, namely what do I actually expect out of federation.
In my case it's to remix pedagogical exercises. So I need :
- actual content (e.g. exercise and assets) to remix (imagine changing the language)
but also optionally
- author ID for attribution - a stable URL for provenance, again from attribution but possibly metadata (e.g. how many times played on origin server, language, etc)
How does blacklisting / moderation etc. work here. How does blocking work? How do people make sure to distance themselves from political enemies? Do the aggregator cache servers block certain user domains? How do you ensure that the aggregator returns valid and non-forged comments and likes?
> How does blacklisting / moderation etc. work here.
Anyone can run a moderation service. Users subscribe to the services they want. When you flag a post or account for moderation, you choose which service you send the report to.
> How does blocking work?
Blocking works by publishing a "hey I've blocked this person" record in your database. Applications then can use this to enforce that.
> How do people make sure to distance themselves from political enemies?
I'm not sure what this means.
> Do the aggregator cache servers block certain user domains?
They could, and this is also a property that's not really about blocking, that is, you could choose to cache only part of the network if you choose, which could be useful for various reasons.
> How do you ensure that the aggregator returns valid and non-forged comments and likes?
Cryptography, basically.
> I'm not sure what this means.
I'm trying to imagine how a situation analogous to Gab vs Mastodon may arise and play out here, or if the setup is different. Like would they just live side by side, with various frontend aggregators that present one or the other world to you?
> Cryptography, basically.
How do I, the user with a browser verify that? Do I need to use a different client program, or a browser extension? The aggregator site can show me a green checkmark or whatever, but that's just a claim by the aggregator. Am I expected to fire up a terminal window to compute signature validations to check if Alice really put a like on that comment?
Ah, I see. Yeah, you could build alternative clients that only show you part of the network if you want. Or run your own separate copy of the entire network. Because the two models work differently, there’s not an exact analogy.
You could also use one of the various PDS browser websites to go check their PDS, or a terminal tool, sure. I will be honest and the details of exactly how the cryptography stuff works is not my strongest point when understanding the protocol, maybe someone else can chime in and give you a more detailed description here.
I wonder if there's a at protocol usecase for replacing something like Disqus in blogs, personal websites etc.
AT seems cool — but it’s not built on the web. That’s a dealbreaker for me.
I can’t link to a Bluesky post. I can’t use Bluesky from the browser. It’s a silo’d network.
The indie web has the right idea: Use the web, build ontop of blogs, degrade gracefully. We could have central aggregators just like Bluesky crawling the web with microformats.
The polished experience with Bluesky has little to do with the tech and everything to do with financing and talent. Give me millions of dollars in grants and I’m sure I can build a polished UX too.
> I can’t link to a Bluesky post. I can’t use Bluesky from the browser.
What do you mean? Both of these things are trivial.
Here is a link to my most recent post on Bluesky: https://bsky.app/profile/steveklabnik.com/post/3lztkahefs225
You can sign into bsky.app (or deer.social, or anisota.net, or...) in your browser and post just fine.
99% of social media users don't care about any of this. If it's one extra step or configuration they need to learn, or includes a word like "protocol" that they need to understand, they won't use it.
Right, which is why the article makes the point that it’s invisible to the end user several times.
That’s also why it frames the benefits in the concrete way that shows up in the products — like products being able to riff on each other’s data.
My audience for this article is slightly technical so I put some focus on the technical parts. I don’t try to avoid mentioning the “protocol” for the same reason why teaching to make websites involves mentioning HTTP.
I 100% agree with you though and that’s important for broader communication. What people care about are good products.
That's one reason why Bluesky has gained a lot of traction. All of this is under the surface, not something you need to care about unless you want to.
I would contend not all of it is under the surface
The Bsky team regularly highlights other apps, custom feeds, and moderation choice
The important part is that you don't need to know about any of this to use the service. Of course, the protocol enables user-level features.
You don't need to know how any of those features or websites work to use them. I'd also argue that most users have no idea who the people working on the site are. (even if reading the replies under their personal posts gives a different impression)
The end user just sees they can subscribe to a moderation list that hides any post labelled as "Beans", or that they can have a feed next to their Discover feed that's an endless stream of people getting ligma'd.
Or that they can use their account to log into a seemingly unrelated site.
I really hope this doesn't catch on. Having ever random site on the internet being able to see every bit of my data sounds like a nightmare. Unless I am misunderstanding something.
This is for public data.
Think Twitter posts, StackOverflow answers, Reddit comments, etc. The stuff you don’t want companies to gradually start locking up for their own gains (as they tend to).
The protocol will likely be extended for private and semi-private data in the future, which would work by granting explicit permissions to apps. For now, app developers would keep private data in databases, same as usual.
They will only see the data you post publicly. You know, like with a personal website or with any other social media platform.
DNS is much more foundational and overlooked here. how does the world agree that "x.com" resolves the way it does?
How is it overlooked? It’s mentioned several times, including the mention that atproto builds on top of DNS among other things.
Loved the breakdown of a topic I wasn't familiar with.
I just can't help but think that the whole ethos of Open Social Media is misguided. I think that social media isn't good for us -- not just because of the big companies making it worse, but because the technology itself doesn't promote health.
It feels like trying to make cigarettes open-source. Sure you can stick it to big tobacco but at the end of the day you're still making cigarettes.
As long as the Eternal September remains on Twitter, there's nothing unhealthy about being on Bluesky. The format isn't the problem, it's the people who use it as a stupid culture war battlefield. Those people seem content to remain on Twitter.
There is a lot of “culture war battlefield” stuff on Bluesky too.
https://solidproject.org/
I think we tend to do a lot of idealization. The vast majority of non-techies don’t care whatsoever about decentralization.
Yes, which is a point the article repeatedly makes. I totally agree with you. See also https://knotbin.leaflet.pub/3lx3uqveyj22f/ which I linked to close to the end of the article.
One can explain features that are possible on ATProto but not Big Social without talking about "decentralization". My pitch to the non-technical typically follows or covers these points
- Social today is not healthy
- Single account instead of N
- All apps keep your data in your database
- User level choice over apps, algos, moderation. Esp algos, my social media usage patterns have changed for the better since I started using custom feeds
- Real competition in social media
- Take back our shared digital experience from a handful of billionaires deciding everything and keeping us locked into their attention economy
the view of social media as just data that can be rehosted i think misses a large part of its success
Twitter and Instagram are fundamentally different scenes bc of their restricted formats. Twitter has/had character limits. Instagram was primary for photo sharing. if you try to cram a long political rant in an instagram photo or description.. it is fighting against the app format and limitations. This sculpts the apps "culture"
im sure it can work, creating a hodge podge of random unstructured content.. like the blogosphere or Facebook. But it wont displace the walled gardens. You can make a Kiki app that only shows images, but youre following someone who is using Booba app which allows him to post pictures with descriptions. And suddenly nobody really knows what to expect
Designers of atproto actually agree with you so the data is not unstructured! It’s structured by schemas (called “lexicons”) controlled by app developers.
Data in user repositories is treated as untrusted input by apps, and rejected if it doesn’t pass the corresponding schema. Schemas are evolved in a backwards-compatible way with a nudge towards future extension (eg open unions are default).
That’s exactly why you can’t make a 500 character post on Bluesky. The Bluesky server will ignore your record as being invalid.
ah okay, i hadnt come across this. seems like a potentially viable strategy
> Schemas are evolved in a backwards-compatible way with a nudge towards future extension (eg open unions are default).
unions of schemas? Doesnt that lead to a facebook-ized kitchen sink app that does everything?
you can effectivelt filter to .. say .. only photos with a photo-only app. But that doesnt form a app/schema culture
See here for how schemas are defined: https://atproto.com/specs/lexicon
I meant specifically that “unions” default to open. Let me give you an example. A Bluesky post may contain different types of attachments. Image, gallery, video, etc. That’s a union of known schemas. However, that union is open. That means that generated type will include “or unknown” as the last possible value. Apps are expected to ignore that case when pattern patching since they wouldn’t know how to interpret it. However, that leaves Bluesky with ability to later officially support other types of attachments. Because more potential types could be added to the union layer (making some previously “unknown” stuff typed).
This has an interesting consequence that third party clients can “recognize” some type before it’s official. Eg some third party Bluesky client could choose to explicitly support a “Leaflet document” attachment to Bluesky posts, governed by Leaflet schema. If this pattern gets popular, Bluesky could be motivated to also support it, and even to reference a Leaflet document as one explicitly noted subtype of that union. Or it could keep ignoring it as one of the “unknown” values.
More on social issues around lexicons here: https://www.pfrazee.com/blog/lexicon-guidance
Thank you for the links. Learned a lot
It does kind of sound like the app that recognizes the most schemas will likely win. It seems there is no benefit to using a limited schema app - and you'd end up missing content that the creator assumes you see. Ex: You can make an app that only shows pictures, but the people posting pictures will likely assume you also can see.. their Leaflet docs or whatnot. You can't force restrictions on the users - ex: if you use my Freegram schema then well you can't add additional stuff - b/c that's the social space we're building
Unless I'm misunderstanding the doc, the lexicon seems also very limited in what it can express. You can't specify images have to be black and white, or video clips have to be shorter than 15seconds. Or replies have different restrictions from posts.
It's maybe impossible to encode everything - but furthermore a lot of the "app culture" is just due to the app design. The photo description on instagram can be extremely long. You can write a diatribe about.. whatever. But it's hidden behind an collapsible button - which make it so people don't typically engage with it.
That's all to say, I think ATProto is very cool - but there is (maybe unfortunately) still a space for the walled gardens b/c they're providing a certain subculture.
> Twitter has/had character limits. Instagram was primary for photo sharing. if you try to cram a long political rant in an instagram photo or description.. it is fighting against the app format and limitations. This sculpts the apps "culture"
A big part of Twitter’s “culture” is creating “threads” to work around the character limit, which kind of defeats the point.
Every day I am more convinced that we don't need these global conversation platforms at all.
I know this sounds pithy, but why are you here then? Or do you think that only other people shouldn't have them?
I should have been more precise. We don't need microblogging.
This "Open Social" stuff is too complicated I think. I don't see what's wrong with having your own website. It takes a couple of minutes with the help of GPT to write an HTML 1.1 basic page and host it from home on your own hardware. Or better yet, don't have an online presence at all.
I'd argue that ATProto is the next iteration of open internet. It's what an internet where accounts/identity and verifiable content attribution are built in, and nobody using the technology needs to think about any of that.
There's a space here where we can move from nobody having smart phones or hosting digital presences -> everyone having digital presence provided by Facebook/Instagram, and icloud/google accounts -> Accounts w/ something like ATProto where its your stuff, you get to decide where you keep it, and you get to decide who gets access to it.
I have my own site. But the people love engagement - it motivates a lot of content creation. Back in the day we had web log rings and WordPress comments, but that stuff is dead on the modern web, it's too adversarial an environment. My blog has no meaningful engagement, I don't even know if anyone ever reads it. It works for me since I write primarily for myself, but this is just not the case for most people
Personal websites are great. They don’t do large-scale aggregation which a lot of people enjoy and look for. The article is about an approach to large-scale aggregation with important properties of personal sites. For what it’s worth, you can host atproto repositories from your home too — some people run them on Raspberry Pi.
Bit apples to oranges, isn't it? You're not exactly able to do tiktok with personal websites
i'm interested in making a new social network on atproto. does anyone have resources to recommend where to start?
https://discord.atprotocol.dev
Lots of people there to direct you to specific resources
If you think that there are specific resources, you can just post them here. The fact that you didn't, and instead linked to a corporate walled garden, is very suspicious.
Suspicious of what? What do you expect to find in the corporate walled garden of Discord?
I posted links in another comment once I was back at a computer
https://atproto.com/guides/applications
Great read, love these ideas
This looks to be turning into a curious case study on how network states develop.
A complementary article I wrote: "Nobody cares about decentralization until they do"
https://kyefox.com/nobody-cares-about-decentralization-until...
This is a beautifully written introduction to the architecture of AT, but after much consideration I will still remain on ActivityPub for the time being.
I love the idea to define data formats first, and then build on top of that. It's the only way we should do everything, because if you have the data, everything can be re-built on top. Unfortunately the way AT works is all contained in here:
> Social aggregation features like notifications, feeds, and search are non-negotiable in modern social products. [...] Coincidentally, that’s the exact mechanism you would use for aggregation. You listen to events from all of your app users’ repositories, write them to a local database, and query that database as much as you like with zero extra latency. [...] This might remind you of how Google Reader crawls RSS (rip).
In order for the social aspect to work, all data must at some point or another be aggregated in a single place. Said single place must then be huge, as it scales linearly with the activity of the network; in a still-capitalist world this means that this single place will always be run and led by money, unless some extraordinary volunteers-based project like Wikipedia springs up. The example of Google Reader is to the point: it was the biggest tech company at the time, provided a service for free, and decided to stop because it didn't care anymore.
In fact Google Reader is a very good comparison. AT works exactly as if you had websites, each with their own RSS feed, and then a big relay called Google, providing search, feeds, notifications, ... but as we all know by being the middleman between producers and readers Google gained an astonishingly high power. That is the business model described by Cory Doctorow when he talks about enshittification. Put yourself in the middle, and everyone will depend on you.
The only way an AT based product works at scale, ie with everyone easily talking to everyone, is with one or a few mega intermediaries between everyone of us. I fear this is not going to solve any of the issues we have.
What is different in ActivityPub ? Intermediaries are definitely useful for some services, but once your network is built you don't need them anymore: content flows directly between the repository, no middlemen needed.
In short: if we want a single network at large scale, AT requires large scale centralization points, while AP certainly needs them but could survive without them. Either we face that, or we start exploring and living within small-scale networks
Well, atproto can scale down too if you’re content with a subset of data. In other words, it’s not that atproto requires you to have a full network, it’s that it lets you build apps over whole network. ActivityPub doesn’t offer an approach to do that. So we’re not comparing apples to oranges.
I do think that you’re underestimating the value of open network for large-scale aggregation. Yes, for big open world you need big indexes. But indexes don’t have to always done by single entity. Some can be shared. Resources can be pooled for apps that need a materialized index of the same data. We haven’t really seen how this plays out yet because big indexes only existed behind the doors so far.
And if all else fails, limiting the scope (by time or community) works in atproto too. It’s just… not as fun :)
The subtext of my comment is that the people doing and pushing for atproto are not building for small networks but for big networks. Yes, technical solutions can be found; the problem is, as usual, not technical but rather social. What kind of organization can build and maintain world-scale indexes ? What kind of people can be in those organizations ? There is very little reason to believe that those intermediaries will not behave the same way intermediaries have always behaved, if we don't also challenge the socio-economico-political system they are developed in. Which developers have an automatic reaction to not do. That's where ActivityPub changes: the social aspect of what it takes for viable communities cannot be evaded. Sometimes with bad consequences though.
I guess I just don’t believe that any solution where you don’t have full view of the network is aligned with what normal people want. Maybe AP is on a bigger mission to teach people that they’re “wanting wrong things” and actually you should enjoy a system where everyone sees a different like count and half the replies are missing. I think it’s a dead end.
That's a purely personal point of view but I don't think the AP people claim that "people want the wrong things", but rather that "the things you want have a cost and we're not hiding it".
The fact that likes count and half the replies are missing is not specific to AP but to implementations not willing to actually follow the AP community: in fact the SocialHub (https://socialhub.activitypub.rocks/) community is the place where all coordinated development happens, and solutions to those issues have already been designed and implemented in multiple softwares, with the notable exception of Mastodon. Maybe that's the issue: people keep looking at Mastodon to understand AP, but Mastodon is one of the worst examples of AP, even when talking only about the technical domain. It doesn't implement the C2S API, it doesn't have portability, likes counts and missing replies as you said, ...
> That's a purely personal point of view but I don't think the AP people claim that "people want the wrong things", but rather that "the things you want have a cost and we're not hiding it".
I think that's a great way of putting it, and it it's at the root of a lot of problems we have today. Our society increasingly encourages people to make money by coaxing other people into doing things whose costs are hidden.
Mastodon/AP is difficult to discuss because pointing to flaws of Mastodon leads to people saying "it's just a Mastodon problem", but AP doesn't by itself specify much so it's hard to critique it too. If there's a "flavor" of AP that's competitive with what atproto solves (can "walk away" without cooperation, can "revive" and "remix" data from other apps, can "fork" products with all their data), I'd like to read a condensed summary of that architecture.
That's why I always say AP-in-practice. It handily avoids any "but the spec says!" diversions.
What I found most exciting while reading this article was the promise that you can “up and leave” and take your data with you without breaking links, because the links are based on a domain name you control.
This is not so in ActivityPub. The data you post is owned by/controlled by the instance you're on. In the language of the article, you're still a row in somebody else's database.
I was on Mastodon for a while until the instance I was on shut down. I naively assumed that I could export and re-import my posts but that was not so. Everything is deleted. I technically have an archive of it in the form of some JSON files, but as illustrated by the article, this is now dead data. The same will happen again if/when my current instance shuts down. The only way around it is to run my own instance, which for the vast majority of people is a ludicrous proposition.
If we're talking strictly ActivityPub, they're exactly the same: servers where your data lives. AT's PDS give you access to your data, but proper AP servers also do that: you have your collections, and all your activities in them. The trick is to recognize which software is actually a proper ActivityPub software, and unfortunately Mastodon isn't one of them. The current issue is not with ActivityPub.
"Open source has clearly won." is this a joke?
Dominant programming languages, servers, package managers, UI libraries and components, and much development tooling (IDEs, language servers) is largely open source. This wasn't the case when I started programming.
[dead]
[dead]
I can’t help but cringe whenever I see a Bluesky fan stubbornly clinging to the past by calling X ‘Twitter.’ This one went even further - using the old logo and even the outdated URL.
My post retraces a historical progression of social media, and it was indeed called "Twitter" at the time. You can scroll a bit down and you'll see "X" a bit below. In general, actually reading the articles you comment on won't hurt you.
I did read the thread — and I’m specifically referring to the third (and final) diagram where it still literally labels X as “Twitter.” No amount of timeline layout gymnastics explains that. It feels less like faithful documentation and more like a pretext to take a swipe at the acquisition by “some guy,” which then segues into the whole “getting cooked by the algorithm” bit.
That's clinging to straws. Many of us still prefer to call it Twitter since the new name makes no sense, especially when placed in a sentence.
That was an example of a social media company changing, with users not being able to migrate their data. Scroll a bit further and you'll see X.
This is such an important idea -- and yet I feel like the hyper-individualized "bluesky" implementation pictured is a less good practical idea than Mastodons more "server/host" way of doing things.
I get that theoretically the two should be similar or even identical in practice, but I feel like the way Bluesky goes so hard at "literally individuals maintain control over their own stuff" is kinda too hard for most, and that Mastodon's "just trust the server" way, which ABSOLUTELY has it's own problems, of course -- is still better, mostly because we have better practice in this style, in the form of good ol email.
I've tried to lightly allude to Mastodon here:
>Social aggregation features like notifications, feeds, and search are non-negotiable in modern social products.
Conceptually, Mastodon is a bunch of copies of the same webapp emailing each other. There is no realtime global aggregation across the network so it can only offer a fragmented user experience. While some people might like it, it can't directly compete with closed social products because it doesn't have a full view of the network like they do.
The goal of atproto is enable real competition with closed social products for a broader set of products (e.g. Tangled is like GitHub on atproto, Leaflet is like Medium on atproto, and so on). Because it enables global aggregation, every atproto app has a consistent state of the world. There's no notion of "being on a different instance" and only seeing half the replies, or half the like counts, or other fragmentation artifacts as you have in Mastodon.
I don't think they're really comparable in scope, ambition, or performance characteristics.
Yeah, the goals of atproto are REALLY GOOD ones. The only thing I'm skeptical of is the extent to which "centralized state of the world" really needs to be a core of the protocol -- and does that sort of thing introduce the same kind of centralization that makes it vulnerable to enshittification?
My gut is that IT DOES. Put differently, there's presently nothing about TECH of the Mastodon model that prevents building tools that achieve similar "centralized everything" goals on top of Mastodon; only, you know, people and trust, the easiest part </sarcasm>.
Mastodon's probably the best long-term model and it's email that makes me think that.
In my view the atproto approach asks the users to make fewer required complex decisions, but gives them the freedom to make many voluntary ones. If someone wants to use a particular application, they basically just need to sign in. If they don't have an existing ATProto account, they can just make one, in the flow of the application they're signing into. Later they can chose different clients, or different infrastructure, or move their account, to their own hosting even if they want.
Mastodon requires a complex decision upfront, which server do I trust, which is analogous to where you create your account on ATProto, but unlike ATProto, doesn't give the tools to seamlessly transition later.
The trust lens I think is a good one. You want to let different users make different tradeoffs in effort without having that leading to a worse experience..
I mean, this might depend on who your intended audience is? As perhaps pie-in-the-sky my desire is, I'd like to see one of these things replace twitter (as opposed to smaller communities.)
And it seems to me that the more frictionless model is the one that looks like something people are used to; just "sign up with a thing."
That does leave the interconnection to the servers and others, but that may be how it has to be?
Bluesky is incredibly just "sign up with a thing." Except even easier, because you don't have to pick an instance first.
"Sign up with a thing" -- but then what about after that? You've made a bunch of stuff, what happens to it?
Offloading THAT mentally to a different "service" or "account" I think is easier than this all-in-one thing.
Again, I like the IDEA a lot; if you'd presented it to me like in 2000 before a lot of this stuff took off I would have been all about it.
Today? No, I think it's reasonable to offload that to so-and-so-dot-com, each as a separate account. Like the phrase "I have a facebook" always sounds weird to ME, but I think that's "the way."
They should be interoperable... I should be able to take my account from bluesky and host it on any other pub server
The server shouldn't need to be specific to mastodon/bluesky networks either
Ghost (the blogging platform) is kind of a peek into this — you can host your microblogging account there and interact with other activity pub networks like mastodon
this is the promise of the activitypub standard, anyone that uses the standard can interact with anyone else using the standard...
Oh, some fancy British Indian Ocean TLD; totally trustworthy and morally right!
Open source has clearly won.
This is clearly a wild claim that almost undermines the rest of the argument, but to the extent that we can accept that there are open source software packages that decision-makers deep in that industry will reliably choose for their business...it's not clear how this revolution will extend to "regular people." They just want easy. Make something as easy and fun as Instagram. They don't give a crap about all this, they don't want to think about it.
In the tech industry, open source has clearly won. You're right that most end users don't particularly care. The engineers building solutions definitely care, and prefer to build on top of open source dependencies.
That first point is so true, as a programmer I never use open source