No, I'm pretty sure that's a quirk of how the fediverse works. Posts, comments, etc are in two places:
the instance the community is hosted on
your instance (i.e. unique to users of your instance)
You'll want the first (the permalink) for general posting, and the second for your own use. However, lemmy doesn't handle the first very well, so both options kinda suck.
I honestly don't think there's a good solution to this. We can make improvements though, such as lemmy figuring out that a link is a lemmy link, either through special syntax (like @user@instance or !community@instance) or checking a list of known instances, but the real problem is that users need to be aware of instances, and that's poor UX imo.
I'm working on an alternative to lemmy that solves this (and has a bunch of other drawbacks that I hope are acceptable), but I hope it's not necessary and someone more clever than me can solve it.
If the comments/posts were just numbered relative to their communities instead of generated by each instance, there wouldn't have to be this disconnect at all. /c/piracy@lemmy.dbzer0.com/post/18177167
Would be THE instance-agnostic link for that post, and /c/piracy@lemmy.dbzer0.com/comment/9620373
THE instance-agnostic link for that comment.
Don't even have to redo how the instances generate content numbers for posts/comments generated locally, but set them to pull such numbers in for each post/comment mirrored from another instance. Not even slightly hard to come up with, though I don't have my laptop with me so I'll refrain from speaking one the difficulty of implimentation versus all the "legacy-numbered" content already out there.
Yeah, that would work within lemmy, and it would make it easier to detect whether a link is to lemmy or something else (look for /c/<community chars>@<hostname chars>/<rest>). But you'll still have the issue of clicking a link elsewhere (say, a blog post) to an instance that's not yours, so you still wouldn't be able to directly comment w/o copy/pasting part of the URL to your instance.
That said, that change alone would reduce a lot of friction for users. My point is that it still doesn't fix the root of the problem. I guess we could use a browser extension to auto-redirect to your instance of choice, but that's just yet another barrier for users.
This would still leave the problem of people not being able to just copy paste the url from an address bar. Re-learning how to link stuff is something some wont ever figure out. The relative linking of communities was a stopgap, and they break on kbin for obvious reasons.
Relative links aren't an ideal solution anyway, as different clients handle things differently. A relative link that works in the default webUI, wont in photon, and vice versa (though photon already figures out links way better than the vanilla webUI does).
Not to mention that you'd still want to have absolute links work, too. Both within any client, and when opening links shared outside lemmy, and have them work in a way where you can interact from whatever account you have. By that point you may as well just figure out absolute links for everywhere.
@MachineFab812@discuss.tchncs.de When I type @ I get a user picker in the text interface that autocompletes the username, and then it just generates the link in Markdown. The link does not need to be generated in Markdown, just typing out that syntax will ping the user. The markdown is required, so users can click the link and view the person's profile. That user will get a notification in their inbox.
Typing ! and then the name of the comm does a similar thing !piracy@lemmy.dbzer0.com. It will also format it in Markdown, but again, not required because that syntax will be changed into a localized link to the comm.
Yes, that is the expected behavior, and what I attempted the first time in the link comment. I was surprised it wasn't working, even after a page refresh.
Instances can themselves handle links agnostically, and clients are able to access that via the API.
Using the autocomplete in the webUI can mess things up, as it is from back when community mentions weren't even turned clickable. The link is then an explicit markdown link to the user, and may not be correctly clickable in whatever client others are using, but may instead open an off-instance page in a new tab/browser app.
Even if you link to a post using its local url and ID, a client can, and some already do, open that link in-client from your instance. But this is something that still needs to become more widely implemented.
The "manual" way to open off-instance links locally is to enter their full source url into search on your instance, which should give you their local version as the sole result.
User mentions do not need to be links, same as communities. Just write @username@instance.com and nearly all clients will correctly make it clickable, and Lemmy will also detect and notify the user about the mention.
I don't use any client besides the web-ui. There is no reason for the webui to not impiment obvious features found in multiple client apps, but yes, you've hit the nail on the head as to a desirable version of this behavior.
There is one big reason: it requires time and effort.
The vanilla web-UI is inferior to other clients in a variety of ways, and any feature requires that someone somewhere get it done.
You could make an endless list of things that are "no-brainer" features for someone to add, but the development still requires that someone somewhere go down that list, one item at a time.
For example, Lemmy only recently got the ability to show the real number of subscribers that communities have, instead of showing the number of subs from the instance you were looking at that community from. That's nice, but each update can only come with a subset of the endless number of obvious improvements that could be made.
No client currently does everything that the Lemmy server can technically be made to do with the currently implemented API calls. But the solution to agnostic links already exists. Any instance, when handed the url to a post or comment, no matter what instance it is for, is able to turn that into the corresponding local url/ID, the work to make use of that to make all links work everywhere simply hasn't been put in yet.
Not that long ago just mentioning communities and users was a pain, but that's mostly solved now. Posts and comments will be too. Eventually.
One potential downside to this on the posts/comment front is that if the thread in question is not in a community your instance is federated with, any form of local redirect would yield just an empty post with no comments. Lenny’s current federation is primarily push driven, so when requesting a post from an unknown community will yield no historical comments, as your instance have never subscribed to the community and thus never received the push notifications. Whereas getting sent to the original instance, you’d be able to see the full interaction history and have a better picture of the intended discussion.
I don't care about getting sent to the original instance per se. Getting sent to a landing page on the local instance that says "Hey, we aren't federated with that instance, and/or no one on our instance has subscribed to that community. Here's an externalized(http/url) link to the content you've attempted to access, with no guarantee it will work.
Understand that you may have to make an account with that instance or an instance federated with them if you wish to actually interact with this content."
how exactly would you propose that instance-agnostic links like this work? How should it behave, and how would you overcome the centralization, privacy, security, etc. concerns that it raises?
Because I can see a lot of different answers here and each have some unique challenges. But I agree, it is annoying to work around.
Sure, UUIDs are a useful tool. What of it? If I put a UUID in a comment, it isn't a link. This doesn't answer my question or solve the problem. The link has to go somewhere on the web, or use a custom protocol specifier and be handled by a client application or something installed on the user's machine. If you go the client app route, many/maybe even most people use lemmy in a browser at least some of the time, and this will never get the full adoption required to make it standard. If you go the web link route, then you have concerns like "who owns the domain/service that does the redirecting" (ie matrix.to), can they be trusted, how can they automatically tell which instance to send users to without privacy concerns?
If you're proposing overhauling the whole architecture of lemmy to use consistent UUID-based IDs for comments, posts, etc. across all instances, that could probably work but there are some edge cases especially with malicious actors, and it would be a huge undertaking.
A better idea, IMO, is to let client apps/frontends handle the translation, so that regardless of what instance the comment is linked on, it is translated to the correct local link for local users (unless the instances aren't federated), since there's already the fedilink button to then see the post on the original user's instance, but there are probably edge cases and performance issues I'm not thinking of/privy to, and its still a non-trivial fix, which is why it hasn't happened yet. I'm sure the devs would welcome such a change if a PR were submitted with the kinks worked out, but it isn't on their current priorities list afaik
Why should I have to download an app to impliment an obvious feature that should just work in the web-UI? Lemmy is still in active developement, and there is no good reason to treat it like an immutable legacy code-base that should require external scripts and hacks in order to present and interact with properly.
My original version/thought?
If the comments/posts were just numbered relative to their communities instead of generated by each instance, there wouldn't have to be this disconnect at all. /c/piracy@lemmy.dbzer0.com/post/18177167
Would be THE instance-agnostic link for that post, and /c/piracy@lemmy.dbzer0.com/comment/9620373
THE instance-agnostic link for that comment.
We're already using the LINK button on whichever post/comment to copy this stuff to our clipboards, so its not like there should be some massive concern over making people type too much. Url-shortening is also an option, but half the shortenned url's I deal with any more are dead links - the page/original url isn't gone, but the shortened version has been expired.
We wouldn't even have to redo how the instances generate content numbers for posts/comments generated locally, but set them to pull such numbers in for each post/comment mirrored from another instance. Not even slightly hard to come up with, though I don't have my laptop with me so I'll refrain from speaking on the difficulty of implimentation versus all the "legacy-numbered" content already out there.
... seems like it would be easier to impliment without breaking most existing links versus UUIDs, BUT UUIDs are more of a standard, and either method would probably be best implimented with a server-side(or page-embedded and executed client-side) method for translating legacy links to the new version.
Anyhow, other users have provided context on where discussions are taking place on how to improve the issues you brought up. It's not a static legacy codebase, but nor do ideas spring to life without dev effort.