Email or username:

Password:

Forgot your password?
John Spurlock

👀 BrowserPub: A browser for exploring #ActivityPub and the ⁂fediverse

browser.pub

76 comments
John Spurlock

The idea here is to make it a bit easier to see how well the various players in the fediverse support the C2S side of the ActivityPub spec.

You can punch in any ActivityPub discoverable web url or fediverse handle, and BrowserPub will discover and display the underlying AP:

e.g.

social profiles: browser.pub/https://mastodon.s

or posts:
browser.pub/https://mastodon.s

or fediverse handles:
browser.pub/@Gargron@mastodon.

or even usernames (defaults to mastodon.social for now):
browser.pub/Gargron

The idea here is to make it a bit easier to see how well the various players in the fediverse support the C2S side of the ActivityPub spec.

You can punch in any ActivityPub discoverable web url or fediverse handle, and BrowserPub will discover and display the underlying AP:

e.g.

social profiles: browser.pub/https://mastodon.s

John Spurlock

BrowserPub defaults to a visual representation of the object (if a known type)

everything here is powered by ActivityPub, no server-specific APIs

you can also view the underlying ActivityPub object as JSON...

John Spurlock

... or a less JSON-ey structured outline

John Spurlock

For known collection properties (like outbox, followers, featured, etc), it will preview the collection and support paging via a "next" link:

browser.pub/davew

John Spurlock

Threads posts and profiles are also available, for users that have checked the magic box

Here's a post:
browser.pub/https://www.thread

John Spurlock

While Threads does not support the replies collection yet, they do support the inReplyTo pointer, which BrowserPub renders above

browser.pub/https://www.thread

John Spurlock replied to John

Hmm, I'd love to be able to render a more dynamic og:image at some point 🤔

John Spurlock replied to John

@dave Dave I was going to link the podcast guid to pi.org search, but it doesn't take guids!

podcastindex.org/search?q=4c51

John Spurlock replied to John

BrowserPub also tries to render custom emojis in content and profile headers, these are in the ActivityPub payload after all

even animated ones

browser.pub/https://bolha.one/

John Spurlock replied to John

and of course Flipboard is supported (cc @mike) nothing special, just the same ActivityPub spec implementation

browser.pub/https%3A%2F%2Fflip

John Spurlock replied to John

so even though Threads doesn't return collection items in the ActivityPub payload yet, it _does_ include the counts - so at least I can display those

just pushed it live

browser.pub/https://threads.ne

John Spurlock replied to John

Polls are not a Mastodon-specific feature, they can be expressed well in standard ActivityPub, which means standards-based apps like BrowserPub can render them

Here is a recent poll example from @evan

browser.pub/https://cosocial.c

John Spurlock replied to John

and looks like Ghost got their outbox and posts ActivityPub working

although they are not in reverse chron like everyone else (@johnonolan, was this intentional?)

browser.pub/index@activitypub.

John Spurlock replied to John

So as I'm bopping around looking at everyone's #ActivityPub in browser.pub, I wanted to have the ability to follow interesting people while I'm browsing.

I just pushed a new update that adds a "Follow" button next to every profile in the visual view

e.g. browser.pub/mastodon@mastodon.

John Spurlock replied to John

Ideally, I'd like to have these follows take effect here in my main account and not have to create a brand new profile on a brand new site.

This is where OAuth comes in - many existing fediverse servers supported federated login in a standard way

Just enter your account to start the login flow in browser.pub

John Spurlock replied to John

browser.pub requests the ability to add new follows to your account...

John Spurlock replied to John

... then stores the login info in the browser

For OAuth dorks, it'll show the token expiration and granted scope

Also whether or not the server supports the excellent OAuth server metadata spec, and whether the server supports PKCE (a security improvement that is a newer part of the spec)

Andy Piper replied to John

@js can I just say that you've done a really lovely job on the rendering of all the information from profiles etc here. It looks really, really good. Thank you.

marius

@js 🥳

If I may make a request, some details appear as "invalid" but nothing more is specified. For example the public key for browser.pub/https://federated.

I suspect it's the fact that it's not an RSA key, but I'm not sure.

John Spurlock

@mariusor Oh cool a good test case

What type of key is that example there? I believe I just use web crypto to parse

James Cridland

@js This is very nice. Dealt with @james@crid.land very well. Good job.

John Spurlock

@james@bne.social @james@crid.land thanks!

still working on it, but it's already fairly useful as is, so why not build the rest in public

silverpill

@js Nice tool. Are you going to open source it?

John Spurlock

@silverpill I mean it's basically all client-side

so, uh, view-source? : )

Don't make fun of my vanilla browser non-framework JS

John Spurlock

@silverpill btw, I noticed that your json ld custom context is returned in a random order, can you fix that? I believe prefixes need to be defined before they are used, but I put a custom workaround in there for now

can see it by hitting the json tab here and refreshing over and over

browser.pub/@silverpill@mitra.

Andy Piper

@js this is VERY interesting! Thanks for making / sharing!

John Spurlock

@andypiper

thanks for re-enabling the AP plugin on your site! : )

Andy Piper

@js I was stuck between WordPress plugin updates, all set again now 😊

Dave Jones

@js This is amazing John. Trying to catch up while doing the show.

BeAware :fediverse:

@js the :fediverse:

Fixed that for you.😝

⁂ doesn't really show the diversity or interconnectedness of Fedi the way the real logo does. Not to mention, it's less appealing.

John Spurlock

@BeAware

yea same appealing-ness level as the term 'fediverse' itself

BeAware :fediverse:

@js seems like a neat and interesting name that makes me want to learn more about it...🤨

paulmwatson

@js that's really neat, being able to follow links in the JSON view is super interesting.

John Spurlock

@paulmwatson thanks - that's how it started

then kind of rabbit holed from there

there is an entire field-level validation model I haven't wired up yet - think squigglies or overlay badges for warnings/errors etc

tomáš א mládek

@js this is so good

looks like it's going to be immensely helpful for troubleshooting both misconfigured instances or custom implementations (both of which I'm involved in somehow)

(can't debug what you can't see)

thanks!

John Spurlock

@thm thanks!

there is a pretty detailed property-level validation system underneath that I intend to surface where necessary

there are some server implementations that don't have their json ld contexts quite right

let's get everyone valid - like you say, it's easier to fix when it's easier to see

Jeff Sikes

@js Love it! A great learning tool, too. Thanks for building and sharing this.

John Spurlock

@box464 thanks - more to come, but I figured building something like this little by little in public makes sense

let me know if you come across any links that don't look right

Григорий Клюшников

I haven't even finished photo albums federation in Smithereen yet, but it already shows them so neatly

marius

@js if I may make a suggestion related to one of my projects: I output Image objects that have the image binary data encoded in the Content property with base64. BrowserPub could transform this to an actual image.

An example of what I mean: browser.pub/https%3A%2F%2Fmari

Go Up