Quick question - is there a way to format a link to a lemmy post so it opens through your home instance if you click it?

dbilitated@aussie.zone to Fediverse@lemmy.world – 66 points –

I notice often people might cross post something and say (for instance) cross posted from https://lemmy.ca/post/1916492 (random example which is the link that I just followed)

Is there any way to format a link like that so your home instance will just open it up so you're still logged in and can interact with it?

The link I followed goes to the Canadian lemmy server but it's actually looking at a post from beehaw.org, so it's extra useless 😒

Eg, if we could use the !technology@beehaw.org part with an ID? something like 6769052!technology@beehaw.org and our home instance could parse it to a link, with some tools to make it easy to add?

EDIT: This isn't a feature, but there is a github issue feature request at https://github.com/LemmyNet/lemmy/issues/2987 for exactly this

EDIT 2: appears to be a userscript solution, but i haven't tried it. lives here though: https://git.kaki87.net/KaKi87/userscripts/src/branch/master/fediverseRedirector/README.md

39

No, not currently. Post IDs are per-instance.

For instance, this post is:

ok sounds like it's not a feature - the link format i suggested includes both the instance ID and the instance url, so it would be possible for your home server to use that to preprocess to a useable link. I wonder if there's a suggestions box 🙂

I just got a PR merged today that might help with this. I'll start experimenting with it more over the next week or so.

Basic theory is that I can detect at least lemmy posts in the comment bodies and then rewrite those to your local instance. Primarily question is going to be performance, as remote network calls will be necessary.

oh that's awesome! yeah i can see it being an issue especially if that post isn't already federated. would be a great quality of life improvement though.

Ya if it's not federated already, I'm thinking the link will just remain as-is? Then comes the question of what happens after federation is complete? Ideally I'm thinking to do these rewrites as the comment containing the link gets federated so it only happens once, but that prevents updates... If I do it during someone looking at the post, then that becomes a lot of network traffic...

Still a lot to plan out initially and then propose to the devs for feedback... So it'll be awhile still.

Ya if it’s not federated already, I’m thinking the link will just remain as-is?

yeah that seems entirely reasonable. it'll still be a big improvement in most cases. also even if it only happens as it federates initially it'll probably still catch many cases. is it possible to do a follow-up check only for links that weren't updated the first time? if you could store a cool-off and maximum number of tries that would probably keep it light and as functional as possible.

when serving posts with un-processed links that haven't been updated, and it hasn't been checked in the last 3 hours, re-check for a federated article and update. do this for up to 24 hours after the comment is posted, after that just give up? that gives it a few opportunities but doesn't continue to waste resources if it's unlikely the link will be resolved.

I'm not sure if it's easy to add columns to track those attempts though.

Yeah, I was disappointed that federation didn’t automatically log you in everywhere like Google across its services, or that you cannot just “log in with [your home instance]” like OAuth.
(See my other comment for pondering how this could work)

I even tried using my feddit.de credentials (with @feddit.de appended, of course) on another instance, assuming the website code would notice the @ and pass them on to feddit.de instead. @ChaoticNeutralCzech@beehaw.org

I think full federated auth across servers is a much more difficult problem - it'd be nice but outside the scope of this request!

What’s this post’s link for beehaw.org? I cannot see it at https://beehaw.org/c/fediverse@lemmy.world although some other posts are visible. I thought that I would see an “Error: defererated” message if that was the case.

"Defederation" means that new posts aren't accepted from instance A to instance B; it doesn't (currently) generate an error if you try to access a community c@A on instance B.

I have just been using this script. Simple and works great. Also, it let's you setup multiple home instances so if you have a back up account elsewhere to deal with downtime or an account for other things 👀 it's fantastic.

I would prefer an OAuth-like solution where you can “Log in with” your home instance on other instances’ URLs.

