Due to the federated nature of Lemmy there’s one small problem: if you link to a community (let’s say https://lemmings.world/c/wwdits) the link takes people out of their instance.
On Lemmy it can be solved easily - use !wwdits@lemmings.world and the community opens on their own instance.
But the problem still exists outside Lemmy, let’s say you write a blog post and link to some community - people who already use Lemmy will again be taken out of their instance.
And to solve this I created this project, available on https://lemmyverse.link and https://threadiverse.link (both are the exact same app).
Instead of https://lemmings.world/c/wwdits you link to https://lemmyverse.link/c/wwdits@lemmings.world and you’re greeted with this:
You can either continue directly if you don’t care, or you can set your home instance and afterwards every link at https://lemmyverse.link will automatically be redirected to your preferred instance (with a small countdown allowing you to change your instance):
If enough people start linking using this service, it will greatly improve the experience for Lemmy users!
Let me know what you think!
Edit: Source code is here: https://github.com/RikudouSage/lemmyverse.link
In my opinion this runs counter to the idea of federation; i wouldn’t use it.
You probably do intend to keep it running for ever, but if you can’t for whatever reason, all links created using this service become dead links. If this were client-side, maybe. But this needs a server to be running at lemmyverse.link and/or threadiverse.link. Imagine someone else gets hold of those domains. They can snoop every use.
I have multiple accounts and might want to choose based on what I’m researching. If it were on a client, it should be a widget, but this doesn’t allow me to switch that so easily.
I think the solution should be for all Lemmy clients to detect links when possible and open them up in-app and/or have browser plugins that can redirect requests on the user’s machine. These won’t cover all the cases that your service can, but i would still prefer that over all Lemmy links being resolved by a centralized service that can read your cookies.
In my opinion this runs counter to the idea of federation
Not really, this solves one problem that federation brings, it doesn’t go with or against federation.
They can snoop every use.
There’s not much snooping to do. Though it could be a problem with phishing. Anyway, if you want something that’s guaranteed to run forever, tough luck. There are already instances down and instance domains lost, sounds like a much bigger issue.
I think the solution should be for all Lemmy clients to detect links when possible
This is specifically for use outside Lemmy as I mention right at the beginning.
centralized service that can read your cookies
That’s not how cookies work. The service can only read its own cookies and it uses exactly two cookies: One that stores your preferred instance and one that flags you as not having a preferred instance. Also it’s not centralized, you can deploy it on your own, there’s even a guide on how to do it.
I feel like you haven’t really read what I wrote, instead you made some assumptions and based your response on them.
lmao… after this response to criticism, I definitely don’t want to trust any “service” you create.
you can deploy it on your own
Anyone can host an open-source URL shortener for their own links. How many people do? If something like this ever takes off, it will have to be centralized due to the nature of the product. And that adds extra bottlenecks for the community.
There are already instances down. […] If you want something that’s guaranteed to run forever, tough luck.
Despite instances being down the fediverse is fine. The content that was created by users on these instances was already federated to other instances so we didn’t lose it. You can’t go back and change links the same way. You’re not federating. You’re handing out code for running individual centralised servers. That’s why I said that this is opposed to federation.
This is specifically for use outside Lemmy
You seem to have overlooked a really important insight about your own project. Who has preferred Lemmy instances? People who already have Lemmy accounts!! If someone doesn’t have a preference, this service is a useless extra hop.
Lemmy users can voluntarily install browser extensions to improve their own experience. Lemmy apps can claim domains so that at least common lemmy instances are recognised. This is true freedom and convenience without being beholden to a third-party website.
I feel like you implemented the first idea that came to your mind and now you are just defending the project instead of trying to see the bigger picture.
There’s a version I built a while ago that is static that I plan on keeping around for a while:
In my opinion this runs counter to the idea of federation
The rest of the internet runs counter to the idea of federation, yet Lemmy must work with it.
This may be more intuitive for newcomers. Matrix has something similar (matrix.to). It tells you that you want to open a chat and provides a list of apps. You can get inspiration from here.
Oh, nice! I’ll do something like that.
Hi there! Looks like you linked to a Lemmy community using a URL instead of its name, which doesn’t work well for people on different instances. Try fixing it like this: !wwdits@lemmings.world
Lol
Great tool!
The UI is probably confusing to non-technical people who don’t already use Lemmy. I would suggest adopting a similar UI to the Matrix one that another commenter shared, to make it easier for beginners.
edit: also the repo doesn’t have a license, so currently the code is not open source.
Yeah, I’ll look at it, but I’m not good at graphical design. And I’ll add the license, I forgot!
Edit: License is added.
You mean like lmmy.to?
Some people here are failing at basic reading comprehension… so many comments talking about “Lemmy clients”, when the whole point is that this for links from OUTSIDE of Lemmy.
That being said, I wonder if this couldn’t be solved by Lemmy directly somehow…? Ideally we could have some way to say “this is my home” that any given instance could know and redirect you from any linked instance back to your home, without any middle-man.
But I don’t know of any way to share that data without some central repository host (which obviously goes against the fediverse vision). Ideally there could be some kind of “shared local storage” in the browser that all instances could use, but I’m not aware any way to do that.
Obviously a browser extension would work, but I don’t think that’s a good solution.
I don’t think it’s possible, browsers are private by default and you have no way to share client data across domains. As far as I know, there’s no other way than using my project (or something that does the same thing, of course).
If you change the format to
https://lemmyverse.link/?id=https://lemmings.world/c/wwdits
, it will automatically work with posts and comments too, as well as objects on other Fediverse platforms. In this case you are storing the Activitypub id of each object, which you can use with resolve_object api call to view it from a given Lemmy instance. Plus it can easily be rewritten by a human to remove the leading domain in case it goes down.Hi there! Looks like you linked to a Lemmy community using a URL instead of its name, which doesn’t work well for people on different instances. Try fixing it like this: !wwdits@lemmings.world
I also don’t think this is a proper solution. The proper solution needs to be at a client level and not depending on your server.
Just to give you an example, I’m on lift off app and your link opens in a browser which is annoying.
How do you do it on client level? Let’s say I create a post on Medium, or someone links from Facebook, Reddit, Instagram… anywhere outside Lemmy. How do you solve this on client level?
Sure, you can create a browser extension that does it! But that works only on desktop and not everyone will use, in fact only minuscule amount of people will most likely use it. And how do you do it on phones?
This is a solution that works for everyone, it just requires that the one who creates the link uses it, which is much simpler than forcing everyone to use the same hypothetical client side thing you’re talking about. Just today I learned that Matrix uses the same thing!