When I follow a community remotely, its handle always mimicks that of a user. E.g, asklemmy is @asklemmy@lemmy.ml
Does this imply that communities can reserve usernames? If not, how does Lemmy distinguish between users and communities remotely?
When I follow a community remotely, its handle always mimicks that of a user. E.g, asklemmy is @asklemmy@lemmy.ml
Does this imply that communities can reserve usernames? If not, how does Lemmy distinguish between users and communities remotely?
Yes, lemmy allows communities and users to have the same name. Other software may not be able to handle this, e.g. mastodon. This causes compatibility issues with mastodon if you search for a user and a community with the same name. I think mastodon will just ignore the community because the name is already reserved on that instance. But if you search for a community that doesn’t overlap with a user, mastodon will resolve it correclty
Out of curiosity, how come Lemmy can’t expose communities as “@!community@domain” instead?
I’m not a lemmy contributor so everything i’m saying here is conjecture.
The problem is when any software does a webfinger request to get the
Actor
(which could be a user or community) they send a request that looks likeGET lemmy.ml/.well-known/webfinger?acct=community@example.tld
and lemmy’s response may contain multiple actors but mastodon expects only one actor. Lemmy handles this by fetching both actors in the webfinger response and checking their type, which will beUser
orGroup
(which is what lemmy calls communities).Note that the webfinger request doesn’t include the leading
@
or!
character because those character are just UI affordances to linkify the community. The !community@domain.tld format isn’t a part of any standard and is never exposed to other software.I started reading the page on lemmy federation details (I don’t know when that appeared, but it’s going to make better AP docs than the RFC, surely), and realised that in fact the @user@instance syntax isn’t even real AP. Now it makes sense.