I am well aware that Create and Like are just activities and the protocol doesn’t care in that sense. But to say that a private Note sent between very few Actors has just the same privacy implications as a Like broadcast widely to basically all instances - that seems very reductionist and not very pragmatic to me.
I don’t know the inner workings of Lemmy in detail, but let’s give Lemmy and similar apps the benefit of the doubt - let’s assume they only display Likes publicly when as:Public
is in the audience (while still showing a total count of all votes, private or public). Even in that case, can you trust that all instances you send Likes to run an unmodified Lemmy that respects as:Public
or lack thereof? Also, some instances obviously run different software than Lemmy - can you trust those to respect this too?
I get that in principle all instances should respect this, but there is no mechanism in ActivityPub to enforce it. It seems easy for a malicious instance to gather Likes and make them public for all to see, regardless of as:Public
. Sure, you can defederate such an instance once you find out, but then the cat is out of the bag and all votes collected while the instance was up are still leaked and thus public. Not to mention that these Likes are obviously always public for instance admins, who can just examine the activities that come in. So in that sense you can never Like something privately, admins of other instances will always know.
It really seems to me that there is some kind of enforcement missing in ActivityPub around this use case. The mechanism that PieFed is now experimenting with is a bit of a hacky workaround to enforce that privacy - but is there a better way? Are there problems with this approach? More generally, should ActivityPub strive to support this use case better?
Doesn’t this lead to a much worse experience for any small Mastodon instances? I mean a small instance would basically not see any Likes in that case while larger instances would, no? Or am I misunderstanding something? Doesn’t this encourage centralization in large instances? That feels like the opposite of what you want to encourage on the fediverse, and it doesn’t sound like a good UX to me either. Also surely the like count can’t be “faked” if you receive the Likes directly from the instance that liked a post?
Why is this a “fool’s errand”? It is at least what Lemmy, PieFed and Mbin do AFAIK. Are you saying that the Lemmy, PieFed and Mbin developers are fools? I assume not, but your language is a bit harsh here. I haven’t studied their code in detail so maybe I’m misunderstanding something but I don’t see how else it would work.
How else would you obtain an accurate Like count across instances? It sounds like you are suggesting that an instance should pull the Likes collection from the instance with the post in question, but that doesn’t seem scalable - when would you stop pulling? You can’t just keep updating Likes by pulling from the origin for all old posts forever.
You need some kind of push mechanism - does ActivityPub provide any way to push updates to collections for external posts? I.e. when the origin instance receives a Like, it could broadcast that Like (or updated Like count) out to all instances so they could update their counts. But that isn’t much different from sending the Like directly from the liking instance (in fact, it puts more load on the instance with the Liked post, which probably isn’t what you want).
I’m very curious how you suggest Lemmy, PieFed, Mbin and other similar Reddit-style apps should otherwise attain an accurate vote count across instances, if they are not to broadcast the votes out to all instances. Is there any easier way?