The data model of atproto is rooted in a JSON schema system called lexicons. There are all types of lexicons being used to stitch together digital social spaces and they are the bedrock of interoperability that has emerged across the Atmosphere has.

At the lowest level, digital social spaces built on top of atproto are decomposed into all of these tiny pieces of data (called records). Those records are divided up and stored in the folders by the account that created them (called the PDS), then stitched together by apps to create the user interfaces we use to interact with each other. What's fascinating is that most of these records do not live in isolation of each other, like files on out desktop filesystem. Rather, they are densely interlinked together and what emerges from this are affordances that the web lacked1.

Just like we have file paths in desktop computing to reference files, in atproto we have AT URIs. These are a transparent scheme that make all of the data on the network freely addressable. Anyone can create records that refer any other piece of data on the network without needing permission from the account that they are referencing. This creates a kind of additive graph of social data, where new types of social data are usually appended to existing ones.

Even though it's still early on, it's clear that not all lexicons are designed with the same intent in mind. The folksonomy below is a starting point to capture these different intents and design patterns emerging around lexicons.

Content Lexicons

The most basic lexicon is one that describes content someone has published a post on and company, a content of a blog post, a playlist on , etc. Sometimes these are app-specific representations, sometimes, like in the case events, they standardized a type of content. Content lexicons can link to other records, which is how a bluesky post or a leaflet document embed another bluesky post.

Interaction Lexicons

Content does not exist in isolation, it exists in a spectrum of social contexts. Lexicons that model social interaction such as likes, bookmarks, or replies often link back to a content record. When a piece of content is hydrated within a given social context, we are looking for all types of backlinks to these lexicons. Social interactions can also have content, whether it's an emoji reaction or a actual reply, but what's important is they exist within the context of another record and indicate that by linking back to that context.

Publishing Lexicons

dad (aka miguel)'s avatar

stansite is not like other lexicons, they’re distribution/discovery lexicons, not content lexicons. they have canonical locations on the web hence why we even care if a document or publication is verified keep treating them as the data and people will stop using them …and atproto loses imo

Some domains don't have a single representation of content that the ecosystem can agree on, but it's still really important to have a shared language around publishing that content. Such is the case of for blogs and in the future bookmarks, science publishing, and books. These lexicons are standardizing metadata about a given domain and a open hole pointing to the actual content. I like thinking about the design of these lexicons as pace layers:

Fast learns, slow remembers.  Fast proposes, slow disposes.  Fast is discontinuous, slow is continuous.  Fast and small instructs slow and big by accrued innovation and by occasional revolution.  Slow and big controls small and fast by constraint and constancy.  Fast gets all our attention, slow has all the power.

A publishing lexicon functionally separates the data needed for distribution from the content because these schemas change at different paces. In the context of , innovation between different blogging services is mostly going to exist at the content layer, where they agree much less. But agreeing at the distribution layer has unlocked huge tailwinds for blogging being adopted across the Atmosphere without a single service being picked as the defacto. The rule of thumb is that the shape of content is secondary to its intent.

Vouching Lexicons

There are many cases where a someone might want to vouch for someone else or something they made. This includes lexicons like 's verification, 's recommendation, 's skills, or vouches. In some cases these are one way vouches, one party is making a claim about someone else. For example with verification anyone can technically make verify anyone else, but an bluesky-esque app will only show the verification status of trusted verifiers.In other cases it may require both parties to vouch for each other. In some cases a vouch points at an account and in others it points at a specific record. Attestations are lexicon standard made by that uses cryptography to make vouching verifiable and harder to forge.

Collaborative Lexicons

As described in the intro, atproto is an identity-based, additive data model. While this naturally fits into many kinds of social scenarios we see on the internet, it is challenged by the cases where multiple people are collaboratively editing the same object at once, which is precisely what the local-first community is all about. Lexicons like 's Skyboard, and 's CRDT lexicon are using an operation-based CRDT to store the operations that each account makes on an object, then the app will resolve all of those operations together into same view for everyone. There is currently a CRDT working group exploring how to standardize these types of lexicons.

Signaling Lexicons

There are some early lexicons exploring how to use the PDS as a signaling server to create direct connections between computers. 's iroh lexicon or 's WebRTC lexicon show an early preview of what this can look like. With these we can start to imagine DIDs as phone numbers or real-time collaborative environments leveraging the identity and publishing layer of atproto.

Call to action

This taxonomy is by no means complete, if you've noticed other types of lexicons or patterns around how they are designed I'd love to hear about them! My hope is to keep this folksonomy as an update-to-date reference for those designing and consuming lexicons.