swicg / swicg/groups

Create sub-groups within a group

Open
#32 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

user story
Dominant language
HTML
Stars
8
Forks
1
PR merge metrics
No merged PRs in 30d

Description

"As a group admin, I want to create sub-groups within my group, so members can organize discussions by topic."

Besides linking related groups (see https://github.com/swicg/groups/issues/31), we implemented a tree structure where:

  • Groups can contain child groups (channels/topics)
  • Channels inherit properties from parent groups
  • Members can browse by channel or see all group content

Existing approaches:

  • Schema.org: hasPart/isPartOf for parent-child relationships
  • Nodebb: Nested categories

Suggested representation for a parent group:

{
  "type": "Group",
  "id": "https://example.org/groups/programming",
  "name": "Programming",
  "attributedTo": ["https://example.org/actors/alice"],
  "hasPart": [
    {"type": "Group", "id": "https://example.org/groups/programming/rust", "name": "Rust"},
    {"type": "Group", "id": "https://example.org/groups/programming/python", "name": "Python"},
    {"type": "Group", "id": "https://example.org/groups/programming/elixir", "name": "Elixir"}
  ]

Suggested representation for a child group:

{
  "type": "Group",
  "id": "https://example.org/groups/programming/rust",
  "name": "Rust",
  "isPartOf": "https://example.org/groups/programming",
  "attributedTo": ["https://example.org/groups/programming/attributedTo"],
  "interactionPolicy": {
    "canJoin": { "automaticApproval": ["https://example.org/groups/programming/followers"] },
    "canModerate": { "automaticApproval": ["https://example.org/groups/programming/attributedTo"] }

Key patterns:

  • isPartOf links to parent group (we could also use context but this makes more sense if also using hasPart for child groups)
  • Child can reference parent's collections in interactionPolicy for permission inheritance
  • Child can have its own attributedTo or reference parent's

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with issue #32 and the linked groups issue #31, then compare the proposed parent and child Group representations with the existing Groups Task Force conventions. Review the hasPart/isPartOf relationships, inherited properties, and interactionPolicy examples; done requires an agreed representation for nested groups and permission inheritance.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.