[Proposal] WG for group/community standards and infrastructure in ATProto

TLDR: I’m proposing a working group to develop shared interoperable standards for community infrastructure within ATProto. Many teams are independently making foundational design decisions about group/community membership, governance, and infrastructure. Without coordination, a de facto standard will calcify from momentum rather than deliberate evaluation of the ranges of community needs. I provide initial questions and principles to start discussion.

Many people, apps and projects in development are tackling the question of group/communities in ATProto:

And there are almost certainly even more good contributions, proposals think pieces, discussions, and projects I’ve missed here. I encourage people to post anything I’ve missed below.

It’s quite striking to me how wide the breadth is for each of these works. Each implementation, discussion, and think piece, by necessity, makes design decisions about what a community is, how membership and gating works, where authority lives, and how governance operates. Many (though not all) are working toward interoperability between apps and social experiences. But, interoperability can only be maximized if there exist shared foundations…

This means more than just schemas. It also includes shared approaches to membership, governance, social spaces, and the surfaces that apps need to mediate community experiences consistently.

As of now, each project focuses on good design for their particular use case. While appropriate for app-level design, this does carry risk at the protocol level. If and when an approach optimized for a use case “wins out” as a protocol standard, its design can inadvertently foreclose others through implicit defaults that go unexamined until a group or community with different needs tries to build on it. Constraints become semipermanent once baked into a standard.

The problem space is wider than any single effort can see, and no one workstream can fully evaluate its decisions against the full range:

  • Protocol designers see the technical affordances at the protocol level, what the primitives can support, and where the constraints fall.

  • Community builders and maintainers bring experience with the modalities, use cases, and governance considerations for communities independent of any one implementation.

  • Safety-focused projects focus on the failure modes at the privacy/permissioning and safety level — how they occur, how they’re prevented, and how they can be addressed when prevention fails.

  • Application developers see how community structures and decisions become user-facing realities, including how presentation could shape behavior and vice versa.

Each perspective is necessary, yet no perspective is sufficient for creating a robust standard.

Right now, each is working in parallel, producing good work, but without a venue to surface how decisions might integrate, synergize, or conflict. If we create such a venue, we have a better opportunity to build communities in the social web that are genuinely portable, interoperable, and resilient across the fullest spectrum of community models and social experiences.

For these reasons, I propose a working group to develop shared standards for community infrastructure in the AT Protocol.


Areas to Address

I’ve spent some time trying to map out the breadth of this problem. The following are areas I think the group would have to work through, framed here as questions for discussion, in no particular order and not necessarily exhaustive:

Community Identity and Discovery

  • What is a “community” at the protocol level? What is “membership” “social context”, “social space”, and “governance”? Under what kind of ontology are we operating?
  • How are communities represented, discovered, and presented as a coherent entity?
  • How do communities bind their infrastructure and services (e.g. feeds, labelers, moderation tools, social spaces) into a legible structure with a coherent entry point for new members?

Membership

  • How is membership issued, verified, revoked, and carried across services?
  • How does membership remain verifiable across issuer failure, infrastructure failure, and stewardship transitions?
  • What are the requirements for communities where membership itself is sensitive information?

Data and Social Spaces

  • How is public and permissioned community level data stored, indexed, permissioned, and addressed?
  • How are social contexts within communities created, addressed and routed — from public, permissionless coordination to private, access controlled spaces?
  • How do spaces relate to apps, to each other, and to the community’s membership boundary?
  • How can sensitive group/community data be handled for safety-critical communities?

Governance and Authority

  • How is governance authority represented, scoped, delegated, and transferred without prescribing any single governance model?
  • Should and how are governance decisions made legible and auditable?
  • How do communities survive stewardship transitions, such as failure, succession, and constructive forks?

App Mediation/UX

  • What does the protocol provide to applications so they can render community experiences consistent with community intent?
  • How do communities control which apps access their data, across the full range from permissionless to single-app only?
  • How can members observe and evaluate app behavior with respect to community governance?

Topology and Composability

  • How do communities relate to each other — including nesting, federation, and shared infrastructure?
  • How do communities subdivide, and evolve their structure over time without requiring or precluding top-down coordination?

Proposed WG Organization, Structure, & Phasing

