Description
Feature Description
In #19133 a basic ActivityPub API was added to the router, allowing lookup of an actor document and POSTing to inbox. However, the API as present in Swagger currently depends on the username, which means that username changes are not possible without causing breakages in federation. This should be fixed before federation is ready. Further rationale is included in #19133 (comment) and quoted below for convenience:
You can avoid having to issue a Move if you just don't use the username in any ids. Move should be reserved for moving to different domains, not changing usernames. It's completely unnecessary and completely avoidable for local username changes. I heavily recommend using something like snowflake, hash, uuid, etc instead of plain usernames. You want the ActivityPub id to be as stable as possible and ideally never change.
Screenshots
Relevant code:
gitea/routers/api/v1/activitypub/person.go
Lines 20 to 36 in 3e8db31
I believe this should be ctx.ContextUser.ID
or something similar.
Activity
lunny commentedon Mar 30, 2023
But wouldn't the id be changed in a different system?trwnh commentedon Mar 30, 2023
No, the ActivityPub
id
is an HTTPS URI that should remain constant. For example, if we have something likehttps://example.com/userid
then the username is free to change without breaking theid
. But if we make theid
something likehttps://example.com/username
then a change fromusername
todifferent_username
will be seen as a completely different actor. All old comments, repos, etc. will no longer be linked, and all followers will have to be migrated to the "new" account.ghost commentedon Mar 30, 2023
@trwnh Thanks for the reminder. I'll implement this soon in
forgejo-federation
.Use User.ID instead of User.Name in ActivityPub API for Person IRI (#…
Use User.ID instead of User.Name in ActivityPub API for Person IRI (g…
Use User.ID instead of User.Name in ActivityPub API for Person IRI (#…