Spiel
Nested communities with evolving governance
TLDR;
- Hierarchies of channels to capture both social & solitary use cases
- Chat, bookmarking, note-taking, second brain, micro-blogging, comment threads, wikis, articles
- Formalized governance framework to let users implement evolving democracies within channels
- Clear path to decentralization
Table of contents
Introduction
Implementation details
Governance
Next steps
Introduction
My background
- Designer, programmer & systems architect
- 7+ years experience building a large, profitable & toxic community CEO.CA (60,000+ members)
- Self-funding & using learnings from CEO.CA to focus on next gen product, Spiel
Spiel project status
- Working Beta version is public, missing some features - https://beta.spiel.com
- iOS App ready, Android app imminent
- Spiel v1.0 on track to launch soon
- Codebase will be open-sourced once the protocol is mature
Core design principles
- Skin in the game
- Communities must be governed by those with finger on the pulse
- Fun & freedom
- Allow people to create culture, not force culture on them
- Evolution as core mechanism
- Many parallel experiments allow for best governance systems to survive
- Communities should be easy to "fork" in case of bad governance
Motivations
- Automating moderation with fixed algorithms turned out to be impossible
- Centralized moderation is exhausting and toxic for the community
- Fixed reputation algorithms are biased and vulnerable to abuse - hard to scale
- Moderation needs to be an immune system, not an algorithm
Low-hanging fruits
- Networked thought needs to be taken social
- Lots of opportunity in backlinks, tagging & forking conversations
- Custom search filters as subjective feed algorithms
- Maps as online social spaces (MMOs get this)
- Progressive rich text editing & flexible embeds
- Combine chat/blog/notes/wiki concepts under one UI
Implementation details
Social shared reality / simulacra
- "What is this place? Where am I? What rules apply here?"
- Concept of "a place" is important
- Nested structure allows for paths (addressing)
- "Where am I?" should have a meaningful answer
- On Twitter, each post is its own context
- Recursive but not addressible
- Slack/Discord/Reddit have flat structures
- Addressible but not recursive
- Filesystems & URLs know what's up
- Recursive & addressible by path
- ~channels/can/have/infinite/depth
Inehritance within the hierarchy
- Top-level channel sets initial rules
- Public channels inherit rules from parent
- Users can propose & pass local rule changes
- Independent/private channels start new jurisdictions
- Private group chats & DMs can also use nesting within them
Tagging system
- Tagging a #channel cc's your post there (unless opted out)
- Creates a distribution/discovery layer for conversations
- "Surfing conversations", not just "catching up"
-
- Relative/absolute channel addressing syntax inspired from Bash:
- ~realm - top-level channel (community root)
- ~realm/hashtag/nesttag/etc - slashes for infinite depth
- #hashtag - shortcut for first nesting level
- >nesttag - nest into child of current channel
- <parenttag - refer to parent of current channel
- ^siblingtag - refer to another channel in the same context
- @atmention - user profiles are their own top-level channels
- [[wiki links]] - personal tags, always nested under author's profile (@murat/wiki_links)
- #private.🔒and #independent.🏛 suffixes to prevent clashing
- Reply threads are sub-channels for individual posts
Profiles as channels
- User Profiles as index for all public posts by user
- Combines Twitter-style "follow" concept with chat architecture
- Subchannels in user profiles act as personal bookmarking, notetaking & publishing
- Allows following only specific topics by a user (if used diligently)
Maps
- Channels optionally placed on map as polygons
- Physical maps as channel discovery layer
- Maps are ideal for nested contexts (zoom/pan)
- Spatial relevance and finite space create fitness functions
- Social Earth map & fictional maps allow for new types of shared contexts
Governance
Democratic governance
- Formalized into simple elements
- Voting and polling as widgets within posts
- Vote analytics for better visibility into collective consciousness
- Breakdown of poll results by role or other filters is useful even if not directly tied to policy changes
- Users propose policy changes (motions) & vote on them to steer culture
- We can support all possible governance systems under one framework
- Most things start as dictatorships, then slowly turn into hierarchies
- The necessary feedback loop is formalized into a policies system:
Policies framework
Each circle represents a policy type.
All policies are configurable at the start. Once the community owner enables a governance policy that allows users to create motions & vote on them, the owner can slowly give more control to others with minimal effort.
Users can start by creating harmless reactions & roles, which can gradually take on more meaning as the policies are modified over time.
Policies for channels & jurisdictions
Policies implement policyscript, which is very similar to ElasticSearch's JSON query sytax. It's a Lisp-like DSL that is mostly concerned with boolean outcomes to nested functions. It is a way of leveraging built-in functions to compose highly specific moderation frameworks. This is made user-friendly by providing a Scratch-like drag-and-drop GUI.
Most of the time, users will pick their policies from ready-made templates; however power-users are encouraged to compose new policy templates.
- Reactions on posts. Can be used for search filtering & scoring.
- Democratically curated list of reactions per context
- Reactions being tied to real consequences is key for tangible culture
- i.e. In a channel that encourages shitposting, 5+ "😐 Too serious" reactions punish the poster by silencing them for 3 hours.
- Roles assigned/revoked as a function of user activity, reactions, etc.
- i.e. User gets a Bouncer role if Member for 3 months and 10 other members vote for it
- i.e. User gets Banned role if they've received the Troublemaker role more than 3 times
- Permission policies are boolean expressions that determine what a user can do based on activity, roles, etc.
- i.e. Users with Bouncer role can ban Members younger than 1 week
- i.e. Users with Troublemaker role can post at most 1 message per hour
- Governance policies dictate voting thresholds for accepting motions to change all policy types, including itself
- i.e. Pass if at least 40% members vote "Yes", and zero moderators vote "No"
- i.e. Reject if 30% vote "No" or 5% vote "Absolutely NOT"
- Funding policies as formulas for distributing income to mods
- i.e. Income is distributed equally among moderators, proportional to number of days online
The Lisp-like syntax leaves it up to users' creativity to combine core functions and compose fine-tuned channel policies.
First-principles design that covers all possible use cases
-
Support small & large social spaces, personal notetaking, bookmark organization & publishing & wikis all under one UI paradigm
-
All these use cases are emergent from the contextual policy system
-
Ended up being very little code
Next steps
The spice must flow
- Three types of value creators: Devs, Mods, Posters
- Monetization is for devs, Markets are for mods + posters
- Moderation is incredibly taxing & creates much value, needs compensation
- Per-channel (or jurisdiction) paywalls & fundraisers where necessary
- Users can vote on funding policies to compensate mods
- Planning on using BTC (Lightning Network) primarily
Customization beyond bots
- Custom themes & widgets are essential to communities
- Individual posts or sidebars can incorporate interactive widgets
- Imagine stock charts, sports standings, live streams, e-commerce
- Allow people to write their own plugins
- Become the Wordpress of chat
Road to decentralization
- All permissions, roles & cross-tagging extend gracefully to federated third party hosting
- Step 1: DNS-based federation (e-mail, IRC, mastodon)
- Allow/deny lists based on domain name
- Permissions based on remote roles & reputation
- Users trust servers (like we do with e-mail)
- Step 2: Actual DAOs
- Global single sign-on & cryptographic proof of authorship
- Doesn't matter which client you use
- Policies enforced collectively (auditability, tamper-proof)
Other topics to consider
- Encryption - Hairy topic, can get into this more later.
- Potentially doable with minimal effort if acceptable to leave metadata unencrypted
- Supporting existing chat protocols (Matrix, ActivityPub)
- Leveraging AI-assisted rule & policy creation to increase user participation in governance
End