It’s really surprising to me that the #fediverse hasn’t agreed on a standardized way to open cross-instance #activitypub objects and instead relies on links that open in the browser. #urischeme

I found this proposal and what’s thinking… https://codeberg.org/fediverse/fep/src/branch/main/fep/07d7/fep-07d7.md Which one would be your favorite?

(If anyone has updates on the progress, feel free to point me in the right direction)

web+ap:
21.4%
ap:
35.7%
activitypub:
28.6%
fedi:
14.3%
Poll ended at .
fep/fep/07d7/fep-07d7.md at main

fep - Fediverse Enhancement Proposals

Codeberg.org

@[email protected] the only implementor I know of who has recently played around with this is @[email protected] of Piefed. They use web intents I think, but the UX leaves much to be desired (many clicks and popups just to register the web intent)

I don't recall whether there was a SWICG task force about this topic... perhaps the HTML Discovery Task Force might be related?

cc @[email protected]

ActivityPub Discovery

@julian @rimu @evan isn’t an URI scheme the way that would offer fastest compatibility? after all it’s been around forever, most browsers just let the OS handle it and even apps like zoom and iTunes have successfully implemented it for their service 🤔
@ricferrer @julian @rimu We already have an URI scheme for ActivityPub objects; it's https: .

@evan @julian @rimu it’s horrible UX. It opens a browser where I am not logged in instead of opening my default app, like it happens with mailto:

https: is for webpages

@ricferrer @evan @julian @rimu

https: is not for web pages. it's for http resources, which can be any content type. the content should be dispatched to the appropriate content handler; for example:

- html opens in an html viewer
- pdf opens in a pdf viewer
- png opens in a png viewer
- mp4 opens in an mp4 viewer

activity+json could be opened in an activity viewer. see firefox for example in pic 1:

@trwnh @evan @julian @rimu while this is true now, it was an evolution. As you probably know, the ht in html and http stands for HyperText, the fundamental concept that enabled websites in the early 90s

The question is what is more realistic for wide adoption… that all browsers start recognizing activities and decide if rendering in a viewer inside the browser or redirecting outside to an app makes sense.

@trwnh @evan @julian @rimu

I think the biggest difference with pdfs, mp4 in your example and an activity is that I most likely want to interact with an activitypub object: either follow, repost/announce, etc for this to work I need to be logged in. So is the solution to include an activitypub client in the browser? Use an external viewer that intercepts through browser extensions?

Now even the experience inside mastodon sometimes opens a webview 🤷🏻‍♂️

I think the right solution is to use a combination of FedCM (making progress in the W3C) plus Activity Intents (FEP-3b86) to link you back to the web page for your home server.

FedCM will let you “sign in” to your browser, and make that information available (with consent) to the pages you visit online.

Activity Intents publish the operations your home server supports, then give links to complete the intent.

We already have the tools we need.

@ricferrer @trwnh @evan @julian @rimu

@benpate @ricferrer @evan @julian @rimu should be possible even without necessarily those specific tools -- although fedcm can make it "friendlier" ux-wise

- authenticate your id ("i am this person")
- get the linked claims from the id ("this is my proxy url")
- submit the request ("fetch me this thing")

i mean, you could write a web extension right now that does it in a very minimal way, i'm pretty sure? "POST the current URL to this proxyUrl" is not exactly a difficult thing to do...

You’re correct.

FedCM is a bonus, but not required.

And Activity Intents just normalize the mess of “remote follows” and “share intents” that many apps already support. I currently “polyfill” intents for servers (like Mastodon) that don’t publish explicitly.

It should, however, start with a GET to my home server (not a POST) so I can see what I’m about to do. There’s so much variation between servers; we’re asking for bugs if we skip this step.

@trwnh @ricferrer @evan @julian @rimu

@benpate @ricferrer @evan @julian @rimu i'm not entirely sure why it's POST proxyUrl instead of GET proxyUrl but i think it has to do with leaking metadata iirc

In the end, we need real “share” and “like” buttons for the Fediverse - with as few clicks as possible - wrapped up as easily installable widgets that go next to Twitter and Facebook on every site online.

(That’s step 1)

Once we do this, step 2 is to lobby sites to JUST use Fediverse buttons, and drop the ones for hateful platforms.

@trwnh @ricferrer @evan @julian @rimu

@benpate @trwnh @ricferrer @evan @julian @rimu I’m actually working on implementing your Activity Intents FEP in Loops right now, using autocomplete from FediDB it’s quite powerful!

This is AMAZING, Dan, and it would be a huge win. #ThankYouThankYouThankYou!!!

@dansup @trwnh @ricferrer @evan @julian @rimu

https://bolha.one/@cadusilva · BrowserPub · A browser for exploring ActivityPub and the fediverse

Explore the open social web through the lens of ActivityPub and the fediverse.

@benpate @trwnh @ricferrer @evan @julian @rimu So I have a working proof of concept, using the Activity Intents FEP and a polyfill for software not yet supported.

Want to work on this together?

I will be getting the webintents.net website up shortly 😉