This is a much broader and more cross-cutting problem space than most working group topics, as it touches identity, data, governance, safety, and application behavior simultaneously. Moreover, decisions in one area may constrain decisions in every other. The cross-cutting nature of the problem space itself means this WG can’t scope tightly around a single concern like other WGs. This is precisely why a working group is needed. Multiple people with different kinds of expertise for different concerns is paramount to creating a robust set of deliverables.

Because of this cross-cutting, the WG would likely need more deliberate structure than a typical working group to avoid scope creep and decision paralysis. I think one of the group’s first conversations needs to be about how to keep the work focused — i.e. what to address directly, what to defer, and how to ensure longer-horizon areas inform, but don’t stall, near-term progress. Perhaps this could be done through both a charter and some kind of phasing, such as:

  • Phase 1: Shared ontology and community archetypes (i.e the “what are we even talking about” phase, ontology semifluid pending future work)
  • Phase 2: Membership and identity primitives (or the narrowest, most concrete interoperability surface)
  • Phase 3: Governance, spaces, and composability (the harder, higher-level work)

Domain representation

Domain representation could address the cross-cutting nature of the problem space while limiting the breadth and commitment required from individual WG members. The WG could identify key domains within the problem space and recruit trusted domain leads to act as representatives for each. These representatives would evaluate proposals and deliverables through the lens of their domain’s specific needs and failure modes. This would let the WG work on concrete deliverables without requiring every participant to hold every concern in mind at all times, while still ensuring no concern is overlooked.

Proposed Principles & Methodology

A few things I think should guide the works, which I propose as starting points for conversation:

Potential guiding principles:

  • Enable, don’t prescribe. The WG should define infrastructure for community models. It should not prescribe models or governance itself.
  • Safety is a first class constraint. Communities where membership or participation creates real-world safety risks should be accounted for in every deliverable.
  • Resilience is a first class constraint. Irrecoverable community failure due to a single point of failure should be treated as an unacceptable outcome unless no other alternatives exist.
  • Assume adversarial conditions. Community primitives should be evaluated against coordinated abuse across layers as an expected condition.

Potential design approaches:

  • Minimum viable standardization. The WG should identify and atomize the smallest shared foundation that enables portability, resilience, and cross-app legibility. Implementation-specific extensions should occur above that layer.
  • Support community evolution. Deliverables should account for community evolution over time: composition, subdivision, forking, and governance changes.
  • Identify irreconcilable fractures. Where design tensions across community models are irreconcilable within a single primitive, distinct design regimes may be warranted, even if they break clean interoperability.
  • Protocol enables behavior, while apps guide it. The protocol layer should maximize affordances for group behavior. The app layer should guide towards positive behavior.

Potential Methodology:

  • Evaluate against concrete archetypes. The WG should define a small, representative set of community test cases to benchmark against. e.g. — large, open interest communities, private support groups where membership is sensitive, professional credentialing bodies, geographic neighborhood groups, creator-audience communities, etc..
  • Time-box the first milestones. A first deliverable within a few months (even if just a shared ontology and problem statement) would establish momentum, surface disagreements early, and produce artifacts the ecosystem can build and define against.

This WG is not a call to pause what anyone is building of course. After all, products produce real-world evidence of community needs and dynamics the WG deliverables should be evaluated against. This WG would merely exist to encourage convergence on shared foundations rather than diverging into several incompatible ones.

Conversely, I would encourage anyone with a stake in the shape communities take on the protocol — whether that be building community tools, running on or off-protocol communities, designing governance systems, developing apps, or even just thinking about these problems — to participate. You don’t need to be implementing anything; in fact, I think some of the most important input will come from people who understand community dynamics and governance independent of the AT Protocol or any specific implementation.

Depending on interest, we can organize a facilitator/organizing committee to schedule discussions/agendas/etc. If you’re interested in helping out with this, let me know!

22 Likes

I’m definitely interested in this area, and i’m interested in chatting, brainstorming, and giving feedback on proposals.

I currently have a lot of deliberation and consensus-building work already on my plate, and don’t think I have energy for that mode of participation. At the same time I haven’t been able to do any creative/prototyping work in a while, and am interested in building some toy projects involving both public and permissioned data.