Is there a way for your home instance to set a cross-site cookie, accessible by all federated servers, that would store its URL so that they automatically contact it for the login process? Setting up such a cookie should be optional but enabled by default on account creation, which would make federation very seamless. Ideally, it would happen without fetching JS from all federated servers, which would significantly load the tiny personal ones, although I doubt the technology is there.
Also, I assume that browsers block such cookies because they’ve been used to track people across websites.

And yeah, you could do that with browser extensions but you cannot get everyone to install one.

Is it so desirable to sent even more info, this time potentially non-public, if you decide to interact with the other instance?

This includes partial information about your online identity, namely identifying you uniquely. Not all instances should be considered trustworthy, so your log-in token may get re-used by a malicious instance to post things in your name here and there. Kind of a silly situation, favorable to spammers for example.

I don’t think the other site needs your login token. Assuming your home instance is lemmy.menf.in, I guess it would just

  1. See the fediverse-wide cookie (this technology may not exist yet) that your instance is lemmy.menf.in
  2. Fetch code from lemmy.menf.in that would verify your session with its own session token (if you don’t have automatic fediverse-wide login enabled, it will take you to a confirmation page first).
  3. The website will retain its URL but become nothing but a frame to embed the same content now fetched via lemmy.menf.in. You can safely interact using your account now.

Because the address bar URL remains the same, even non-technical users now understand that they’re viewing another instance while logged in via their own. Because this happens automatically for all instances whitelisted by lemmy.menf.in if you have automatic fediverse-wide login enabled, federation is now completely seemless and nobody complains. I understand that setting this up securely and compatibly might be difficult but could greatly simplify the UX because posts, comments, communities and user pages would have just one visible URL and no ambiguous IDs.

Wouldn't that overload popular instances even more? Right now, popular instances only need to accommodate their users, but with a "fediverse-wide" auth, soon they'll also have to serve content to people who followed that popular link to their content?

I think the server load increase from cross-instance browsing will be low. The extra load only really comes when:

  1. Users with the fediverse-wide cookie follow a link to another instance: A tiny HTML+JS site (the embed frame) will be loaded from the content-hosting instance, in addition to the same server having to serve the content to the home instance server. This piece of HTML+JS will remain loaded as long as the client’s browser tab is open and on the domain. Even the URL can change in sync with the embed frame going to various pages thanks to the JS. As such, the load increase is constant for each session and rather small.
  2. The one I am really worried about: Setting the fediverse-wide cookie. AFAIK, cross-domain cookies currently only work through embeds so when a user clicks “automatically log me in on each whitelisted Fediverse site”, it will need to get a response from all federated servers (feddit.de has 4250)! Many of these are single users’ personal servers and will not handle even a small ping whenever a user registers at a federated instance. We might need new web technology for cross-domain cookies or a central server just for content-less requests that do nothing but allow other domains to share a cookie, which somewhat defeats the point of the Fediverse. Please suggest another solution if you are an expert in web technology. Yes, it could be and is being solved with browser add-ons but you cannot push every new user to install one because that would just increase the barrier to entry.

Anyway, I’m quite tech-savvy but one of the first things I saw on Lemmy was “if your account is hosted on another instance, you will not be able to log in” and thought “so federation does not exist?” I hope you understand how this is discouraging: at present, federation is anything but straightforward.

I hope you understand how this is discouraging: at present, federation is anything but straightforward.

There's also a question of perspective. If you approach federation with the mindset that it will be like the sort of SSO you get with using google products, microsoft ecosystem, or facebook to log in to many websites, then yes: it's doesn't look straightforward.

If you approach it with the perspective that the coupling between fediverse applications being more loosely coupled, and have the way email work in mind, then it is actually more natural. Each application can do their own thing, and provide all or partial compatibility with the fediverse. Think of a blog application, which rely on the fediverse only for the comment section of each blog posts, but also does other things specific to that application. Taking the example of email again, nobody thinks they should be able to log-in to microsoft outlook using their gmail account, or to gmail using their home-made account, in order to read and send emails.

There's a narrative aspect to it too.

I think you can paste the permalink into the searchbar and that would show you the original post that you can interact with