https://mastodon.social/@webintents/116028982466167234

Yes. I'm in.

I've built similar buttons for Emissary, but they require too much server-side logic. I've been wanting to migrate the whole thing to client-side JS for some time, and make an easy widget that "webmasters" can drop on their pages.

If you're interested, you're more than welcome to take the lead on this (I'm sooo full rn) and I'll do whatever you need to help out.

And if you want to chat, let's jump on a video call :)

@dansup @trwnh @ricferrer @evan @julian @rimu @webintents

@benpate @trwnh @ricferrer @evan @julian @rimu @webintents

Yes, for sure! I've already built a proof of concept, that I will get setup and ready to test on a video call.

I even got the project website up: https://webintents.net

WebIntents - Universal Follow Button for the Fediverse

Simple, beautiful follow buttons for ActivityPub. Works with Mastodon, Pixelfed, Loops, and all fediverse platforms. Less than 10KB, zero dependencies.

@benpate @trwnh @evan @julian @rimu I agree. That’s I like the uri scheme solution, which takes inspiration from the approach twitter, fb, instagram used before universal/app like in 2015 to achieve massive growth

Here’s a question: do browsers let JavaScript introspect what custom protocol handlers are available/installed?

I’m planning a Franken-widget that works with whatever tools are available.

Activity Intents? Sure

Custom protocol? Okay, we’ll use that too.

None of the above? Sniff the server and polyfill.

We could certainly try an “AND” approach, if JavaScript will let us.

@ricferrer @trwnh @evan @julian @rimu

@benpate @trwnh @evan @julian @rimu I know I implemented it at some point by analyzing what Facebook and co were doing. I think it was kind of a hack, but it worked. It didn’t let you know what was available. It just assumed it worked if you left the page and if you were still there it opened http. Like I said sometimes you had the page open when you came back to the browser (so it effectively opened both) but it wasn’t that annoying
@ricferrer @benpate @trwnh @julian @rimu so, maybe we should have a group working on this problem.
@evan @benpate @trwnh @julian @rimu is there a matrix room we could joint? 🤔 or should I make one?
@[email protected] I feel keeping this on fedi is easier, but that's also because I don't have a matrix account 😅
@julian @ricferrer I meant, taking it to a Task Force. It's a really important question.

@[email protected] yep! I was responding to using a matrix chat room.

I'm all for a task force on this.

Task Force: Yes

Matrix: Please No? I freakin’ HATE matrix

@ricferrer @evan @trwnh @julian @rimu

@benpate what are your thoughts on matrix? I am considering using it in a product I am working on and would love to know why you don’t like it 🧐

I’ve been testing Element X and haven’t found many issues.

@ricferrer

While I do have some gripes with notifications and threaded discussions in the Element client…

My loathing of Matrix is less about the technology, and more about having yet another place to follow discussions. I can only follow so many separate places to have discussions, and matrix doesn’t seem to add much value.

I’d much rather try to make discussions work better HERE, instead of moving everything over to Matrix 😇

@benpate yeah. I understand completely and I feel the same way that the space for communication tools is over saturated. But I do see a value in #matrix for private communication. Private/Direct #messenging in the fediverse is not good and I feel it would take a huge effort to fix it. At the same time there is in matrix already a separate solution that gives me hope about replacing #whatsapp #signal #telegram etc in a way that more aligns to my values and overlaps those of the fediverse.

@benpate
Off course not, this would be even illegal in the EU.

[edit] I am super thankful for the FEP!
It is just that I am (at the same time) super frustrated about the browser makers, acting as gatekeepers in the context of Open Protocols.
As the elected Policy Lead, I advised the EU about „federating systems“ in the DMA/DSA. Nothing of this is covered by the law currently.

The idea is super old and dead simple.
https://developer.mozilla.org/de/docs/Web/API/Navigator/registerProtocolHandler
The "limited available" and the calculated "bugs" in the support makes me sad.

As user: If it is my private computer, I want to be able to store the "me" in the browser, that is primarily my fedi handle ot url … … …
Then it is possible on any webpage to share any ActivityPub item from my account by just a click without revealing my identity directly. This should really be a task of the browser. Mozilla Persona was a nice idea as well until they sent the team to create games which nobody played.

@ricferrer @trwnh @evan @julian @rimu

Navigator: registerProtocolHandler() Methode - Web-APIs | MDN

Die Navigator Methode registerProtocolHandler() ermöglicht es Websites, ihre Fähigkeit zu registrieren, bestimmte URL-Schemata (auch als Protokolle bekannt) zu öffnen oder zu bearbeiten.

MDN Web Docs

Also, you can see this running right now on bandwagon.fm.

You can remote follow right from a band page, or even from a page of search results.

This works with just about any Fedi server by polyfilling the oStatus remote follow logic

If you’re in an #Emissary server you can also do remote likes, too

Could you try out the workflow I have in place right now? My goal is to expand this, make it all JS (no server-side required) then package it for everyone

@ricferrer @trwnh @evan @julian @rimu