If a Lemmy user has the same name as a community, how can I tag the community on Mastodon?
-
In webfinger, the sidecar protocol we use to look up actors, lemmy does distinguish between community and user actors. Mastodon needs to up their game.
I am not so sure Mastodon is at fault, here. Going to
https://lemmy.world/.well-known/webfinger?resource=acct%3Avinyl%40lemmy.world, this is the result:{ "subject": "acct:vinyl@lemmy.world", "links": [ { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://lemmy.world/u/vinyl", "template": null }, { "rel": "self", "type": "application/activity+json", "href": "https://lemmy.world/u/vinyl", "template": null, "properties": { "https://www.w3.org/ns/activitystreams#type": "Person" } }, { "rel": "http://ostatus.org/schema/1.0/subscribe", "type": null, "href": null, "template": "https://lemmy.world/activitypub/externalInteraction?uri=%7Buri%7D" }, { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://lemmy.world/c/vinyl", "template": null }, { "rel": "self", "type": "application/activity+json", "href": "https://lemmy.world/c/vinyl", "template": null, "properties": { "https://www.w3.org/ns/activitystreams#type": "Group" } } ] }So, lemmy is just providing two different actors for the same subject name and saying they refer to the same account.
-
I am not so sure Mastodon is at fault, here. Going to
https://lemmy.world/.well-known/webfinger?resource=acct%3Avinyl%40lemmy.world, this is the result:{ "subject": "acct:vinyl@lemmy.world", "links": [ { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://lemmy.world/u/vinyl", "template": null }, { "rel": "self", "type": "application/activity+json", "href": "https://lemmy.world/u/vinyl", "template": null, "properties": { "https://www.w3.org/ns/activitystreams#type": "Person" } }, { "rel": "http://ostatus.org/schema/1.0/subscribe", "type": null, "href": null, "template": "https://lemmy.world/activitypub/externalInteraction?uri=%7Buri%7D" }, { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://lemmy.world/c/vinyl", "template": null }, { "rel": "self", "type": "application/activity+json", "href": "https://lemmy.world/c/vinyl", "template": null, "properties": { "https://www.w3.org/ns/activitystreams#type": "Group" } } ] }So, lemmy is just providing two different actors for the same subject name and saying they refer to the same account.
What if the community was the first entry in the results instead of the user? Maybe that's more appropriate and might cause Mastodon to default to the community when there's a conflict
-
I am not so sure Mastodon is at fault, here. Going to
https://lemmy.world/.well-known/webfinger?resource=acct%3Avinyl%40lemmy.world, this is the result:{ "subject": "acct:vinyl@lemmy.world", "links": [ { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://lemmy.world/u/vinyl", "template": null }, { "rel": "self", "type": "application/activity+json", "href": "https://lemmy.world/u/vinyl", "template": null, "properties": { "https://www.w3.org/ns/activitystreams#type": "Person" } }, { "rel": "http://ostatus.org/schema/1.0/subscribe", "type": null, "href": null, "template": "https://lemmy.world/activitypub/externalInteraction?uri=%7Buri%7D" }, { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://lemmy.world/c/vinyl", "template": null }, { "rel": "self", "type": "application/activity+json", "href": "https://lemmy.world/c/vinyl", "template": null, "properties": { "https://www.w3.org/ns/activitystreams#type": "Group" } } ] }So, lemmy is just providing two different actors for the same subject name and saying they refer to the same account.
Agreed... I didn't respond right away since I wasn't sure if I was right, but there are two constraints at play here:
- Lemmy wants to allow communities to be named the same as a user
- This is not allowed in webfinger (insomuch that multiple IDs reports should refer to the same entity)
You can fault Mastodon for not handling it, but I think the onus is on Lemmy to adjust their behaviour.
For reference, the same constraint happened with NodeBB. When we started, categories didn't have handles and were not unique with users (so, a category could be named the same as a user). I needed to make the handle unique between both categories and users, for this exact reason.
-
What if the community was the first entry in the results instead of the user? Maybe that's more appropriate and might cause Mastodon to default to the community when there's a conflict
That might work, but it's never a good idea to write your code against a specific implementation. Plus, it seems that in this case the Lemmy devs shot themselves in the foot: why allow to create two different types of actors with the same name?!
-
I sound like a broken record, but none of this would happen if the devs took a good look at RDF before throwing everything into objects/classes and ORMs.
I'm working on something that aims to be compatible with Lemmy's API, and my models are based on the context definitions first. This means that it becomes impossible to have communities and users with the preferred_username, because they are both actors.
-
That might work, but it's never a good idea to write your code against a specific implementation. Plus, it seems that in this case the Lemmy devs shot themselves in the foot: why allow to create two different types of actors with the same name?!
I agree. Users shouldn't be allowed to choose a name that already exists as a community. But it would be a shame if communities could not be created because a user with that name already exists.
-
I agree. Users shouldn't be allowed to choose a name that already exists as a community. But it would be a shame if communities could not be created because a user with that name already exists.
I think this is yet-another reason to have a separation between users and communities at the instance/domain level.
Setting up a server should require one top-level domain and two subdomains:
https://myserver.com/would be for webfinger and the actual backend.https://groups.myserver.com/would be the subdomain for the AS2.Group actorshttps://people.myserver.com/would be the subdomain for the AS2.Person actor
-
Regardless of how webfinger is supposed to work, Lemmy has now got a situation where there are many many overlapping actors. I don't see a clean way out of this for them so it'll probably persist.
Lucky this came up because I have been meaning to make PieFed work the same as Lemmy, with multiple actors in the webfinger response!
-
Regardless of how webfinger is supposed to work, Lemmy has now got a situation where there are many many overlapping actors. I don't see a clean way out of this for them so it'll probably persist.
Lucky this came up because I have been meaning to make PieFed work the same as Lemmy, with multiple actors in the webfinger response!
By the time it (unique handles between users and categories) was needed, NodeBB had been around for 10 years and installed in countless places.
It needed to be done in one fell swoop so we coded an upgrade script that prioritized the user slug (as historically it had been around longer).
Hopefully the only thing you really have to federate out is an Update, but who knows what'll happen.
-
https://github.com/LemmyNet/lemmy/issues/1922
Unlikely to change. I found a more recent issue that was closed with a link going to that one, so they've been over this multiple times over the years and don't want to budge.
PieFed will continue to disallow communities and feeds to have the same name as users, that will maximize compatibility.
-
I think that's just a way of getting a link to the community, but it doesn't actually tag the community in your post or make it get posted into that community. I just tried it, and the post does not show up in the community that I mentioned with
!.Is there no way for an app to say "give me the community only" or "give me the user only" when it calls the webfinger lookup thingy? Because if there is, then Mastodon devs could update the behavior on their side to depend on whether the name starts with @ or ! (the same way Lemmy apps do).
-
I also posted this question in another comment thread, but is there no way for an app to say "give me communities only" or "give me users only" when calling the webfinger lookup thingy? Because if there is, then Mastodon devs could update the behavior on their side to depend on whether the name starts with @ or ! (the same way Lemmy apps do).
-
I also posted this question in another comment thread, but is there no way for an app to say "give me communities only" or "give me users only" when calling the webfinger lookup thingy? Because if there is, then Mastodon devs could update the behavior on their side to depend on whether the name starts with @ or ! (the same way Lemmy apps do).
Nope, it's just a.single route, no filters or qualifiers I am aware of.
One could go through the returned accounts and see which are users and which are groups, although that's expensive and time consuming to do.