It could be interesting to collaborate with folks in adjacent ecosystems, or at least summarize the work that has been done elsewhere. Eg, I know Fediverse folks have been thinking for a while about how to represent “groups” in ActivityPub. There is some cool governance work put out by the https://metagov.org/ group, including https://policykit.org/. There is also a lot of academic research out there around online communities.

9 Likes

I remember you mentioning Metagov/Policykit during our conversations during Atmosphereconf! I’ll also drop a few of the other references you gave me for anyone else who’s also interested:

  • Governable Spaces by Nathan Schneider. I believe he was the one who coined the term “implicit feudalism” i.e. how online communities almost universally default to autocratic governance structures as a path of least resistance, and proposes alternative governable spaces.

  • The Community Data Science Collective (CDSC) has done a lot of quantitative and qualitative research studying how online communities form, grow, govern themselves, and fail. It would definitely be worth looking into their research and/or doing outreach.

  • Signaling, Solidarity, and the Sacred is a relatively short paper from the field of evolutionary anthropology that uses “costly signaling theory” (or the Handicap Principle as I learned it in my field) to examine how groups organically builds and maintain solidarity through costly signaling, collective rituals and “the sacred” (or inviolable values). Probably the most important and foundational read out of any of these, imo.

As for ActivityPub, I found a few old forum posts regarding group implementations (including one from @ngerakines.me ). I think these do work really well as informational and cautionary tales imo, given the amount of implementations with conflicting privacy/interop considerations that seem to have been difficult to resolve retroactively:

I do think there are a lot of potential allies surrounding these problems that could provide valuable direct or indirect contributions to a hypothetical WG. I think making a solid list exploring prior art to inform evaluation criteria and inviting others within this space for collaboration would be good steps to take should the WG be formalized.

2 Likes

Marvelous initiative! :folded_hands:

@meri.garden and @zicklag.dev did a livestream deliberating about ‘Community-Managed Permissioned Spaces on ATProto’ yesterday, and will follow that up with a leaflet + VOD shortly.

Very glad to see metagov/policykit mentioned. For a tangible demonstration of their work, here’s a quick intro to what policykit does:

Blacksky @rude1.blacksky.team is by far the most advanced in this methodology by means of people’s assemblies. Their example should be followed.

See also Bonfire Networks - Why Community Matters: Groups as the Next Step for the Fediverse

2 Likes

I’m interested in the space and would like to participate.

2 Likes

Interested in contributing — specifically to Phase 1 (shared ontology and community archetypes).

I’m a cognitive linguist and university researcher. My work on the AT Protocol side includes Mezzanine, an information networking system using opaque cashtag connectors as a routing layer, and two Leaflet pieces on community infrastructure as a gradient — from permissionless tag-based commons to credentialed spaces.

The reason I’m flagging my disciplinary background: Phase 1 is where this WG will either succeed or quietly fail. “Community,” “membership,” “governance,” “space” — these terms carry different operational definitions depending on who’s using them. A protocol designer’s “community” and a community organizer’s “community” may share zero structural overlap. If the WG builds primitives on top of ambiguous definitions, those ambiguities will calcify into the standard.

Cognitive linguistics has tools for this. Frame semantics (Fillmore) maps out the conceptual structure behind a term — what roles, relations, and expectations a word activates. When someone says “membership,” are they activating a club frame (application, admission, expulsion), a citizenship frame (rights, obligations, jurisdiction), or a presence frame (showing up is enough)? These aren’t just semantic quibbles. Each frame implies different protocol primitives.

I’d propose the WG’s first concrete deliverable include a frame analysis of its core terms — not as an academic exercise, but as a design tool. If two proposals use “membership” in incompatible frames, that incompatibility needs to surface before implementation, not after.

My availability: I can provide feedback, review proposals, and contribute to definitional work. I won’t be able to commit to full facilitation or consensus-building processes due to teaching obligations.

5 Likes

I’m also working on my own take, called Gravita, currently working on a onepager presentation and would love to use community sanctified lexicons instead of my own :slight_smile:

3 Likes

