My agentic slop goes here. Not intended for anyone else!

Bushel Schemas#

Bushel is a webring platform for collaborative online content sharing, described as "a reconstruction of LiveJournal for the 2020s." It enables open source communities to track information across multiple communication channels with privacy controls.

Overview#

Based on the repository structure and documentation, Bushel provides:

  • Collaborative Content Sharing: Individuals can quickly write about their work
  • Bidirectional Linking: Groups can share content with interconnected references
  • Version-Controlled Content: Supports versioned data structures like blog posts, wiki entries, and social media feeds
  • Privacy Management: GitHub OAuth integration for controlling access to private content
  • Resolvable Markdown: Uses enhanced Markdown for sharing structured data

Core Schema Modules#

The library is organized into several key modules:

Contact Schema#

The contact module likely defines structures for:

(* Hypothetical contact schema based on social networking requirements *)
type contact = {
  id: string;
  name: string;
  email: string option;
  github_username: string option;
  website: string option;
  bio: string option;
  avatar_url: string option;
  public_key: string option;
}

type social_link = {
  platform: string; (* github, mastodon, twitter, etc *)
  handle: string;
  url: string;
}

type contact_with_social = {
  contact: contact;
  social_links: social_link list;
  trusted: bool; (* for privacy/trust relationships *)
}

Entry Schema#

The entry module represents content items:

  • Blog posts
  • Wiki entries
  • Notes
  • Ideas
  • News items

Project Schema#

The project module handles:

  • Open source project metadata
  • Collaboration settings
  • Privacy controls
  • Version tracking

The link module manages:

  • Bidirectional references between content
  • External links with metadata
  • Cross-references between users and projects

Contact-Focused Features#

Identity Management#

  • GitHub OAuth integration for authentication
  • Support for multiple identity providers
  • Public key infrastructure for secure communication

Social Networking#

  • Contact discovery within communities
  • Trust relationships for privacy
  • Cross-platform identity linking

Communication Channels#

  • Multi-channel content aggregation
  • Private design discussions
  • Public collaboration spaces

Privacy Controls#

  • Individual privacy settings per contact
  • Group-based access controls
  • Selective content sharing

Markdown Extensions#

Bushel extends standard Markdown with special syntax:

  • @avsm/bushel - Reference to users/projects
  • Support for structured data embedding
  • Version-controlled content references

Technical Architecture#

  • Language: Primarily OCaml (77%) with Python utilities (22.5%)
  • Content Format: Enhanced Markdown with structured data
  • Versioning: Git-based version control for all content
  • Authentication: GitHub OAuth with extensible identity providers
  • Privacy: Granular access controls and trust relationships

Use Cases#

  1. Open Source Communities: Track contributions across multiple channels
  2. Collaborative Writing: Shared documentation with version control
  3. Social Networking: Privacy-aware community building
  4. Content Aggregation: Unified view of distributed content
  5. Project Management: Cross-project collaboration and references

The contact schema is central to enabling these use cases by providing a foundation for identity, trust, and communication within the Bushel ecosystem.