From 3e2aebc83ecddb30fdb3ef3af6cf9429ee420458 Mon Sep 17 00:00:00 2001 From: dholms Date: Fri, 9 Oct 2026 13:57:29 -0500 Subject: [PATCH] specify group creation and migration --- proposal.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/proposal.md b/proposal.md index 5dd0bcc..2820b22 100644 --- a/proposal.md +++ b/proposal.md @@ -99,6 +99,21 @@ A user can authorize a scope only if their roles grant it. Methods for personal actions, such as joining, leaving, or reporting, use service auth from the person's own account instead of a group-DID session. +## Creating a group + +An application creates a group by starting the [OAuth flow](#writing-as-the-group-did) at the group host with `prompt=create`. The host authenticates the creator through their PDS, creates the group account, and returns a group-DID session. This is how an application may allow a user to sign up for an account on a PDS. + +Each group host decides who may create groups and under which circumstances. For example, a group host may have a relationship with a particular app or require invite codes. + +A new group starts with: + +- a DID and handle +- the `meta` and `members` spaces, each with an `access` record +- a `profile` and a `permissions` record +- a `membership` for the creator, with a role that grants every scope and can assign every role + +Particular role semantics are not required, though common practice may be for hosts to default to an `admin` role for the creator and a `member` role that can read the `meta` and `members` spaces. + ## Presence & Discoverability Each group has a profile that it publishes in its `meta` space. This includes some basic metadata about the group such as a display name and a profile picture. It also includes records describing the rules of the group. @@ -135,6 +150,12 @@ Only the user (and authorized applications) may read the space. In other words, The group writes and deletes invite records in its own repo through the standard CRUD methods. Deleting an invite revokes it. +## Migration + +A group migrates to a new host through the standard account migration flow, including the migration of its space repos. Everything the group stores in repos, including labels, moves with it. + +Private host state does not migrate. This includes join requests, the moderation queue and history, and OAuth sessions, which users authorize again on the new host. A host may offer an export of its moderation history, but `opensocial.group` does not define one. + ## Group governance The `opensocial.group` standard is intended to standardize the interface between applications and groups. Therefore, group governance is generally considered out of scope. -- 2.51.2