habitat (@habitat.network / https://habitat.network) is also working on community infrastructure atop atproto for a couple initial groups we are closely tied to!

we are definitely doing something ~interesting~ with our approach, and after we have it proofed out / deployed / actually used, planning to share it out. some key things we are solving for:

  • private data (we are moving forwards with using our existing implementation here, though planning to move over to permissioned spaces when that’s ready)
  • the idea that communities should be able to keep data written into them by members, even if the members eventually leave that community (and not relying on an appview to get this guarantee)
  • the community’s whole stack should be self-hostable (i.e. doesn’t rely on pds providers from community members being up)
  • eventually (not in scope for our MVP), federation / ability to share community-owned data with outside communities and individuals.

because the groups we are working with are relatively small and have existing relationships with each other, our governance needs are not quite as high as others in the ecosystem, i expect. though we do have our definition of terms like “community”, “membership”, etc :slight_smile: . Our approach looks similar-ish to what New_Public has done with roundabout, but a bit more light-weight.

I do think one of the beautiful things (am i allowed to say that?) about at protocol is that it has many nice primitives that can be useful on their own and reassembled into new shapes that don’t necessarily do the same things as or look like the “global at network”, and therefore serve different needs. we are very much doing this in our approach, and because we’re working with groups right away, it would probably be hard for us to change some of the fundamental pieces.

having said that, i think the most important thing in this space is some method of federation, or giving communities the option to be legible, if they want, to the rest of the network, and exchange data etc. we are actively thinking about this as we build!

4 Likes

Me and @meri.garden have just recently been trying to figure out how to work with community data as fully on-protocol as we can with Roomy and have been investigating if @dholms.xyz’s permissioned data diary proposal can work for us, and how it might also be able to facilitate use-cases covered by existing community tools such as Stratos and opensocial.community.

We’re working on a leaflet now with our ideas and we’re hoping that we can come to some kind of community standard on top of the permissioned data proposal for managing groups & communities and would like to get feedback and figure out how it might work for other people.

At the same time, our focus still has to probably lean in the direction of getting Roomy working, and that being our main way of testing the ideas, so I’m not 100% sure what our participation level is yet.

The tentative strategy right now is something like:

  • Take the permissioned data proposal
  • Try to add some layers to it that don’t require changes to the proposal:
    • One layer is application agnostic and deals with a way to handle RBAC and groups
    • One layer is more of an application-specific design pattern that is good for Roomy.
  • See how well this design facilitates other people’s use-cases, specifically to see if the first layer can serve as an interoperability layer between ATProto apps.

tl;dr: We want to participate, but to really get a proper understanding of what’s involved and what works, at least for us, we need to focus on building a working product that people are actually using.

5 Likes

I would also love to participate in this! I know we chatted in Discord already a bit about this and I’ve got a bit of a prototype of community infrastructure in opensocial.community. Would love to see how communities could be more formalized!

5 Likes

Happy to see that there’s interest! I’ll start working to set up the foundations to discuss what the working group will look like. Given the scope, I think good priorities before formalization to discuss are the deliverables to aim for, and the structure of the WG (ideally in a way that can manage the breadth of problem domains without requiring major time commitments from anyone).

@bmann.ca I’ll reach out to you soon about this!

3 Likes

For sure - we’re just here to hand you a Discourse group that people can join (mini mailing list / private discussions) as well as a public or members only category for discussion.

Having a scope and at least two folks who want to help organize is good.

Only as formal as you want it to be.

My main guide would be to also have commitments of having two app codebases to implement.

2 Likes

Thanks for starting the discussion @baldemo.to.

At the Hypercerts project we also have use cases where we need groups. For instance, we are working with regenerative land projects that need more than one person to be able to write into the repo of the project. It’s about managing a project profile and data for fundraising.

We have a solution that works for us here: GitHub - hypercerts-org/certified-group-service: Enable groups to manage an ATProto PDS · GitHub It’s a starting point; we plan to add more fine-grained permissions.

The core design choice is to work with ATProto’s existing primitives: groups are represented as standard atproto repos on a normal PDS, authority flows through DID-based authentication, and the service layer adds the RBAC and coordination logic on top. This means group-managed data is immediately legible to any ATProto app.

Looking forward to further discussions:)

3 Likes

Hey folks! Stoked to see so much excitement around building communities in the Atmosphere & thanks @baldemo.to for pulling this group together.

I’ve had good convos with the folks from Blacksky, Northsky, Roomy & Habitat among others who are working on their own takes on permissioned data. Keep reaching out about what’s working for you and I’ll continue to do the same!

