My agentic slop goes here. Not intended for anyone else!
1# Bushel Schemas
2
3Bushel 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.
4
5## Overview
6
7Based on the repository structure and documentation, Bushel provides:
8
9- **Collaborative Content Sharing**: Individuals can quickly write about their work
10- **Bidirectional Linking**: Groups can share content with interconnected references
11- **Version-Controlled Content**: Supports versioned data structures like blog posts, wiki entries, and social media feeds
12- **Privacy Management**: GitHub OAuth integration for controlling access to private content
13- **Resolvable Markdown**: Uses enhanced Markdown for sharing structured data
14
15## Core Schema Modules
16
17The library is organized into several key modules:
18
19### Contact Schema
20
21The `contact` module likely defines structures for:
22
23```ocaml
24(* Hypothetical contact schema based on social networking requirements *)
25type contact = {
26 id: string;
27 name: string;
28 email: string option;
29 github_username: string option;
30 website: string option;
31 bio: string option;
32 avatar_url: string option;
33 public_key: string option;
34}
35
36type social_link = {
37 platform: string; (* github, mastodon, twitter, etc *)
38 handle: string;
39 url: string;
40}
41
42type contact_with_social = {
43 contact: contact;
44 social_links: social_link list;
45 trusted: bool; (* for privacy/trust relationships *)
46}
47```
48
49### Entry Schema
50
51The `entry` module represents content items:
52- Blog posts
53- Wiki entries
54- Notes
55- Ideas
56- News items
57
58### Project Schema
59
60The `project` module handles:
61- Open source project metadata
62- Collaboration settings
63- Privacy controls
64- Version tracking
65
66### Link Schema
67
68The `link` module manages:
69- Bidirectional references between content
70- External links with metadata
71- Cross-references between users and projects
72
73## Contact-Focused Features
74
75### Identity Management
76- GitHub OAuth integration for authentication
77- Support for multiple identity providers
78- Public key infrastructure for secure communication
79
80### Social Networking
81- Contact discovery within communities
82- Trust relationships for privacy
83- Cross-platform identity linking
84
85### Communication Channels
86- Multi-channel content aggregation
87- Private design discussions
88- Public collaboration spaces
89
90### Privacy Controls
91- Individual privacy settings per contact
92- Group-based access controls
93- Selective content sharing
94
95## Markdown Extensions
96
97Bushel extends standard Markdown with special syntax:
98- `@avsm/bushel` - Reference to users/projects
99- Support for structured data embedding
100- Version-controlled content references
101
102## Technical Architecture
103
104- **Language**: Primarily OCaml (77%) with Python utilities (22.5%)
105- **Content Format**: Enhanced Markdown with structured data
106- **Versioning**: Git-based version control for all content
107- **Authentication**: GitHub OAuth with extensible identity providers
108- **Privacy**: Granular access controls and trust relationships
109
110## Use Cases
111
1121. **Open Source Communities**: Track contributions across multiple channels
1132. **Collaborative Writing**: Shared documentation with version control
1143. **Social Networking**: Privacy-aware community building
1154. **Content Aggregation**: Unified view of distributed content
1165. **Project Management**: Cross-project collaboration and references
117
118The contact schema is central to enabling these use cases by providing a foundation for identity, trust, and communication within the Bushel ecosystem.