Post
formats over apps
4:05 PM · Jan 18, 2026
As someone who has recently written a DOC parser, boy oh boy is that a weird format.
The article is superb though, as always. Thanks, Dan.
What's making me feel old instantly about this is how the whole thing starts with explaining the concept of files and file types. 😬
haha i’m sure some need a refresher but mainly it’s to sharpen the argument. i think it’s easy to forget why exactly files are good and what makes them file-y
i swear i felt like i had deja vu when i read the first few sentences. hot damn i love filesystems
I might have (in a small way) help reinvigorate this piece, excited to give it a read!
bsky.app/profile/dana...
dan
@danabra.mov
· 3mo
omg i have a draft called post "a social filesystem" that i still haven't finished, been lingering for months
No problem, pretty wild how quickly you were able to pull all of this together haha
Such a great post . Thank you for taking the time to set this out so clearly. Lots of synergy with my experience in trying to create open networks of cultural heritage databases in the 2000's. Data is permanent (and should be archivable i.e. self documented) while apps are disposable.
This is basically what my #AtmosphereConf presentation will be about.
Maximally useful lexicons, not minimally represented DB rows:
bsky.app/profile/nick...
Nick The Sick
@nickthesick.com
· 4mo
I just submitted to present at #ATmosphereConf
It'd be great to be able to talk about all the things that I've thought about in regards to my project @bookhive.buzz
worth mentioning that i was using a scrobbler that i wrote in an hour or so, and publishing the teal.fm records was the easiest part of it
Okay, I'm very much onboard with this. Somewhat more hyped actually than when Bluesky initially launched. Feels like this is some civilization-preserving layer of technology
Is there a way to mount AT Proto data as a virtual file system? That way a coding agent, e.g. Claude Code, could work over that directory?
tangled.org/oppi.li/pdsfs
at the moment it is read-only though
true for social, but also true for SaaS. it sounds funny, but it's not even funny how powerful plain old files are instead of whatever expensive distraction 😅 slap fs snapshots and/or jj on it, read and manipulate thim with a multitude of editors.
a good web FS storage mechanism is still missing.
such clear quality writing, thanks for this. first push i had towards starting to make stuff for and on atproto
This is one of the most awesome posts I’ve read in a while. Actually incredible. The motivation is so clear. I’ve never really been sold on atproto, I joined bsky because the community was better over here, but wow now I’m sold. Need to do more research on activitypub and friends to get perspective
but I suspect they have a very different problem space which I suspect I won’t appreciate as much. Anyways, usually don’t comment on posts but this was really really well done so I wanted to leave a note
> It would include everything you’ve created across different social apps—your posts, likes, scrobbles, recipes, etc. Maybe we can call it your “everything folder”.
friendfeed almost had this.
Great writeup!
Loved the bit about people building stuff on before they even have their own website up, followed by a live updating list of your own.
Hi Dan! Thank you for the great post. I love how deep into the weeds it goes, and I definitely learned a thing or two about ATProto. I worked on baq.dev a few years ago which built on a lot of the same concepts, and I hope to see more of its features make their way into ATProto in the future!
Great post, gonna steal that metaphor when explaining atproto from now on
Also love that blento is right at the top of your pdsls screencaps, “.app” domains for the win 😁
This is a strong contender to become my favorite article of all time, closely rivaling & echoing this great write-up by Ruben Verborgh
ruben.verborgh.org/blog/2017/12...
This is a great explanation of atproto for technical audiences.
(for nontechnical audiences I prefer using a publishing metaphor: the PDS acts like an agent, the relay is a newswire, and different appviews are like magazines that decide whether or not they want to publish given types of content.)
It’s not only a great intro to atproto (which I didn’t know before this) but an exemplary way to introduce a sophisticated system.
(Reminds me of “React as a UI runtime” which was literally life changing for me.)
overreacted.io/react-as-a-u...
Had a peep and immediately saw that this needs a more detailed reading. Again. Very interesting. Superb. Thanks.
You’re really good at breaking stuff down, while still keeping the reader on track. Ever considered writing a small book on learning atproto?
This is insanely well written and a great breakdown. As a developer myself I’m becoming increasingly interested in the possibilities of the AT protocol and I thoroughly enjoyed learning more about the workings of it!
tangent: farcaster is faltering and forking. now many of us are paying more attention to what yall do. ever in search of the elusive decentralization. respect.
@dan_abramov Just published an article featuring your inspiring journey — from being self-taught to shaping React. Thank you for everything you’ve shared with the dev community! 🙌
So every app can read every other app's "posts" and info?
Privacy is not an option? Just asking, I'm not a dev, so probably stupid question. ;)
the protocol itself only "helps" with public data at the moment, so private data would have to be remain stored per-app, just like before. in the future, it's likely that the protocol will be extended to support let you move some forms of private data outside the apps too
This feels close to solidproject.org
How does the ATmosphere protect against abuse?
It sounds like it’s a free database that you could store anything in 🤔
there’s multiple different layers depending on the pattern. it’s maybe helpful to think of PDS (hosting), relay (retransmitting) and app servers (actual app backend) as separate things, and then at each of them there are different possible patterns of abuse with different solutions
pardon the dumb question maybe, is some work being done already on about bookmarks? would it make sense? I'd love to bookmark all your stuff but retain those bookmarks in my personal data (same as posts, files etc)
there's which sort of does this
Semble
@semble.so
· 3mo
New tagline for Semble? 😁
"make your bookmarks atproto’s problem"
Yep does this, we also have a Semble collection with other atproto social bookmarking tools (hopefully we all interop at some point) semble.so/profile/cosm...
This reminds me of Tim Berners-Lee’s Solid protocol and personal data servers. Very cool!
solidproject.org
I like where Internet is heading after reading this. I try to switch to files since I discovered how much hustle it is to backup things I stored in SaaS apps.
Now, with Bluesky and Obsidian promoting being owner of your content it feels a bit easier.
I like where this is going, but since you use folders for metadata(e.g. type, provider) you've really defined a database, and kind of broken the concept of files/folders.
It doesn't matter where I keep my .svg files - my PC knows what to do with it because it has a .svg file extension...
That works when used with an application which uses folders that way, but the article is missing detail on how the application would know a file is a part of such a folder structure (like a git repo, or video editing project, etc)
The bit where metadata is cut out should clarify that
Good point, and good examples! In both of those cases you need other files that only exist for the purpose of tracking where users are keeping their files.
Also in both those cases I can have any folder structure I want, and send you either main.js or main.mp4 and you'll know what to do with it.
How did you write the Ukranian script in your profile? Is is a program? How can I get it?
works well for structured data, lingua franca of the web and more. you have blobs for binary stuff and other escape hatches. works well in particular for things that later project into html (so, social apps). it's more about upstreaming stuff from databases, but i thought files help as metaphor
I do hope something like amazon-ion.github.io/ion-docs/ is used more widely.
e.g. deterministic serialization amazon-ion.github.io/ion-hash/doc...
storing blobs in JSON is weird
Great article! I enjoyed reading it very much, especially as I'm also working on a file-based system for CRDT sync, which is proving more challenging than I expected ;) receipts-app.com/en/docs
This is interesting, but two issues:
Where's my secret key? All I do is sign into Bluesky, so I own no key. All my data is owned by Bluesky, even if publicly visible.
What about privacy? It seems like everything in the atmosphere is public. What if I want all or some of my likes to be private?
can you define your concept of ownership? your key is held by your hosting. you can migrate away from bsky hosting if you want, check pdsmoover.com for how
the protocol is currently focused on public data. private data is eventually coming but maybe not very soon.
Very helpful write up!
But I'm still bothered by the last, hardest problem of identity - the ownership and final authority. IIUC, we're still trusting a central authority to issue and maintain the DID authentication?
And if I lose my keys or pw, the central authority won't let me back in. Correct?
there’s two methods you can pick from. did:web doesn’t use a registry but then you’re locked out if you lose the domain it’s tired to. whereas with did:plc you need to not lose your key. normally your hosting holds your key so in practice you need to not lose your credentials.
In the case of did:plc, does the DID issuer also retain the ability to exercise control (e.g. deletion/transfer) over the keys?
(I'm not an IT guy, but I *think* the question is essentially, does the issuer also have the private key to the account? or just the hash, to verify?)
no, the registry doesn't know your private key. you're able to update your key by submitting signed operations, which the registry can verify because it knows your public key
Are there other possible operations in the spec? Not just changing, but a join/link/unlink?
Link: I might want two pseudonymous accounts that aren't publicly linked. Later down the road I might want to verify that I am indeed both accounts.
Unlink: Brand account temporary delegation. (e.g. POTUS?)
There is an AlsoKnownAs field used to point domains at DIDs.
There isn’t anything about linking DIDs but the DID Doc is also yours and you can write things to it.
More at web.plc.directory
Authorization is what we’re missing before it makes sense to build “the new internet” on top of atproto
we've got oauth and permission sets for writes now!
but no private data if that's what you mean?
Yes exactly. I wish for a way to model both public and private data with the lexicon.
aside: i would've thought you'd use Jerry and not dril for example post tbh
Thank you for this.
It makes atproto understandable to an electrical engineer non-coder like me.
I love the TypeSpec typespec.io so far. It’s going to be perfect for MCP and may stop this OOPy overuse of classes in JS
so sort of like, for any videos (even the xxx files)... then you just use an ID and you can instant find that file and download it?
For content addressed file storage, yes. While bluesky uses content addressing, it's focused on post-like records, and IPFS uses it for files
The link to semble.so is to semble.so/home which redirects to semble.so/login
Might want to fix that
If this social file platform fixes the pain point of creators having to store and distribute products across multiple social apps (Instagram, YouTube, Medium, etc.), there could be a strong market need for it.
This blog post is on your website and also on Tangled, how do you handle it?