In addition to the low-level protocol bits, Bluesky’s going to be working on a community feature for the app in the coming months, and we really want those communities to be interoperable across the atmosphere/web. There’s several parts to making communities work in the Atmosphere: the actual data protocol, governance/membership models, schemas/application semantics, and more.

I think we’ll want to strike the balance between being completely generic & overly Bluesky-specific. It may end up looking something like standard.site schemas for open communities.

Keep me updated on the working group! We’re interested in contributing and seeing if we can get something nailed down!

6 Likes

This is gonna be awesome!

Just to clarify that a bit further in the case of Roomy, our ‘own take’ is still an extension of the permissioned data spec you’ve sketched out.

All the others I’m aware of - except for contrail which we’re coordinating/co-ideating with - are wholly separate implementations of permissioned/private data, which to be clear is very good and necessary. (The end-goal is convergence, but first we need divergence to earnestly map out the full problems/solutions space, and there will likely also be a need for more solutions than one.)

1 Like

Oh, yeah, forgot to post our progress so far with groups.

We’ve now got a deep-dive on how our “arbiter” service works. I’ll try to give a relatively short summary below.

Overall Idea

The goal is to provide an interoperable standard service for group membership management. It is a relatively unopinionated layer on top of permissioned spaces.

Permissioned spaces defines the least common denominator for groups on protocol: a flat membership list. The arbiter is a space host providing a more opinionated, but still generic way to calculate and manage the member lists for multiple permissioned spaces within a community boundary.

The arbiter’s DID acts as the community boundary and provides a standard API for creating spaces and managing their members. The goal is to be an interoperable API for managing the membership of public or private communities and groups on ATProto.

It is spiritually quite similar to @brittanyellich.com’s opensocial.community, but built on the permissioned data proposal, and with a more sophisticated role-based membership system.

Roles & Membership Summary

The arbiter has a built-in $admin space, where members of it are automatically added to every space that is created on the arbiter.

You can create roles, which are really just spaces themselves, such as users, and then create spaces such as Working Groups and WG E2EE like we have here on the forum.

The arbiter allows you to add the users role to the Working Groups category with Member access, so that every user who is added to the users role is automatically a member of the Working Groups space, too.

The WG E2EE, on the other hand, could be more private. You could add alice to that space as an Owner, so that she can add and remove members to it. She can choose, when adding a member, whether they are able to add or remove other members, too.

You can also add spaces on remote arbiters as a member of your space. This allows for federated spaces.

Separation of Membership from Other Semantics

I think the arbiter, inspired by the permissioned spaces proposal, makes a useful separation between membership and other semantic details.

For example, while read access is governed by the arbiter and its member lists, write access and other access control is managed by the AppViews which have an understanding of the lexicons of records in the space. These AppViews can also attach their own app-specific permission to roles on the arbiter to create ACLs.

The arbiter itself though, is application agnostic. This allows us to develop semantic standards around groups, in the vein of standard.site, like @dholms.xyz mentioned above, independently of the core group membership API.

If you need more sophisticated control over membership, it’s always possible to just grant your app, or maybe a separate invite service, permission to add or remove members in all spaces, or just in specific ones. This lets you manage membership with your own custom logic, while still benefiting from the role inheritance and federation features.

Similar to how the arbiter expands on permissioned spaces, we are planning on adding an invite service extension to the arbiter later, so that apps don’t have to implement invite codes, etc. by themselves. By making this a separate API, we keep the arbiter simpler and less opinionated.

Implementation Progress

I have a work-in-progress, but nearly complete, Quint specification of the arbiter. This is an executable specification that is essentially a full implementation, but without an actual HTTP server.

I’m hoping to have a usable Rust server implementation soon.

Relation to the Working Group

We want the arbiter to be able to satisfy as many different app’s group management needs as possible, so that different apps will be able to edit and create groups in a community, if the user has access to it.

The hope is to enable apps to come in to a community space and enjoy the same interoperability that we have in ATProto for public stuff.

I know that a lot of people here are already making their own group solutions, but this is the first attempt we know of that is aiming to be fully compatible with the permissioned spaces proposal.

