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.
-
@ricferrer to repeat: you don't need the extensions. they are just one option to making things simpler. i described at least 2 other options that are all complementary:
- rewrite links to keep you in-app
- content-type handlers to get you in the right app
- extensions to also get you in the right app
- share targets to get you in the right app (on mobile)you can use one, some, all, or none of these. the first one is the most important; the others should also be easy to do right now.
@trwnh staying in app is the simplest solution. But the challenge is getting me from the browser to the app without me having to install anything or use the share intent workaround, which doesn’t work because it opens a “new post” as expected by the user when they select “share”
-
@trwnh staying in app is the simplest solution. But the challenge is getting me from the browser to the app without me having to install anything or use the share intent workaround, which doesn’t work because it opens a “new post” as expected by the user when they select “share”
@ricferrer you have to at minimum register a handler, no? how is that any different than "installing"?
-
@trwnh @benpate @evan @julian @rimu
I am focused on what can we do pragmatically and realistically as a community to fix the broken experience to help get more people into the fediverse.A mix of
1) JavaScript for websites that want to link to the fediverse that trigger ap: and offer http fallback (just like fb: before 2015)
2) adding support for ap: on fedi clients
It’s something we can do now. It works and we don’t have to wait for big tech
Yes. I agree with just moving forward with the tech we have.
What would the JavaScript do, exactly?
What parts of this would require a new ap:// protocol, or could we accomplish this with regular https:// links?
Also: thanks for starting this conversation. I think it’s very helpful and timely!
-
@ricferrer @benpate @evan @julian @rimu doing ap: will fail for anyone who doesn't understand ap: which by default is everyone
-
@trwnh Thank you. I understand what you’re saying. They’re rewriting links in the post to keep you on that site. I’ll need to keep this idea in my toolbox.. it will be useful.
-
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.
-
@ricferrer @benpate @evan @julian @rimu in any case the thing all fedi apps can do "right now" (without any ecosystem changes otherwise) is to try to load all https: links locally before kicking users out. this is at least half of the problem solved right away.
-
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.
-
Yes. I agree with just moving forward with the tech we have.
What would the JavaScript do, exactly?
What parts of this would require a new ap:// protocol, or could we accomplish this with regular https:// links?
Also: thanks for starting this conversation. I think it’s very helpful and timely!
@benpate @trwnh @evan @julian @rimu
Maybe I did not explain it well. Fb, twitter, instagram used JavaScript to try to open their uri. If it failed, they opened the http equivalentThe user did not notice much. If they had the app, it jumped. Sometimes if you returned to the browser the http was opened anyways. But that’s wasn’t very annoying
-
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
-
And I thing this “other way around” — going from a remote server to your home server — is the most important use case.
Let’s lock this down and get “share” buttons everywhere.
-
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.
@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
-
@benpate @trwnh @evan @julian @rimu
Maybe I did not explain it well. Fb, twitter, instagram used JavaScript to try to open their uri. If it failed, they opened the http equivalentThe user did not notice much. If they had the app, it jumped. Sometimes if you returned to the browser the http was opened anyways. But that’s wasn’t very annoying
I think I follow. Instead of “look before you leap” it’s more like “just jump anyway, then recover errors gracefully.”
On my iPhone, websites themselves can declare a preferred app to use instead of the site. That’s another way around this problem, yes? But I don’t know if that’s available in desktops or not.
I care mostly that we don’t break things for regular people who haven’t installed an app, and haven’t installed a browser plugin.
-
And I thing this “other way around” — going from a remote server to your home server — is the most important use case.
Let’s lock this down and get “share” buttons everywhere.
@benpate @ricferrer @evan @julian @rimu if you never leave the app then the "other way around" basically never presents itself at all
but really, how hard is sharing a link? doesn't seem hard!
content handler is best in the long term but in immediate term there are still many ways to do this...
-
@benpate @trwnh @evan @julian @rimu
Maybe I did not explain it well. Fb, twitter, instagram used JavaScript to try to open their uri. If it failed, they opened the http equivalentThe user did not notice much. If they had the app, it jumped. Sometimes if you returned to the browser the http was opened anyways. But that’s wasn’t very annoying
@ricferrer@mastodon.social @benpate@mastodon.social yes, that's correct and what the current state of affairs is.
You can write links pointing to an interstitial page that says something like "opening in app", and use js to fire off the web+ap protocol handler.
If the user is still on the page after some time has passed, the handler failed and you redirect to the https version.
-
@benpate @ricferrer @evan @julian @rimu if you never leave the app then the "other way around" basically never presents itself at all
but really, how hard is sharing a link? doesn't seem hard!
content handler is best in the long term but in immediate term there are still many ways to do this...
You’re right.. ONCE YOURE IN the ecosystem, it would be easy to just stay there. But how do you get into it in the first place?
Most interactions will START out there in the open web. We need to make a smooth on-ramp for newbies to find us first.
That’s why web -> fedi matters so much.
-
I think I follow. Instead of “look before you leap” it’s more like “just jump anyway, then recover errors gracefully.”
On my iPhone, websites themselves can declare a preferred app to use instead of the site. That’s another way around this problem, yes? But I don’t know if that’s available in desktops or not.
I care mostly that we don’t break things for regular people who haven’t installed an app, and haven’t installed a browser plugin.
@benpate @ricferrer @evan @julian @rimu you can already do this with http and as early as 2013 there was an android app for handling links before they reached your default browser. i'm trying to remember what it was called

-
@ricferrer@mastodon.social @benpate@mastodon.social yes, that's correct and what the current state of affairs is.
You can write links pointing to an interstitial page that says something like "opening in app", and use js to fire off the web+ap protocol handler.
If the user is still on the page after some time has passed, the handler failed and you redirect to the https version.
@benpate@mastodon.social and yes it will work fine with users without an app or extension installed. Agreed that this is a no-go for wide adoption. It has to be done with stuff everybody already has.
cc @trwnh@mastodon.social @rimu@mastodon.nzoss.nz @ricferrer@mastodon.social
-
I think I follow. Instead of “look before you leap” it’s more like “just jump anyway, then recover errors gracefully.”
On my iPhone, websites themselves can declare a preferred app to use instead of the site. That’s another way around this problem, yes? But I don’t know if that’s available in desktops or not.
I care mostly that we don’t break things for regular people who haven’t installed an app, and haven’t installed a browser plugin.
@benpate @trwnh @evan @julian @rimu that was the beauty of the approach. At the time desktop only said “app not available” but still had the destination open below the alert. I don’t know if macOS and other desktop handles it the same way now. I tried this in 2009 the last time
but it might be worth a try On you iPhone it uses the newer approach of registering the domain for universal links (released in 2015). Which won’t work in the fediverse
-
You’re right.. ONCE YOURE IN the ecosystem, it would be easy to just stay there. But how do you get into it in the first place?
Most interactions will START out there in the open web. We need to make a smooth on-ramp for newbies to find us first.
That’s why web -> fedi matters so much.
@benpate @ricferrer @evan @julian @rimu right, so...
- here's a link that you won't know how to open
- go sign up at one of 100,000 servers before you can open it
- do all that and end up with basically just a share buttonis a really bad ux, isn't it? i mean, it annoys me so much when people share matrix.to links for this reason...