PSA: Two major points of criticism regarding Lemmy's user experience will be addressed soon
Firstly, there is the unstoppable flood of new posts that are added while browsing "All". Although this doesn't happen when using the Jerbea app, it sometimes renders "All" unusable in the browser.
This will be resolved once websockets are removed with the next update:
Secondly, the issue of the same posts being displayed for days under "Hot". There is already a pull request for this, so it has been fixed and just needs to be implemented:
Links to external instances should automatically be transformed when opened so that one can participate with the account of their own instance. For example, lemmy.world/c/memes should automatically become feddit.de/c/[email protected].
Communities from different instances should be able to merge, allowing users to see the content of all communities across different instances.
I posted this in Ask Lemmy but since it didn't get traction I'm gonna piggyback on the visibility of this thread:
As i learn my way around ActivityPub based services, what stands out to me the most is federation is very much exposed to the users. (That, or I still just haven’t wrapped my head around the architecture details and how they manifest in terms of user experience.)
Am I just misunderstanding this, or would the end-user experience be more fluid and functional if the federation mechanics were mostly ‘under the hood’. What I mean by that is - right now if there’s a community I would enjoy participating in that is located on a different instance, in order to do that I need to (a) know it exists in the first place, (b) know what instance it is on, and (c) explicitly tell my instance about its address in order to join.
Would it be possible to have some form of master index (replicated across instances - not a centralized service) along with a public standard for registering an instance/community on the index? And if something like that existed, couldn’t that push what is an inherently more technical detail to lower levels of the implementation, and make for a simpler UX by allowing every instance to expose a more complete list of communities to users from directly within whatever instance they choose to use?
This is probably the biggest issue I have with Lemmy right now. To make matters worse, it's really easy to miss how the system works. A lot of new users on smaller instances probably think this place is a ghost town because they don't see many communities in the directory. It's not ideal to have to use an external tool to find communities, then extra problematic that the actual process is so awkward: manually pasting the address from the external site in the search bar, then you get a "community not found" warning but ignore that, then the community will appear but it'll grab the old posts and not the comments. Weird.
I can accept that it would be too much if every single instance defaulted to a full local sync of every other community on every other instance, but they should at least show up in a list when searched for, IMO.
Am I just misunderstanding this, or would the end-user experience be more fluid and functional if the federation mechanics were mostly ‘under the hood’.
I know what you mean, but I'm not sure it's a good idea. Look at the recent beehaw-defederation drama. This would have been totally intransparent if the whole federation thing would be something that's only running behind the curtains.
I mean, you dont have to do it personally. Just someone from your server has to tell the local server "hey, im interested. Please give this server a feed" and then everyone on that server now gets a feed. You can also use the community search and just select all and then it will search out and then you can subscribe from that page. It's basically a master list of communities. For instance https://lemmy.world/search/q/pokemon/type/Communities/sort/TopAll/listing_type/All/community_id/0/creator_id/0/page/1 then everyone on lemmy.world now has to deal with an influx of pokemons...
I might be misunderstanding but it basically works the way you want it to work but in a different way than you want it to work.
Yeah, notably it pulls all(?) the old posts but not the old comments. Good enough for most use cases but kind of annoying if there were any active discussions you wanted to take part in.
I think what you're describing is different. It lists only the communities the current instance knows about, it does not list all communities on all instances, and it doesn't even list the subset of all communities on known instances.
It may make things simpler for the user, but at the cost of storage and performance of every instance in the index, which won't scale well as more instances are added over time. I personally think it's better the way it is. As long as you are educated enough to know how to federate with other instances you choose to federate with, you can keep your own instance minimally connected to only the instances and communities you actually care about.
Maybe a good compromise would be for such an idea as a globally replicated index, to be optional, so individual instances could keep it disabled if they wanted to. If you choose to enable it as an instance owner, the pain points for your end users go away, at the cost of performance and other potentially negative side-effects. If you choose to keep it disabled, you can still federate with any instances you want, but you won't participate in the index. Or maybe your instance would be listed and replicated to other instances' indexes, but your own instance won't receive updates as the global index continues to grow. Since it would just be for convenient discoverability, there's not really any problem with that. No functionality would be lost for your or any other instance.
I think for a platform like this, in any case, a little bit of extra user education goes a long way. We shouldn't be too afraid of expecting end users to educate themselves a bit, and we shouldn't be too eager to hold their hands every step of the way. It makes for more adept end users and a healthier overall community, in my opinion. It's like encouraging movie lovers to get off the couch and exercise once in a while.
I’d think the cost to storage and performance would be trivially small, not even a rounding error relative to the over server/host loads associated with an instance.
Would it be possible to have some form of master index (replicated across instances - not a centralized service)
Wouldn't this cause similar issues to blockchains, where new users need to download a huge blockchain file? New instances would need to download an enormous list of every single community on every single server. Wouldn't that eventually cause issues?
Nah, the file would be small and only instances would need to keep a record of it. It's no different from the community list already maintained by instances, just would be extended to cover all participating instances. even if there were 1 million rows to the table, that's a very tiny dataset.
Would it be possible to have some form of master index (replicated across instances - not a centralized service) along with a public standard for registering an instance/community on the index?
Sure, this and anything else is possible as long as people have the motivation and knowledge to pursue and implement it.
Something similar to DNS standards could work for Fediverse sites. In fact, why not piggyback on DNS like the SPF, DKIM, DMARC, and even openpgp4fpr / KeyOxide standards. DNS itself fulfills the first two requirements:
Some form of "master index" - check! ✅
Replicated across "instances" - check! ✅ ... in a sense ...
If you consider: Zone Transfer / AXFR a form of "replication"
If you consider DNS servers a "node" / "instance"... rather than just a Lemmy/Kbin/Fediverse "instance"
For the second point about DNS zone transfer... it used to be the case that anyone could issue the AXFR request to a DNS server. However, this basically dumps all the records on a DNS server's zonefile for that domain. So, it's often disallowed nowadays because it discloses all hosts in the zone file, some of which might be considered private by the domain owner. Instead, server admins usually configure this to only be allowed by trusted IP addresses of other hosts. (I guess it's a very crude form of "web of trust" based on IP allow lists and the whims of a SysAdmin.)
Maybe the Fediverse has use for piggybacking on DNS via TXT records for some use cases. However, it's likely that some other decentralized method of replication might be invented specifically for federation with other ActivityPub servers.