Longform Lexicons for ATProto

Appreciate this post from Anuj (@quillmatiq.com) on emerging challenges of lexicon interoperability across the atproto ecosystem:

The Lexicon Interop Problem - augment

Lexicon interop's been on our minds lately for a few reasons!

First, to emphasize upfront: we're still in the experimental phase of building Leaflet. We did our own lexicons because we felt we had to, and we'd love for them to be broadly used!

If anyone feels they don't fit the needs of something you're building in the atproto publishing space that should be Leaflet-compatible, please discuss / complain loudly so we can work toward shared ones together.

Markdown vs. Block-Based Lexicons

The OG atproto blog platform, WhiteWind, has a simple markdown lexicon, and we made our own around more structured block-based content. People are curious why, and how they could be more compatible.

The short answer here is that we want to make publishing as rich and expressive as possible, which means supporting content beyond what's possible in markdown. We really like the balance of power and ease of editing afforded by blocks, and plan to add more. A simpler markdown lexicon definitely has a place (we love Obsidian for note-taking!) but we're going for something closer to Ghost, WordPress, Substack, or Notion.

We're thinking more about how to better support markdown in Leaflet publications, both for better interop or migration from WhiteWind and for folks who want an easier way to post programmatically.

One idea might be to add a markdown content block as a simpler alternative to push content to Leaflet without the need for our more complex block structure.

The Growing Garden of ATProto Publishing

We're also seeing others emerge on the atproto longform publishing scene! Offprint is a WIP app that looks really cool, with a strong focus on design and ease of use.

We chatted with Offprint's creator recently and had a good convo about ways we could work towards mutual compatibility. In particular we'd like to see how we can share lexicons to whatever extent possible.

Here's a thread he just posted as well:

View post on Bluesky

One thing it sounds like Offprint will be focusing on is more advanced theming options, and it'd be great to see how that might play nicely with Leaflet. TBD how that shakes out but lots of possibilities!

Maybe they play with advanced theming that extends or sits parallel to our core document/publication lexicons. Maybe it could even work as a superset of our basic theme settings so that posts made in Offprint still look nice in Leaflet.

Maybe we both want to explore different directions for payment options, collaborative publications, or feeds, but make sure creators can try both without worrying about annoying compatibility issues.

Maybe some future client wants to easily render feeds with both Leaflet and Offprint posts and more.

Maybe that future client that wants to render longform content directly in the feed…is Bluesky itself! (HINT HINT, WINK WINK.)

I think there's plenty of room to strike a balance where we diverge in more experimental areas or places we want to differentiate in particular ways, but align on the really central parts that define e.g. post content and key metadata.

Though lexicon alignment is primarily a social problem, there are some interesting technical things that could be useful too. For example, Ink & Switch's research into lenses points to interesting infrastructure for transforming between different versions of lexicons, and maybe even different lexicons entirely.

It would be a lot of work to figure out how to apply this to the atproto ecosystem, and a lot of work to get adoption for it, but could be enormously useful as the garden grows.

Compatibility in ATProto…and Beyond

Finally, there are wider conversations happening — questions not only of lexicon compatibility between different atproto apps, but things like interop / migration from platforms like Ghost or Substack.

Here for example is a Lexicon Community discussion on possibilities for a common blog lexicon; I chimed in recently with some thoughts!

Blog lexicon · Issue #54 · lexicon-community/lexicon

As Anuj writes, its great that these conversations are happening, both in community working groups like Lexicon Community, and directly between developers and teams building things.

Agree we should balance pragmatic rapid experimentation + being thoughtful about collaboration. Both are useful, not only for making stronger products but for growing the whole atproto ecosystem together.

If you're thinking about atproto and longform publishing, or anything else that seems up our alley, reach out, we'd love to chat about interesting ways to work together on this stuff!