Portable Communities Protocol
In service of Prosocial Self-organization at Scale
How can online communities be persistent, composable, and application-independent?
Portable communities are a huge unmet need and opportunity
To quote Richard Bartlett, co-founder of Loomio:
I spent a decade and a million bucks to conclude the only really critical gap in collective organising software is to synchronise group membership across multiple platforms.
Example: the climate movement
The climate movement is large, global, and diverse. It’s also basically just a lot of mailing lists. It comprises multiple large organizations (Extinction Rebellion, Sunrise Movement, 350.org, and many more.) Most of those have numerous local chapters. Each local chapter is a mailing list and a “community”. But they lack the collective agency they should have because they don’t meaningfully federate or do collective coordination, sensemaking, or decisioning.
Challenge
How can such communities manifest in such a way that they can federate meaningfully, self-govern at all scales, and dramatically increase their collective value and agency?
Proposal
We propose a Portable Community Protocol whereby what are otherwise adhoc collections of people can manifest as first-class objects that can have contractual relationships with each other and with applications.
Such a protocol needs to be simple, expressive, extensible, decentralized.
It also requires an approach to decentralized identifiers (DIDs) that is sybil-resistant and unambiguous for users across multiple communities.
Communities as Graphs
Communities are humans plus relationships. We propose a graph representation where nodes are humans or collections thereof, and edges are relationships among them (from sourceNodeId to targetNodeId). Both entities can have type and highly expressive data attributes. The latter is freeform key-value stores.
Team Members
Brad DeGraf, Nick Brigham Adams (with contribution from Day Waterbury, Christopher Maujean, Kent Steiner)
More details below after the required questions.
What is the existing target protocol you are hoping to improve or enhance? Eg: hand-washing, traffic system, connector standards, carbon trading.
There is no existing protocol for Portable Communities
What is the core idea or insight about potential improvement you want to pursue?
Digital communities are not persistent, composable, or application independent. By representing them as simple social graphs, they can be, making dramatic things possible.
What is your discovery methodology for investigating the current state of the target protocol? Eg: field observation, expert interviews, historical data analysis, failure event analysis
Literature research, expert interviews, reference implementations, working with Goodly Labs to leverage their expertise
In what form will you prototype your improvement idea? Eg: Code, reference design implementation, draft proposal shared with experts for feedback, A/B test of ideas with a test audience, prototype hardware, etc.
Reference implementation
How will you field-test your improvement idea? Eg: run a restricted pilot at an event, simulation, workshop, etc.
My developer community (e.g. Goodly Labs, Collaborative.tech, Kernel.community, Global Regen Colab, DWeb, and others) is a great beta test community.
Who will be able to judge the quality of your output? Ideally name a few suitable judges.
The aformentioned developer community, including Kaliya Young (IdentityWoman), Brewster Kahle (founder of the Internet Archive and DWeb), numerous others.
How will you publish and evangelize your improvement idea? Eg: Submit proposal to a standards body, publish open-source code, produce and release a software development kit etc.
Deployment within our developer community, particularly the DWeb ecosystem, integration with Goodly Labs *SamePage* and other tools.
What is the success vision for your idea?
Many existing communities, especially the Regenerative movement, will be able to compose and federate in hitherto impossible ways. Portable communities will become the standard for all events so that they have persistence and composability.
Additional detail
Benefits
- Communities become persistent and application-independent
- Collective agency, coordination, action
- Composition and federation
- Collective sense-making
- Expertise for hire
- Applications gain easier adoption and lower cost building user bases
- Natural integration with DAOs
What communities?
- Common purpose / mission
- Climate, Regeneration, MeToo movements
- Interest / practice / expertise
- Plurality Network, Kernel.community, Collaborative.tech
- Peer and citation networks (ConnectedPapers, CiteSeerX)
- Teams / collaborations
- Github, Slack, Discord, Teams
- Curatorial (Mastodon instances)
- Silo-ed groups
- Facebook groups, Twitter lists
- Ephemeral
- Events, Zooms
- Informal
- Families, neighborhoods, group chats
Communities as Graphs
Communities are humans plus relationships. We propose a graph representation where nodes are humans or collections thereof, and edges are relationships among them (from sourceNodeId to targetNodeId). Both entities can have type and data attributes. The latter is freeform key-value stores.
Each human node owns and controls its outbound edges (the relationships it asserts.)
Activities of a community, such as collective content curation, are beyond the scope of this effort. They are part of an application ecosystem that serves communities.
Use Case - Events
Events are a good example of the opportunity. They generally start with participants knowing little of each other, and end with little persistent outcome. For example, the recent Plurality Network conference had an attendee list that had only full names and no further information. At the end, a Slack was created, but two weeks later only 50 of the several hundred attendees have signed up and there’s very little activity.
To create a persistent graph representation, such a flat collection of fullnames can be bootstrapped as a graph of nodes and relationships with greater depth of information by simple correlation with existing social data. Here is such an elaboration of some of the Plurality attendees with their LinkedIn accounts and interconnections.
That graph now has persistence and can be curated by each participant to go beyond the one-bit connections derived from LinkedIn. For instance, the owner of each node can prune connections that have little meaning for them, and can amplify others according to domains of expertise (a floating-point vector relationship vs. single bit.) Such a graph curation tool is another app in the app ecosystem.
Now, how does that community relate to the attendees of another event, e.g. DWebCamp. Again, another flat list of full names and little pre- and post-elaboration. The same bootstrapping from social data produces a network that can then be intersected with Plurality’s. Kaliya Young, Seth Frey, Nathan Schneider, Joshua Tan, Brad DeGraf, Ronen Tamari, Divya Siddarth, and numerous others attended both.
Such boolean operations can:
- inform future events before they convene
- promote people discovery before and after events
- facilitate federated activities such as collective curation, messaging, etc.
- …
Where does such a persistent community live?
Nodes and Edges are easily represented in Web3 protocols. For instance, each node can store the relationships it controls in a personal online datastore. The graph representation can map easily to a DAO and its corresponding smart contracts.
Initial experimentation, aggregation, and graph curation (users edit their relationships with others) use a centralized ArangoDB graph database, with export to JSON at any time.
Relationships with the world
Ok, assume a community has such a persistent decentralized manifestation. What can it do, especially with respect to other communities and to applications.
This is where verifiable credentials (VCs) and object capabilities come in.
Verifiable Credentials allow:
- Community verifies that a user is a member
- Community verifies user has only one identifier in its namespace
- User node verifies its relationships with other nodes
- …
Object Capabilities allow:
- Community confers access to its graph data to a given app, e.g.;
- a liquid democracy decision needs to know who each community member has delegated to in what domains
- a content curation app needs to aggregate annotation activity by community members
- …
- Composition of communities, e.g.
- what domains they are collaborating on
- how to interpret intersection / overlaps
- …
Spritely Institute has done great work establishing core infrastructure for secure interoperation within communities (each node’s control of its own subnetwork), between communities (how they combine / federate), and with applications (what Object Capabilities a given app gets from a community within the principle of least authority.)
Identifiers
A given user’s participation in multiple communities should be clear, unambiguous, and sybil resistant. There are numerous identifier services out there, e.g. Proof of Humanity, BrightId, etc. If one of them suffices, we’ll use it. Otherwise, we like the concepts behind GreenCheck.world for taking advantage of existing trust relationships utilizing 3 friend authentication.
Proof of Concept
We propose:
- Agree on a simple first version schema of a graph representation
- Instantiate two or more communities as graphs using that schema (e.g. Plurality and DWeb)
- Two or more simple apps that can meaningfully interoperate with those communities.