Add user activities actor

Why are we doing this work

The last ActivityPub actor for social features! After this, anyone on the Fediverse can follow a user on a GitLab instance, just as they can follow users on their own app. And with that, we will have the stack and experience to tackle the real deal, cross-instance merge requests. :) But first… 😅

Profile

That one is easy because it's basically the first resource ActivityPub has in mind.

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": USER_PROFILE_URL,
  "type": "Person",
  "name": USER_NAME,
  "url": USER_PROFILE_URL,
  "outbox": USER_OUTBOX_URL,
  "inbox": null,
}

Outbox

The user actor is special because as a god object, it can basically be linked to all events happening on the platform.

It's basically a join of events on other resources:

  • all release activities
  • all project activities
  • all group activities

And of course, we should only publish those activities for projects/groups that are public.

Relevant links

Non-functional requirements

  • Documentation:
  • Testing:

Implementation plan

  • actor's profile endpoint
  • actor's outbox endpoint
  • emit ActivityPub push requests

Verification steps

TBD