Group Boundary Model — 4 Dimensions

Copy Markdown View Source

Note: The authoritative source for current dimension slugs, labels, and icons is extensions/bonfire_boundaries/lib/runtime_config.ex (preset_dimensions) and extensions/bonfire_classify/lib/runtime_config.ex (group_presets, layer2_toggles). The GET /api/v1-bonfire/boundaries?context=group endpoint exposes this config at runtime. This document is background reference only.

Groups have four independent boundary dimensions. Each has a small set of meaningful options. Picking a named preset (Layer 1) sets all four at once; Layer 2 toggles and Layer 3 raw dimension values override individual axes.


1. Membership — who can join

SlugMeaning
openAnyone can join freely
local:membersAnyone on this instance can join
archipelago:membersAnyone on a trusted/linked instance can join (not yet implemented)
on_requestAnyone can request to join; moderator approves
invite_onlyOnly moderators can add members (no join/request button shown)

2. Group visibility — who can see the group and its content (:see / :read verbs)

SlugScopeFull accessDiscoverable onlyUnlisted
nonfederated / nonfederated:discoverablePublic (local only)nonfederatednonfederated:discoverable
local / local:discoverableLocal instancelocallocal:discoverable
members:privateMembers onlymembers:private

Archipelago-scoped variants are planned but not yet implemented.

3. Participation — who can post/interact (:create, :reply, :boost, :like verbs)

SlugMeaningConstraint
anyoneAny userDisabled when visibility is members:private
local:contributorsLocal usersDisabled when visibility is members:private
group_membersMembers onlyDefault
moderatorsModerators onlyMembers can read and react but not post

4. Default content visibility — how posts in this group are shared by default

SlugScope
nonfederatedVisible to anyone on this instance including guests
localVisible to logged-in local users
members:privateVisible to group members only

Preview (:preview) and quiet (:quiet) variants are defined in config for future use.

Cascade constraints

Post visibility options are automatically disabled based on group visibility:

  • nonfederated — disabled when group is local:* or members:private
  • local — disabled when group is members:private
  • members:private — always available

Named Presets (Layer 1)

Preset IDMembershipVisibilityParticipationDefault post vis
public_local_communitylocal:membersnonfederated:discoverablelocal:contributorsnonfederated
announcement_channelinvite_onlynonfederated:discoverablemoderatorsnonfederated
private_clubon_requestlocal:discoverablegroup_membersmembers:private

Layer 2 Overrides

KeyTogglesLocked by
discoverableGroup discoverable in listings/search
federateGroup reachable from other instancesall presets (until federation ships)
approval_requiredModerator must approve join requestsannouncement_channel, private_club
anyone_postsAny eligible user can post (not just members)announcement_channel, private_club