Hello, excited to jump in on this conversation (thanks @byarielm.fyi for the ping
).
I maintain ATproto Apps • atproto.brussels, and a shared lexicon would immediately make this kind of work easier.
To give concrete context, here are the fields I currently rely on to describe apps:
- name
- url
- platform (web / ios / android / other)
- short description
- category (although I’m starting to think this should become tags)
- alternative_to (many apps position themselves relative to existing products)
- last_checked (basic health check via cron)
- Icon (via web scrapping, defaulting to favicon.ico)
I’ve also experimented with storing user ratings in the voter’s PDS as an optional write-through ( lexicon nsid brussels.loves.appRating ).
What I’m realizing is that even with this, something important is missing:
we don’t have a shared way to describe how an app fits into the ATProto ecosystem itself.
I think of the lexicon as a shared mental model of what an app is.
It should help answer three questions:
- What is this app?
- What is it for?
- How does it plug into ATProto?
My directory does a decent job (self patting on the back) at #1 and #2. But #3 is almost entirely missing.
proposal
Rather than aiming for a complex ontology, I think a simple, adoptable structure would go a long way.
Each app could expose:
- Type → Client / Tool / Service / Infrastructure / Directory
- Domain → Photos / Messaging / Publishing / etc.
- Protocol roles → Feed builder, Publisher, Repo tool, etc. (multiple allowed)
Examples:
SkyFeed
Type: Client
Domain: Microblogging
Roles: Account client, Feed builder
WhiteWind
Type: Service
Domain: Publishing
Roles: Publisher
PDSls
Type: Tool
Domain: Developer
Roles: Repo tool, Firehose tool
Without this separation, we end up mixing “Client”, “Tool”, and “Social” in the same bucket.
I’m less concerned about metadata like authorship (which is useful but straightforward), and more about how we consistently locate an app within the ecosystem in a way that is clear and reusable.
If others are already experimenting with similar structures (e.g. atproto.garden), I’d be very interested in aligning rather than reinventing.