I’d be happy to have a call with anybody who is interested in evaluating whether or not the arbiter and/or the permissioned space proposal makes sense in the context of how they are looking into doing communities / groups.

We’re going to be having a call soon with @brittanyellich.com and yesterday we chatted with Rishi and got a better idea of how they are managing communities in Acorn. We’re shooting for one day being able to jump into a Roomy space from an Acorn community and have things Just Work™. I’m super excited about the possibilities!

2 Likes

Glad to see there’s still interest in the WG! Obligations have prevented me from fully following up here, but me and @essentialrandom.bsky.social have been chatting about how to best lay the foundations for people to contribute from. Hopefully, we’ll have something concrete very soon.

@zicklag.dev I’ve skimmed through this, and on first glance, it seems quite similar to the Composable Trust architecture I’ve been tinkering with (with @moja.blue 's Mezzanine pattern)

And the “arbiter” design model for the permissioned data layer specifically also aligns with how I suggested Permissioned Spaces could work with this architecture during ATmosphereconf (~20:30)

It’s quite exciting when things converge like this. I agree that @brittanyellich.com’s opensocial.community is primed to provide these sort of app-agnostic governance services. I’d certainly love to talk more about this as a baseline for making groups interoperable with permissioned data.

2 Likes

Oh, yeah, there’s a lot of similarity there!

I read through Composable Trust Part 2 and started on Part 3, and have some feedback on it but should move this to a new topic or something to go into more details.

Also checked out the portion of the video.

If you wanted to discussion / swap notes would you want to do it in another forum topic, or there’s our Muni Town Discord which already has a lot of people working on permissioned spaces in it already.

I could also do a web call.

1 Like

I’ve created a preliminary Tangled repo for the working group:

While we work on next steps, it seems like there’s a consensus that the lack of a common reference point from which to evaluate different projects and implementations is hindering progress on this front.

To help with this, I’ve created a documentation template in resources/PROJECT-TEMPLATE.md to create structured high-level documentation for current projects. I will take the mantle of creating the initial documentation for the current project list (which others can then correct as they see fit). The current list of projects I currently have are:

Please let me know if I’m missing any project (including your own!).

To best document these projects, I will be reaching out to people working on these projects for virtual interviews; the answers to my questions will be used to fill out the documentation. I’ll also create a common document with all of the projects summarizing what major moves they make. Hopefully, by the end of this initial phase, the community will have a common reference point to compare and cross-reference each other’s work.

I know this might be a bit of a boring task, but if anyone would like to help document their own or someone else’s project, PRs are open! Even partially filling out a few sections for a project would be helpful here.

Project maintainers: be on the lookout for a message from me asking for an hour of your time.

3 Likes

Hello! @baldemo.to and I have been in touch privately about this, but I finally have time to join this thread publicly.

I’ve been trying to figure out community infrastructure for niche online communities, especially less-technical ones like fanworks fandom, for a few years now. I’m also currently part of building atmosphere.community, which integrates Open Social with Astro and is itself an experiment in community on ATProto using communities about ATProto.

Like others, I’ve witnessed community-oriented builders circling around the same concepts, just with different names and deceptively similar semantics. I’m excited @baldemo.to has taken on the work of documenting these right as various active implementations are forming, so we can name and extract the shared patterns before they calcify.

One thing @baldemo.to and I both stressed is making sure to turn this mapping of concepts into concrete building blocks as quickly as is wise. My own angle is more on the builder side, so I’m especially interested in hearing from people trying to ship community tools: are there particular pieces you wish were shared, and where do you feel most blocked by the lack of common interfaces?

From integrating Open Social in atmosphere.community and thinking about fandom use cases for ephemeral community sites, some of the most interesting pieces to me are:

  • Shared content, both created for the community and shared into the community by members, e.g. articles and events
  • Membership mechanisms: who is a member, and what are the primitives to request or grant membership?
  • Permissions: who can take what action? How can my custom Astro website know whether to show you that “create event” button?
  • Attestations: badges, anyone? :smirking_face:

These are already reflected in the current template. My hope is that the interviews and documentation can help us compare how current projects handle these pieces, identify where there is already convergence, and pick a narrow first target that people can actually implement or test against.

Let me know if you have any favorite mechanisms, or particularly hated pain points!

6 Likes