page.parts dev log 1

Like all of us, I've been trying to think about how we can make the things we're excited about in the atmosphere more tangible to people. The first thing I'm excited about is mentions!

I'm going to do proper docs and everything soon, but I wanted to publish this devlog now because I'm stoked about how it's all coming together and want to talk about it.

I think a conversation with @chrisshank.com was what first brought mentions to my attention. Around the same time I saw that @brookie.blog had implemented them for pckt.blog and I was jealous, so implemented it for Leaflet.

When doing that I thought it'd also be cool to be able to reference people's publications and posts. Since we already had all that data indexed into the leaflet appview, this was pretty straightforward!

So now you can go to at://news and see Chris's atmospheric weather report cataloging happenings across the ecosystem.

This is pretty limited though. I want to be able to mention all kinds of things throughout the atmosphere! But, I don't want to have to backfill all of the data for every lexicon into our database.

Beyond that, I think all kinds of experiences should be part of the things people publish. The web already has a pretty okay mechanism for this, iframes. We just need some ways to discover and distribute them.

Enter, mention services! I think the XRPC service pattern that bluesky uses for feed generators is pretty under utilized. What if those developers who already have appviews could stand up a service that users could use to search through their objects? And then, what if they return different ways of linking to those objects, at-uris, http urls, or embedabble iframes? This would let not just leaflet but any platform (even non publishing platforms!) easily let their users mention and embed content from across the atmosphere.

So that's what I've been working on!

The story so far

I might've showed you something based on this at Atmosphere Conf. It was a basic service for searching and mentioning wikipedia pages. It was pretty minimal but it did show one aspect of this that I already think will be underrated: the ability to search and mention just normal webpages.

Anyways, after the conference I had the pleasure of hanging out in Vancouver a couple days longer, and got to visit the super cool @z-space.ca and show the @semble.so team what I was working on1.

@wesleyfinck.org and I ended up working side by side getting a Semble mention service up and running. I cannot overstate how productive this was. Design questions I'd been going back and forth just became obvious in the context of actual use and through conversation with someone thinking deeply about the same things.

I got a repeat of this experience this week when I had calls with two folks to demo what I got, @zzstoatzz.io and @chadtmiller.com , and woke up the next morning to them implementing parts of [what] we talked about.

The atmosphere may not have the users yet but damn do we have the builders!

Okay okay, so what can you actually do today.

This is what the flow looks like today:

View post on Bluesky

If you've got an app (or just want to make a page parts mention service):

Create an XRPC service for parts.page.mention.search

Publish a parts.page.mention.service record that points to a did:web that points to that search service

If you want to test it create a parts.page.mention.config record with the uri of the service you created.

Then, in the leaflet editor, type @ and you should see the service listed!

Services can be scoped to search different things. If a search result has a > next to it, you can hit Tab and the UI will take the scope returned by that result and pass it back to the search service.

If the service returns a result that can be embedded you can hit Ctrl+Enter or click the embed button to get an iframe.

THIS IS ALL EXTREMELY WIP. No UI is final. It's intentional that you have to create a record to see any of this.

Some thoughts about embeds:

Okay, so that being said I'm pretty confident about the mention flow on a high level. I however, cannot say the same about embeds. I think there are some really cool potential interactions here, but a lot of rough edges. Here are a couple thoughts I'm thinking about.

Should they have service definition records?

Is a communication protocol between host/embed a good idea? How do we best document it? What functionality is the highest impact?

Is auth going to be a non-starter? The browser has a StorageAccess API that could be useful, but is it implementable in a usable way?

Cool services someone should make:

One for lexicons! Would've been handy when writing this!

Bluesky post search

margin annotations

The relief we all felt when we realized we could just chat after the conference was palpable.