diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..a6dae20 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,185 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +**Crumbpages v2** is a documentation and learning system for system administration, combining educational content with operational tooling. The project uses the "Crumbforest" metaphor - representing knowledge as a forest where "Krümels" (crumbs) guide learners through admin paths. + +This is a **bash-centric repository** focused on documentation and shell scripting for system operations, SSH security automation, and API tooling for the broader Crumbforest infrastructure. + +## Core Philosophy + +The "Waldwächter" (Forest Guardian) approach emphasizes: +- **Transparency over magic** - Clear, readable code that can be explained to learners +- **Simplicity over complexity** - Minimal dependencies, straightforward patterns +- **Education-first** - All tools should be teachable and understandable +- **Security by default** - Automated security practices, especially around SSH + +See `crumbforest-manifesto-guardian.md` for the full philosophy. + +## Repository Structure + +### Documentation (Crumbpages) +Educational documentation organized as numbered "paths" (`crumbpage-XX-*.md`): +- 20 crumbpages covering Linux fundamentals through advanced topics +- Template-based structure for consistency (`crumbpage-template.md`) +- Each page includes: concepts, hands-on exercises, troubleshooting, skill checks +- Progressive learning path from basic user management to kernel operations + +### Operational Scripts +Three main shell scripts provide system tooling: + +1. **`crumbpages-doktor.sh`** (496 lines) - Main diagnostic and operational tool +2. **`ssh-agent-guard.sh`** (68 lines) - Production SSH security daemon +3. **`ssh-agent-screenlock_v4.sh`** (67 lines) - MATE desktop SSH integration + +### Meta Documentation +- `CRUMBFOREST_PROJECT_INDEX.md` - Complete project history and milestone tracking +- `HANDBUCH.md` - crumbpages-doktor.sh manual +- `QUICKSTART.md` - Quick reference for common operations +- Various tagebuch (diary) files tracking problem-solving journeys + +## Common Commands + +### Running the Main Tool +```bash +# Make executable (first time) +chmod +x crumbpages-doktor.sh + +# Launch interactive menu +./crumbpages-doktor.sh +``` + +The doktor script provides 6 modules: +1. **Git Workstation** - Interactive git shell with health checks +2. **DNS Doktor** - DNS diagnostics and reporting +3. **System Doktor** - Host vitals (disk, RAM, OS info) +4. **Web Tools** - API testing (`api_search`, `api_get`, `api_ask`) +5. **Remote Tools** - SSH helpers and SCP uploads +6. **Werkzeugkasten** - Tool availability checks + +### SSH Security Scripts +```bash +# Start SSH agent guard (systemd/autostart) +./ssh-agent-guard.sh + +# For MATE desktop integration +./ssh-agent-screenlock_v4.sh +``` + +Both scripts automatically: +- Kill and restart ssh-agent on screen lock +- Write to `~/.ssh-agent-screenlock.log` +- Store agent environment in `~/.ssh/agent-environment` +- Use fixed socket path `~/.ssh/agent.sock` + +## Configuration + +### Environment Variables (.env) +The doktor script uses `.env` for configuration (auto-created on first run): + +```ini +# API endpoints (for Crumbforest backend integration) +CRUMB_API_URL="http://localhost:8000" +CRUMB_API_TOKEN="changeme" + +# SSH/Remote settings +CRUMB_SSH_USER="admin" +CRUMB_SCP_TARGET="backup.crumbforest.de:/var/backups" + +# Qdrant vector DB +CRUMB_QDRANT_URL="http://localhost:6333" +CRUMB_QDRANT_KEY="" +``` + +## Architecture Notes + +### Modular Shell Design +The `crumbpages-doktor.sh` follows a modular pattern: +- Each module is a bash function (e.g., `git_doktor()`, `web_doktor()`) +- Interactive subshells use `bash --rcfile` with custom `.rc` files in `/tmp` +- Environment isolation via `export` and temp RC files +- Color-coded output using ANSI escape sequences + +### SSH Security Pattern +Both ssh-agent scripts implement "zero-trust on lock": +- **Single purpose**: Kill agent when screen locks +- **Singleton enforcement**: PID file prevents duplicate daemons +- **Deep Work Mode**: `ssh-agent-guard.sh` supports pause file for uninterrupted work +- **Fixed socket path**: Enables multiple terminals to share agent state +- **MATE integration**: Uses `dbus-monitor` for screensaver events + +### API Integration +Web Tools module provides curl wrappers for the Crumbforest backend: +- FastAPI backend at `CRUMB_API_URL` +- Bearer token auth when `CRUMB_API_TOKEN` is set +- Functions: `api_search`, `api_get`, `api_ask`, `open_url` +- Qdrant-specific helpers: `q_health`, `q_list`, `q_info` + +## Development Patterns + +### Shell Script Style +- Bash-native (no external frameworks) +- Functions over scripts-within-scripts +- Descriptive color variables (`GREEN`, `BLUE`, `RED`, `YELLOW`, `CYAN`) +- Heredocs for multi-line templates +- Error handling via explicit checks, not `set -e` + +### Documentation Style +- Markdown with emoji for visual anchoring +- Collapsible sections using `
` tags +- Code examples with inline comments +- "DO/DON'T" sections for best practices +- Skill check checklists at end of each page + +### Git Workflow +Standard git practices: +- Main branch: `main` +- Commit history shows iterative refinement ("Logs active", "magic!", "CleanUp Magic") +- Modified files tracked: doktor script and tagebuch entries + +## Context: The Broader Crumbforest + +This repository is part of a larger ecosystem: +- **CrumbCore v1**: FastAPI + Qdrant RAG chat system (production) +- **PHP CRM**: Legacy system integration for child management +- **RouterOS**: Network integration for 500+ user deployment +- **TTYD**: Terminal containers for educational use + +The bash scripts here serve as the "field tools" for administrators working across the full stack. + +## Working with This Codebase + +### When editing shell scripts: +- Test interactively before committing (scripts are meant to be run by humans) +- Preserve color scheme consistency +- Maintain module boundaries in doktor script +- Update HANDBUCH.md if adding/changing doktor modules + +### When editing crumbpages: +- Follow `crumbpage-template.md` structure exactly +- Maintain numbering scheme (`crumbpage-##-topic.md`) +- Include skill checks and hands-on exercises +- Cross-link to related pages in navigation footer + +### When debugging: +- Check `.env` configuration first +- Review logs: `~/.ssh-agent-screenlock.log` for SSH issues +- Use doktor's System Doktor module for host diagnostics +- Git Workstation module has `check_health` for repo state + +## Security Considerations + +- SSH agent scripts actively kill credentials on screen lock +- API tokens stored in `.env` (gitignored) +- No hardcoded credentials anywhere +- MATE screensaver hardening (`lock-enabled true`, `lock-delay 0`) +- Singleton daemon pattern prevents privilege escalation via duplicate processes + +## References + +- Project history: `CRUMBFOREST_PROJECT_INDEX.md` +- Philosophy: `crumbforest-manifesto-guardian.md` +- Tool manual: `HANDBUCH.md` +- Quick commands: `QUICKSTART.md` diff --git a/KINDERRECHTE.md b/KINDERRECHTE.md new file mode 100644 index 0000000..68bec2c --- /dev/null +++ b/KINDERRECHTE.md @@ -0,0 +1,471 @@ +# Deine Rechte bei Crumbforest 🌲 + +> **Für Kinder:** Das hier gehört **DIR**. Wir passen darauf auf. +> **Für Eltern:** Dieses Dokument operationalisiert CKL §3 (Rechte der Kinder) und ist DSGVO-konform. + +--- + +## 📦 Was gehört dir? + +Alles, was **du** erschaffst, gehört **dir** – nicht uns, nicht der Schule, nicht dem Internet. + +### Das sind deine Sachen: + +- ✍️ **Texte**: Alle Fragen, die du stellst. Alle Geschichten, die du schreibst. +- 💻 **Code**: Alle Programme, die du baust (Python, Bash, Blockly...) +- 🎨 **Bilder**: Alle Zeichnungen und Screenshots +- 📊 **Messungen**: Alle Daten, die du sammelst (Temperatur, Bewegung, Sensoren...) +- 💬 **Chats**: Alle Gespräche mit den Charakteren (Krümeleule, FunkFox...) +- 🏗️ **Projekte**: Alles, was du mit Raspberry Pi, ESP32 oder anderen Tools baust + +**Wichtig:** Auch wenn du das auf einem Computer von Crumbforest machst – **du** bist der Besitzer oder die Besitzerin! + +Das steht so im Gesetz (CKL §3.1 + DSGVO Art. 20). + +--- + +## 💾 Wie bekomme ich meine Daten? + +Du kannst **jederzeit** eine Kopie von allem verlangen, was du gemacht hast. + +### So geht's: + +#### **Wenn du mit CrumbCore arbeitest:** + +**Aktuell (Stand 2025-12):** +- Sprich mit deinem Lehrer oder deiner Lehrerin +- Oder schreibe eine Email an: [Kontakt wird ergänzt] +- Wir schicken dir dann alles als Datei + +**Bald (geplant Q1 2025):** +Du kannst selbst auf einen Knopf drücken: +1. Gehe zu deinem Profil +2. Klicke auf "Meine Daten herunterladen" +3. Du bekommst eine ZIP-Datei mit allem + +Die Datei enthält: +``` +meine-crumbforest-daten.zip +├── chats.json (alle Gespräche) +├── projekte/ (deine Projekte) +│ ├── esp32-blink/ +│ └── pi-server/ +├── messungen.csv (Sensor-Daten) +└── README.txt (Erklärung, was was ist) +``` + +**Alles in offenen Formaten** (JSON, CSV, TXT, PNG) – du kannst es mit jedem Programm öffnen! + +#### **Wenn du mit Crumbpages lernst:** +- Alle Markdown-Dateien sind sowieso frei zugänglich +- Du kannst sie einfach kopieren: Rechtsklick → Kopieren +- Oder das ganze Repo herunterladen (siehe QUICKSTART.md) + +--- + +## 🗑️ Wie lösche ich meine Daten? + +Manchmal möchte man nicht, dass alte Sachen gespeichert bleiben. **Das ist okay!** + +Du kannst sagen: "Ich will, dass ihr alles von mir löscht." + +### So geht's: + +#### **Option 1: Alles löschen** +- Sprich mit deinem Lehrer/deiner Lehrerin +- Oder schreibe eine Email mit deinen Eltern an: [Kontakt wird ergänzt] +- Schreibe rein: "Bitte löscht alle meine Daten." + +**Was wir dann tun:** +1. Wir löschen alle deine Chats aus der Datenbank +2. Wir löschen deine Projekte vom Server +3. Wir löschen deinen Account +4. **Wichtig:** Vorher fragen wir: "Willst du vorher eine Kopie?" + +**Das dauert maximal 7 Tage.** + +#### **Option 2: Nur bestimmte Sachen löschen** +Du kannst auch sagen: "Löscht nur dieses Projekt" oder "Löscht nur diese Chat-Nachricht". + +Das geht genauso – sag uns einfach, was weg soll. + +#### **Bald (geplant Q1 2025):** +Du kannst selbst löschen: +1. Gehe zu deinem Profil +2. Klicke auf "Meine Daten verwalten" +3. Wähle aus, was du löschen willst +4. Bestätige: "Ja, wirklich löschen" + +--- + +## 🔍 Was wird überhaupt gespeichert? + +**Wir speichern nur, was zum Lernen wichtig ist. Nicht mehr!** + +### Das speichern wir: + +| Was? | Warum? | Wo? | Wie lange? | +|------|--------|-----|------------| +| Dein Benutzername | Damit wir wissen, wer du bist | CrumbCore Datenbank | Bis du kündigst | +| Deine Chat-Nachrichten | Damit die Charaktere sich erinnern | CrumbCore Datenbank | Bis du löschst | +| Deine Projekte (Code, Bilder...) | Damit du später weiter machen kannst | CrumbCore Dateisystem | Bis du löschst | +| Sensor-Messungen | Damit du deine Experimente auswerten kannst | CrumbCore Datenbank | Bis du löschst | +| Wann du dich einloggst | Damit wir wissen, ob du noch aktiv bist | CrumbCore Logfiles | 90 Tage | + +### Das speichern wir **NICHT**: + +- ❌ Keine Passwörter (nur verschlüsselte Hashes) +- ❌ Keine IP-Adressen (außer temporär für Sicherheit) +- ❌ Keine Tracking-Cookies +- ❌ Keine "Werbe-ID" oder ähnliches +- ❌ Keine Bilder von dir (außer du lädst sie hoch für ein Projekt) +- ❌ Keine Sprachaufnahmen +- ❌ Keine Bewegungsprofile + +**Crumbforest hat kein Google Analytics, kein Facebook Pixel, keine Spionage-Tools.** + +### Wer kann meine Daten sehen? + +1. **Du selbst** (immer) +2. **Dein Lehrer/deine Lehrerin** (wenn du in einem Kurs bist) +3. **Die Admins von Crumbforest** (nur für technischen Support) +4. **Niemand sonst!** + +Wir verkaufen deine Daten **NIEMALS**. Nie, nie, nie. + +Das ist gesetzlich verboten (DSGVO) **und** gegen die CKL. + +--- + +## 🚪 Was passiert, wenn ich gehe? + +Du kannst **jederzeit** aufhören, bei Crumbforest zu lernen. + +### Wenn du gehst: + +**Du kannst wählen:** + +**Option A: Mitnehmen** +- Wir geben dir alles als Download +- Du kannst woanders weiter machen +- Wir löschen deine Daten nach 30 Tagen + +**Option B: Löschen** +- Wir löschen sofort alles +- Nichts bleibt übrig +- Du kannst nicht mehr zurück + +**Option C: Archivieren** +- Wir behalten deine Sachen für dich (max. 1 Jahr) +- Du kannst später wieder kommen +- Nach 1 Jahr fragen wir nochmal: "Willst du es noch?" + +**Ohne Nachteile:** Du musst nichts zahlen, du bekommst keinen Ärger, alles ist gut. + +Das ist dein Recht (CKL §10.2 + DSGVO Art. 17). + +--- + +## 🛡️ Wie sicher sind meine Daten? + +Wir nehmen Sicherheit **sehr ernst**. + +### Was wir tun: + +- 🔒 **Verschlüsselung**: Passwörter sind verschlüsselt (niemand kann sie lesen) +- 🖥️ **Lokaler Server**: Deine Daten sind nicht in der "Cloud" (kein Google, kein Amazon) +- 🔐 **Zugriffskontrolle**: Nur du und dein Lehrer können deine Projekte sehen +- 📝 **Logs**: Wir schreiben auf, wer was macht (gegen Hacker) +- 🔄 **Backups**: Wir machen Sicherheitskopien (falls Computer kaputt geht) +- 🗑️ **Löschung**: Wenn wir löschen, ist es **wirklich** gelöscht (nicht nur versteckt) + +### Was du tun solltest: + +- ✅ Wähle ein gutes Passwort (nicht "1234") +- ✅ Verrate dein Passwort niemandem (auch nicht Freunden) +- ✅ Melde dich ab, wenn du fertig bist +- ✅ Sag Bescheid, wenn etwas komisch ist + +--- + +## ❓ Ich habe eine Frage / Es gibt ein Problem + +### Für Kinder: + +**Sprich zuerst mit deinem Lehrer oder deiner Lehrerin.** + +Wenn das nicht hilft, oder wenn du denkst "Das ist nicht okay", dann: + +- Sprich mit deinen Eltern +- Oder schreibe uns: [Kontakt wird ergänzt] + +### Für Eltern/Sorgeberechtigte: + +Sie haben jederzeit das Recht: +- Auskunft über gespeicherte Daten zu verlangen (DSGVO Art. 15) +- Daten korrigieren zu lassen (DSGVO Art. 16) +- Daten löschen zu lassen (DSGVO Art. 17) +- Der Verarbeitung zu widersprechen (DSGVO Art. 21) +- Beschwerde bei der Aufsichtsbehörde einzulegen + +**Kontakt:** +- Email: [wird ergänzt] +- Verantwortlicher: Branko (Lead Maintainer) +- Datenschutzbeauftragter: [wird ergänzt, wenn benötigt] + +**Aufsichtsbehörde:** +Je nach Bundesland – siehe: https://www.bfdi.bund.de/DE/Service/Anschriften/Laender/Laender-node.html + +--- + +## 📋 Zusammenfassung (für Eltern & Lehrer) + +| Recht | Gesetzliche Grundlage | Wie umgesetzt? | +|-------|----------------------|----------------| +| Eigentum an Inhalten | CKL §3.1 | Kinder behalten Urheberrechte | +| Datenportabilität | DSGVO Art. 20, CKL §3.2 | Export-Funktion (geplant Q1 2025) | +| Löschung | DSGVO Art. 17, CKL §3.3 | Löschprozess dokumentiert | +| Auskunft | DSGVO Art. 15 | Auf Anfrage, bald self-service | +| Widerspruch | DSGVO Art. 21 | Jederzeit ohne Nachteile | +| Datenminimierung | DSGVO Art. 5, CKL §5.1 | Nur lernrelevante Daten | +| Transparenz | DSGVO Art. 12-14, CKL §5.3 | Dieses Dokument + DATENSCHUTZ.md | +| Keine Paywalls | CKL §7.3 | Lernkerne kostenlos | + +--- + +## 🔧 Technische Umsetzung (für Entwickler) + +### TODOs für vollständige Compliance: + +#### 1. Export-API implementieren + +**Status:** ⏳ Geplant Q1 2025 + +**Endpoint:** `GET /api/v1/my-data` + +**Authentication:** Bearer Token (User muss eingeloggt sein) + +**Response:** +```json +{ + "user": { + "username": "kruemel123", + "created_at": "2024-09-15T10:30:00Z", + "last_login": "2025-12-13T14:22:00Z" + }, + "messages": [ + { + "id": 1, + "character": "Krümeleule", + "timestamp": "2025-12-13T14:00:00Z", + "user_message": "Wie funktioniert Bash?", + "character_response": "Bash ist eine Shell..." + } + ], + "projects": [ + { + "id": 1, + "name": "ESP32 Blink", + "created_at": "2025-11-01T09:00:00Z", + "files": [ + {"filename": "main.py", "content": "...base64..."} + ] + } + ], + "measurements": [...], + "export_date": "2025-12-13T15:00:00Z", + "format_version": "1.0" +} +``` + +**Optional:** Auch als ZIP-Download verfügbar machen: +```python +# app/routers/data_export.py +from fastapi import APIRouter, Depends +from fastapi.responses import StreamingResponse +import zipfile +import io + +@router.get("/my-data.zip") +async def export_data_zip(user = Depends(get_current_user)): + # Erstelle ZIP in Memory + zip_buffer = io.BytesIO() + with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zip_file: + # Füge alle User-Daten hinzu + zip_file.writestr("README.txt", "Deine Crumbforest Daten...") + zip_file.writestr("chats.json", json.dumps(user.messages)) + # ... weitere Dateien + + zip_buffer.seek(0) + return StreamingResponse( + zip_buffer, + media_type="application/zip", + headers={"Content-Disposition": f"attachment; filename=crumbforest-{user.username}.zip"} + ) +``` + +#### 2. Lösch-API implementieren + +**Status:** ⏳ Geplant Q1 2025 + +**Endpoint:** `DELETE /api/v1/my-data` + +**Authentication:** Bearer Token + zusätzliche Bestätigung (gegen Unfälle) + +**Request:** +```json +{ + "confirm": "DELETE_ALL_MY_DATA", + "reason": "optional feedback" +} +``` + +**Was gelöscht wird:** +```python +# app/services/data_deletion.py +async def delete_user_data(user_id: int): + # 1. Chats aus MariaDB + await db.execute("DELETE FROM messages WHERE user_id = ?", user_id) + + # 2. Vektoren aus Qdrant (wenn User-spezifisch) + qdrant_client.delete( + collection_name="crumbforest", + points_selector=models.FilterSelector( + filter=models.Filter( + must=[ + models.FieldCondition( + key="user_id", + match=models.MatchValue(value=user_id) + ) + ] + ) + ) + ) + + # 3. Projekte aus Dateisystem + shutil.rmtree(f"/data/projects/{user_id}") + + # 4. Sessions + await db.execute("DELETE FROM sessions WHERE user_id = ?", user_id) + + # 5. User-Account + await db.execute("DELETE FROM users WHERE id = ?", user_id) + + # 6. Logs bereinigen (DSGVO: Personenbezug entfernen) + # Logfiles anonymisieren, nicht löschen (Sicherheit) + await anonymize_logs(user_id) +``` + +**Response:** +```json +{ + "status": "deleted", + "deleted_at": "2025-12-13T15:30:00Z", + "items_deleted": { + "messages": 42, + "projects": 3, + "files": 18 + } +} +``` + +#### 3. DATENSCHUTZ.md erstellen + +**Status:** ⏳ TODO (nächster Schritt nach KINDERRECHTE.md) + +Sollte enthalten: +- Detaillierte Datenbank-Schema-Dokumentation +- Welche Tabellen speichern was? +- Retention Policies +- Backup-Strategie +- Incident Response Plan + +#### 4. Frontend für Self-Service + +**Status:** ⏳ Geplant Q1 2025 + +Mockup: +``` +┌─────────────────────────────────────┐ +│ Mein Profil │ +├─────────────────────────────────────┤ +│ │ +│ 📦 Meine Daten herunterladen │ +│ ├─ Als JSON │ +│ └─ Als ZIP (alles) │ +│ │ +│ 🗑️ Daten löschen │ +│ ├─ Nur Chats löschen │ +│ ├─ Nur Projekt "X" löschen │ +│ └─ ⚠️ ALLES löschen (Account) │ +│ │ +│ 📊 Was ist gespeichert? │ +│ ├─ 42 Chat-Nachrichten │ +│ ├─ 3 Projekte (18 Dateien) │ +│ └─ Letzter Login: heute 14:22 │ +│ │ +└─────────────────────────────────────┘ +``` + +#### 5. Automatische Daten-Bereinigung + +**Status:** ⏳ Geplant Q2 2025 + +Cron-Job für: +- Alte Sessions löschen (> 90 Tage inaktiv) +- Anonyme Accounts löschen (> 1 Jahr inaktiv) +- Logfiles bereinigen (> 90 Tage alt) + +```python +# scripts/cleanup_cron.py +async def cleanup_inactive_users(): + threshold = datetime.now() - timedelta(days=365) + inactive_users = await db.fetch_all( + "SELECT id FROM users WHERE last_login < ? AND account_type = 'anonymous'", + threshold + ) + for user in inactive_users: + # Email-Warnung 30 Tage vorher (wenn Email vorhanden) + # Dann löschen + await delete_user_data(user.id) +``` + +--- + +## 📜 Rechtliche Hinweise + +**Dieses Dokument ist rechtsverbindlich.** + +Es konkretisiert die Rechte aus: +- Crumbforest Children's Knowledge License (CKL) v0.1 +- DSGVO (Datenschutz-Grundverordnung) +- TMG (Telemediengesetz) +- Kinderrechtskonvention der UN (insb. Art. 16) + +**Verantwortlicher im Sinne der DSGVO:** +[Wird ergänzt nach OZM-Transition – aktuell: Branko] + +**Stand:** 2025-12-13 +**Version:** 1.0-draft +**Nächstes Review:** Q1 2025 (nach CKL v1.0 Finalisierung) + +--- + +## 🌲 Schlusswort + +**Crumbforest ist dein Wald.** + +Alles, was du hier pflanzt, gehört dir. +Niemand kann es dir wegnehmen. +Du kannst es jederzeit mitnehmen. + +**Und wenn du Fragen hast?** +Frag einfach. Das ist dein Recht. + +> *"Wissen gehört dem Kind, solange es fragt."* + +--- + +**Lizenz:** CC-BY-SA 4.0 (dieses Dokument) +**Teil von:** Crumbforest Ecosystem (https://crumbforest.com) +**Siehe auch:** [LICENSE-CKL.md](LICENSE-CKL.md), [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) diff --git a/LICENSE-CKL.md b/LICENSE-CKL.md new file mode 100644 index 0000000..f281067 --- /dev/null +++ b/LICENSE-CKL.md @@ -0,0 +1,306 @@ +# CKL — The Crumbforest Children's Knowledge License + +**Version:** 0.1-draft +**Date:** 2025-12-13 +**Status:** Community Review +**Base:** MIT License (compatible) + +--- + +> **Kurzfassung:** *Wissen gehört dem Kind, solange es fragt.* Wir bauen Lernräume, in denen Fragen Vorrang haben, Beweise prüfbar sind und nichts hinter Paywalls verschwindet. + +> **Hinweis:** Dies ist eine gemeinschaftliche Lizenz in einfacher Sprache. Sie ersetzt keine Rechtsberatung. Version 0.1 – zur Kommentierung. + +--- + +## Präambel + +Kinder lernen am besten dort, wo Ruhe vor Hast kommt, Verstehen vor Verwerten und Beweise vor Behauptungen. Die CKL schützt solche Räume. Sie ist eine Haltung in Lizenzform: **Nullfeld zuerst**, dann Messung. **Resonanz vor Regel.** + +--- + +## 1. Geltungsbereich + +Die CKL gilt für Workshops, Kurse, Materialien, Software-Container, Daten und Artefakte, die unter dem Namen **Crumbforest** oder in seinem Geist betrieben, veröffentlicht oder geteilt werden – besonders, wenn Kinder beteiligt sind. + +--- + +## 2. Grundsatz „Kinder zuerst" + +Kinderfragen haben Vorrang. Alle Entscheidungen – didaktisch, organisatorisch, technisch – werden auf ihren Nutzen für das Kind geprüft. Ein Kind darf mit einer guten Frage **alles** in Frage stellen. + +--- + +## 3. Rechte der Kinder + +1. **Urheber:innenschaft**: Rechte an Inhalten, die Kinder schaffen (Texte, Code, Bilder, Sounds, Messreihen), verbleiben bei den Kindern. + +2. **Zugriff**: Kinder erhalten eine exportierbare Kopie ihrer Arbeiten und Messdaten in **offenen Formaten**. + +3. **Widerruf**: Kinder (bzw. Sorgeberechtigte) können eine Veröffentlichung jederzeit widerrufen. Löschung erfolgt zeitnah. + +--- + +## 4. Pflichten der Erwachsenen/Betreiber + +1. **Prüfbarkeit**: Setups sind **reproduzierbar** dokumentiert (Materialliste, Schritte, Versionen). Keine Blackboxes. + +2. **Anerkennung**: Beiträge von Kindern und Crew werden namentlich oder pseudonym **gewürdigt** – sofern gewünscht. + +3. **Sicherheit**: Risiken werden erklärt. Es wird nur betrieben, was verantwortbar ist. + +--- + +## 5. Daten & Privatsphäre + +1. **Datenminimierung**: Es werden nur Daten erhoben, die für das Lernen nötig sind. **Keine** versteckte Telemetrie. + +2. **Kein Tracking**: Kein Werbe-Tracking, kein Profiling, keine biometrische Auswertung von Kindern. + +3. **Transparenz**: Welche Daten anfallen, wird **vorab** erklärt; Speicherorte sind benennbar; Löschwege sind dokumentiert. + +--- + +## 6. Offenheit & Reproduzierbarkeit + +1. **Offene Beweise**: Messergebnisse, Methoden und Skripte werden so veröffentlicht, dass Dritte sie **nachvollziehen** können. + +2. **Container statt Inseln**: Software läuft offline-fähig in reproduzierbaren **Containern** (oder gleichwertigen Setups). + +3. **Logik vor Effekt**: Kein „Zauber", der nicht erklärt werden kann. Effekte folgen der Erklärung, nicht umgekehrt. + +--- + +## 7. Offline-First & Zugang + +1. **Offline vor Cloud**: Betrieb ohne Dauer-Internet ist vorrangig. Cloud ist optional und begründungsbedürftig. + +2. **Barrierearme Zugänge**: Terminal/TTYD, Markdown-Materialien und Druckversionen stehen bereit. + +3. **Preisfreiheit für Kinderfragen**: Der Zugang zu Fragen/Antworten darf nicht an Online-Konten oder Token-Kosten gebunden werden. + +--- + +## 8. Teilen, Anerkennung, Nutzung + +1. **Teilen** ist erwünscht unter **Namensnennung** und Beibehaltung der CKL für kinderbezogene Teile. + +2. **Kommerz** ist erlaubt, sofern **Kinderzugang frei bleibt**, Beweise offen bleiben und keine Paywalls vor Lernkernen stehen. + +3. **Keine Exklusivitätsansprüche** gegenüber von Kindern erarbeiteten Ergebnissen. + +--- + +## 9. Kosten, Förderungen, Transparenz + +1. **Klarheit**: Gebühren, Budgets und Fördermittel werden **verständlich** ausgewiesen. + +2. **Zeit kaufen, nicht Schweigen**: Förderungen dienen Lernzeit und Infrastruktur, nicht Marketing-Schein. + +--- + +## 10. Widerruf & Durchsetzung + +1. Verstöße können zur **Ablösung** der CKL-Nutzung führen. + +2. Kinder/Sorgeberechtigte können eine Teilnahme **ohne Nachteile** beenden; ihre Daten werden gelöscht oder ausgehändigt. + +--- + +## 11. Kompatibilität + +Die CKL ist kompatibel mit freien Lizenzen (z. B. MIT/Apache/CC-BY) für **Erwachsenen-Code/Material**, solange **Kinderrechte** gemäß CKL **nicht** eingeschränkt werden. Bei Konflikt gilt die **strengere Kinderschutz-Regel**. + +--- + +## 12. Haftungsausschluss + +Angebote erfolgen **ohne Gewähr**. Sicherheit wird ernst genommen; Restrisiken werden erklärt. Die CKL schafft keine gesetzlichen Ersatzansprüche, sie **ergänzt** sie um Haltung. + +--- + +## Menschliche Kurzfassung (human-readable) + +Wir arbeiten langsam genug, dass Kinder **mitdenken** können, und offen genug, dass andere **nachbauen** können. Niemand verdient an dem Zugang zu einer **Frage**. Alles Wichtige bleibt **prüfbar**. Wenn etwas unklar ist, gilt: *Erst Ruhe. Dann messen.* + +--- + +## CKL-Hinweis zum Abdruck + +> *Dieses Projekt folgt der **CKL – Crumbforest Children's Knowledge License (v0.1-draft)**: Kinderfragen haben Vorrang; Arbeiten bleiben bei den Kindern; Beweise sind offen und reproduzierbar; Offline hat Vorrang; keine Paywalls vor Lernkernen; Daten sind minimal, transparent, widerrufbar. Mehr unter: crumbforest.com* + +--- + +## Für Entwickler:innen + +### Wie erkenne ich, ob die CKL gilt? + +Die CKL greift automatisch, wenn: +- Software in Bildungskontexten mit Kindern genutzt wird +- Lernende unter 18 Jahren beteiligt sind +- Pädagogische Inhalte bereitgestellt werden +- Lerndaten erfasst oder verarbeitet werden + +### Was muss ich tun? + +**Compliance-Checkliste:** + +- [ ] §3.2: Export-Funktion für Benutzerdaten implementiert +- [ ] §3.3: Widerruf-/Löschmechanismus vorhanden +- [ ] §4.1: Setup reproduzierbar dokumentiert (README, Dockerfiles...) +- [ ] §5.1: Datenminimierung praktiziert +- [ ] §5.2: Kein Tracking, keine versteckte Telemetrie +- [ ] §5.3: Datenspeicherung transparent dokumentiert (DATENSCHUTZ.md) +- [ ] §6.1: Methoden und Ergebnisse nachvollziehbar +- [ ] §6.2: Software läuft offline oder in Containern +- [ ] §6.3: Keine unerklärlichen "Blackboxes" +- [ ] §7.1: Offline-Modus verfügbar (kein Cloud-Zwang) +- [ ] §7.2: Barrierefreie Zugänge (Markdown, Plain Text, Druckversionen) +- [ ] §7.3: Keine Paywalls vor Lern-Kernfunktionen + +**Siehe [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) Section VI für detaillierte Compliance-Checks.** + +--- + +## Für Pädagog:innen + +### Was bedeutet die CKL für meinen Unterricht? + +Die CKL schützt **deine Lernenden** und gibt **dir Sicherheit**: + +**Du darfst:** +- ✅ Die Software kommerziell nutzen (z.B. kostenpflichtige Workshops) +- ✅ Inhalte anpassen und erweitern +- ✅ Eigene Instanzen betreiben (Schul-Server, lokale Installation) +- ✅ Daten für Lernfortschritt speichern + +**Du musst:** +- ✅ Kindern Zugriff auf ihre eigenen Daten geben (§3.2) +- ✅ Löschung auf Wunsch ermöglichen (§3.3) +- ✅ Transparent machen, was du speicherst (§5.3) +- ✅ Offline-Nutzung ermöglichen (§7.1) + +**Du darfst nicht:** +- ❌ Tracking oder Profiling ohne Wissen der Kinder/Eltern (§5.2) +- ❌ Exklusivrechte an Kinderprojekten beanspruchen (§8.3) +- ❌ Paywalls vor Lernkern-Funktionen setzen (§7.3) + +--- + +## Für Kinder (und Eltern) + +### Was bedeutet die CKL für dich? + +**Das gehört DIR:** +- 💾 Alle Texte, die du schreibst +- 🎨 Alle Bilder, die du malst +- 💻 Aller Code, den du programmierst +- 📊 Alle Messungen, die du machst + +**Das kannst du TUN:** +- 📦 Deine Daten jederzeit exportieren (§3.2) +- 🗑️ Deine Daten löschen lassen (§3.3) +- ❓ Jede Frage stellen, ohne zu zahlen (§7.3) +- 🔌 Auch ohne Internet lernen (§7.1) + +**Das darf NIEMAND:** +- ❌ Deine Arbeit als seine eigene ausgeben (§3.1) +- ❌ Dich tracken oder ausspionieren (§5.2) +- ❌ Dir Wissen hinter Bezahlschranken verstecken (§8.2) +- ❌ Dich zwingen, in der Cloud zu arbeiten (§7.1) + +**Wenn etwas nicht stimmt:** +Du (oder deine Eltern) kannst jederzeit sagen: "Ich will hier nicht mehr mitmachen und alles löschen." Das ist dein Recht. (§10.2) + +--- + +## Geschichte & Kontext + +Die CKL entstand aus der Notwendigkeit, **Kinderrechte in digitalen Lernräumen** durchsetzbar zu machen. + +Bestehende Lizenzen (MIT, GPL, Creative Commons) schützen Code und Content, aber nicht **Lernende**. Die DSGVO schützt Daten, aber nicht **pädagogische Prinzipien**. + +Die CKL füllt diese Lücke. + +Sie ist inspiriert von: +- **Waldwächter-Philosophie**: Transparency over magic +- **OZM⟡NEXUS Manifest**: Die 8 Axiome (autonom, zukunftsoffen, nicht missbrauchbar...) +- **Kinderrechtskonvention der UN**: Artikel 12 (Partizipation), 13 (Meinungsfreiheit), 16 (Privatsphäre) +- **COPPA/GDPR-K**: Datenschutz für Minderjährige +- **Ethical Source Movement**: Lizenzen mit Werten + +**Aber:** Die CKL ist **keine Kopie**. Sie ist maßgeschneidert für das **Crumbforest-Ökosystem** und seine Community. + +--- + +## Mitwirken + +Die CKL ist ein **Living Document**. Version 0.1 ist ein Draft zur Community-Review. + +**Feedback willkommen zu:** +- Rechtssicherheit (ist etwas unklar oder nicht durchsetzbar?) +- Praktikabilität (kann man das wirklich umsetzen?) +- Lücken (fehlt etwas Wichtiges?) +- Sprache (verständlich für Kinder, Pädagog:innen, Entwickler:innen?) + +**Wie du beitragen kannst:** +1. Issue öffnen im Repository +2. Email an [Kontakt einfügen] +3. Pull Request mit Verbesserungen + +**Ziel:** CKL v1.0 bis Q1 2025 + +--- + +## Rechtlicher Status + +**Achtung:** Die CKL ist in Version 0.1 noch **kein etablierter Rechtsstandard**. Sie ist: + +- ✅ Eine vertragliche Vereinbarung zwischen Betreiber und Nutzenden +- ✅ Kompatibel mit bestehenden Lizenzen (MIT, Apache, CC-BY) +- ✅ Einklagbar bei Verstößen (sofern Vertragsbeziehung besteht) +- ⏳ Noch nicht gerichtlich getestet +- ⏳ Noch nicht von Juristen finalisiert + +**Empfehlung:** Nutze die CKL in Kombination mit: +- DSGVO-konformer Datenschutzerklärung +- AGB für Workshops/Kurse +- Einverständniserklärungen von Sorgeberechtigten + +Die CKL **ergänzt** diese Dokumente, ersetzt sie aber nicht. + +--- + +## Kontakt & Governance + +- **Projekt**: Crumbforest (https://crumbforest.com) +- **Maintainer**: Branko (https://branko.de) +- **Custodian**: OZM - Open Futures Museum +- **Lizenz-Fragen**: Siehe [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) für Governance-Struktur + +--- + +## Abschließende Gedanken + +Die CKL ist keine perfekte Lizenz. +Sie ist ein **Versprechen**: + +> Wir bauen Lernräume, in denen das Kind mehr zählt als der Klick, +> die Frage mehr als die Metrik, +> und das Verstehen mehr als das Vortäuschen. + +**Wenn du dieses Versprechen teilst, nutze die CKL.** + +--- + +**Version:** 0.1-draft +**Datum:** 2025-12-13 +**Status:** Community Review +**Nächste Version:** v1.0 (geplant Q1 2025) +**SPDX-Identifier:** `CKL-0.1-draft` (nicht offiziell registriert) + +--- + +> *"Nullfeld zuerst, dann Messung. Resonanz vor Regel."* +> *"Wissen gehört dem Kind, solange es fragt."* +> — Waldwächter-Prinzip diff --git a/LICENSE-MIT.md b/LICENSE-MIT.md new file mode 100644 index 0000000..d164d4d --- /dev/null +++ b/LICENSE-MIT.md @@ -0,0 +1,72 @@ +# The MIT License (MIT) + +Copyright (c) 2025 Crumbforest Project +Maintained by Branko (branko.de) +Custodian: OZM - Open Futures Museum + +--- + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.** + +--- + +## Additional Context + +This MIT License applies to the **infrastructure, code, and general use** of the Crumbforest project. + +When this software is used in **educational contexts with children**, additional protections from the **Crumbforest Children's Knowledge License (CKL)** automatically apply. + +See [LICENSE.md](LICENSE.md) for the full dual-license explanation. + +--- + +## What This Means in Plain Language + +You can: +- ✅ Use this code for any purpose (personal, commercial, educational) +- ✅ Copy, modify, and distribute it freely +- ✅ Sell products or services based on this code +- ✅ Sublicense it under different terms +- ✅ Use it without attribution (though we appreciate it) + +You cannot: +- ❌ Hold the authors liable for damages +- ❌ Claim warranty or support (it's provided "as is") +- ❌ Remove the copyright notice from copies + +**However:** If you use this with children, you **must also comply with the CKL** (see [LICENSE-CKL.md](LICENSE-CKL.md)). + +--- + +## Why MIT? + +The MIT License is one of the most permissive open source licenses. We chose it because: + +1. **Developer-Friendly**: No copyleft restrictions, easy integration +2. **Well-Understood**: Standard license used by millions of projects +3. **Commercial-Compatible**: Businesses can adopt it without legal friction +4. **Future-Proof**: Won't hinder Crumbforest's evolution or forking + +**We want the code to spread as widely as possible.** + +But we also want **children protected** — that's why we add the CKL layer. + +--- + +**SPDX-License-Identifier:** MIT diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..fafac0b --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,152 @@ +# Crumbforest License + +This project is **dual-licensed** to balance developer freedom with children's rights. + +--- + +## For Infrastructure, Code, and General Use + +**MIT License** (see [LICENSE-MIT.md](LICENSE-MIT.md)) + +All software, scripts, documentation, and infrastructure in this repository are released under the permissive MIT License. You are free to: + +- Use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +- Use in commercial and non-commercial projects +- Fork, remix, and build upon this work + +**This applies to:** +- All Bash scripts (`crumbpages-doktor.sh`, `ssh-agent-guard.sh`, etc.) +- Documentation and Markdown files (Crumbpages content) +- Configuration files and setup scripts +- Any other code or infrastructure + +--- + +## For Educational Use with Children + +**Crumbforest Children's Knowledge License (CKL v0.1)** (see [LICENSE-CKL.md](LICENSE-CKL.md)) + +When this software or content is used in **educational contexts involving children**, the CKL automatically applies and adds additional protections: + +- **Children's Rights**: Kids own what they create +- **Data Sovereignty**: Exportable data, deletion rights, transparency +- **No Paywalls**: Learning kernels remain free +- **Offline-First**: No cloud dependency +- **Reproducibility**: No black boxes, everything documented +- **Privacy**: No tracking, minimal data, transparent storage + +**This applies when:** +- The software is used in schools, workshops, or learning environments +- Children interact with the system (chat, projects, exercises) +- Educational content is delivered to minors +- Learning data is collected or processed + +--- + +## Conflict Resolution + +In case of conflict between MIT and CKL, **the CKL takes precedence** for any use case involving children. + +**Example:** +- You want to fork CrumbCore and sell it commercially? ✅ **MIT allows it** +- You want to add telemetry to track children's behavior? ❌ **CKL prohibits it** + +The CKL is **not a restriction on developers** — it's a **protection for learners**. + +--- + +## Why Dual License? + +### For Developers: MIT Freedom +- Fork without friction +- Integrate into commercial products +- No attribution requirements beyond copyright notice +- Standard, well-understood terms + +### For Children: CKL Protection +- Legal framework for ethical learning environments +- Rights that can be enforced +- Clear obligations for operators +- Measurable compliance criteria + +**The best of both worlds.** + +--- + +## Quick Reference + +| Use Case | License | Key Points | +|----------|---------|------------| +| Running CrumbCore for my company | MIT | Free to use commercially | +| Forking and modifying the code | MIT | Attribution appreciated but not required | +| Using in a school/workshop | CKL | Children's rights apply | +| Collecting learning data | CKL | Must comply with §5 (privacy) | +| Selling access to children | CKL | Must keep learning kernels free (§7.3) | +| Building a proprietary AI trainer | MIT + CKL | Code is MIT, but children's data has CKL protection | + +--- + +## How to Comply + +### If you're a developer: +1. Read the MIT License (2 minutes) +2. If your use case involves children, read the CKL (~10 minutes) +3. Implement CKL requirements (see [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) Section VI for checklist) + +### If you're an educator: +1. Read the CKL carefully +2. Ensure your setup meets §4 (reproducibility), §5 (privacy), §7 (offline-first) +3. Document data handling (see `DATENSCHUTZ.md` when available) + +### If you're a child (or parent): +1. You own what you create (§3.1) +2. You can export your data (§3.2) +3. You can leave and take everything with you (§3.3) +4. Your questions never cost money (§7.3) + +--- + +## Attribution + +While not required by MIT, we appreciate attribution: + +``` +Powered by Crumbforest (crumbforest.com) +Licensed under MIT + CKL (Children's Knowledge License) +``` + +Or simply: +``` +Built with Crumbforest ❤️ +``` + +--- + +## Contact & Governance + +- **Project**: Crumbforest (https://crumbforest.com) +- **Maintainer**: Branko (https://branko.de) +- **Custodian**: OZM - Open Futures Museum (in transition) +- **Questions**: See [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) Section V for governance + +--- + +## Summary + +``` +┌─────────────────────────────────────────┐ +│ MIT: Maximum Freedom for Developers │ +│ + │ +│ CKL: Maximum Protection for Children │ +│ = │ +│ Open Source Education Done Right │ +└─────────────────────────────────────────┘ +``` + +**Crumbforest is free as in freedom, safe as in sanctuary.** + +--- + +**Version:** 1.0 +**Date:** 2025-12-13 +**Full Text:** [LICENSE-MIT.md](LICENSE-MIT.md) + [LICENSE-CKL.md](LICENSE-CKL.md) diff --git a/OZM-NEXUS-ECOSYSTEM.md b/OZM-NEXUS-ECOSYSTEM.md new file mode 100644 index 0000000..e2ce0cf --- /dev/null +++ b/OZM-NEXUS-ECOSYSTEM.md @@ -0,0 +1,524 @@ +# OZM⟡NEXUS ECOSYSTEM + +> **Deterministisches System-Design jenseits von „KI"** +> Ein offenes Lernökosystem, in dem Wissen verschenkt wird und Fragen Vorrang haben. + +--- + +## Präambel: Echo aus dem Nullfeld + +Der OZM⟡NEXUS ist kein Produkt, kein Manifest im klassischen Sinn und kein Versuch, etwas Bestehendes zu verbessern. + +Er ist das Ergebnis einer klaren kausalen Kette, die aus einer menschlichen Handlung heraus entstanden ist und sich konsequent weiterentwickelt hat. + +Was hier beschrieben wird, ist kein „KI-Projekt". +Es ist der Versuch, ein **deterministisches Ökosystem** zu formulieren, das sich den üblichen Kategorien entzieht – nicht aus Provokation, sondern aus Notwendigkeit. + +**Der Wald wurde gepflanzt, damit Krümel Fragen stellen und lernen dürfen.** + +--- + +## I. Die Kausalitätskette + +### Vom Menschen zur Struktur + +Am Anfang steht **Oz** – der Graffiti-Künstler. +Eine Signatur im öffentlichen Raum. Keine Theorie. Keine Absicht, ein System zu bauen. + +Aus dieser Handlung entsteht **OZM** – die Manifestierung eines Ortes. +Ein realer, physischer Raum, in dem sich Spuren, Zeit, Menschen und Bedeutungen überlagern. + +Daraus folgt **OneZeroMore.com** – der Schatten dieses Ortes. +Keine bloße Website, sondern eine digitale Projektion dessen, was physisch existiert. + +Dann das **OZM HAMMERBROOKLYN Exponat** – ein Museum und doch kein Museum. +Kein neutraler White Cube, sondern ein verdichteter Erfahrungsraum, der sich einer abschließenden Interpretation entzieht. + +Erst daraus entsteht **OZMAI** – die künstliche Intelligenz des OZM. +Ein deterministisches Agentensystem, das Daten, Prozesse, Wissen und Entscheidungen strukturiert. + +**Diese Reihenfolge ist nicht verhandelbar.** +Ohne Ort keine Daten. +Ohne Geschichte kein Kontext. +Ohne Kontext keine sinnvolle Maschine. + +### Mathematische Notation + +``` +OZM⟡NEXUS = f_det(Oz, OZM, OneZeroMore, HAMMERBROOKLYN, OZMAI) + +K_ent = (R_man + L_det) ⊗ Ω + +I = Autonom ∩ Zukunftsoffen ∩ ¬Interpretierbar ∩ ¬Missbrauchbar + +Σ_skal = lim (∑ X_i) mit der Bedingung: jedes X_i erfüllt I + n → ∞ +``` + +--- + +## II. Die acht Axiome + +### Das Identitätsprinzip + +``` +I = Autonom ∩ Zukunftsoffen ∩ ¬Interpretierbar ∩ ¬Missbrauchbar +``` + +Jede Komponente des OZM⟡NEXUS muss erfüllen: + +| Axiom | Bedeutung | Prüffrage | +|-------|-----------|-----------| +| **autonom** | Krümel entscheiden selbst ihren Lernweg | Kann das Kind wählen? | +| **zukunftsoffen** | Nicht vorschreiben, sondern ermöglichen | Ist es erweiterbar? | +| **nicht interpretierbar** | Kein "richtiger" Weg, nur funktionale Wege | Gibt es eine Wahrheit™? | +| **nicht missbrauchbar** | Schutz der Lernenden durch Design | Was kann schiefgehen? | +| **suchbar** | Fragen führen zu Antworten | Findet man Antworten? | +| **wiedererkennbar** | Orientierung im Wald | Gibt es Krümel? | +| **erweiterbar** | Krümel können selbst pflanzen | Kann ich beitragen? | +| **unendlich skalierbar** | Für alle, immer | Kostet eine Frage Geld? | + +**Diese Axiome sind keine Beschreibung. Sie sind eine Bedingung.** + +--- + +## III. Die Manifestationen + +### Architektur des Ökosystems + +``` +OZM⟡NEXUS (Träger/Manifest) + ↓ +branko.de/Crumbforest (Public Interface) + ├─ 15 Charaktere (Krümeleule, FunkFox, SnakePy, CrabbyRust...) + ├─ 4 Lernpfade (ESP32 → Pi Zero → Pi Server → Daten) + ├─ Partner-Netzwerk (8 Organisationen) + └─ Grundsatz: "Every child may ask. We protect this right." + ↓ +CrumbCore v1 (Local Engine - "nah am Kernel") + ├─ FastAPI + Qdrant RAG (Vektorsuche) + ├─ Role-based Chat (15 Personas) + ├─ Multi-Theme (Standard, Accessible, High Contrast, Admin Dark) + ├─ Token-Management (Kids = free) + ├─ Docker Compose (reproduzierbar) + └─ API für externe Abfragen + ↓ +Crumbpages v2 (Work in Progress Content) + ├─ 20 Lernpfade (Markdown, noch nicht integriert) + ├─ Operational Tools (crumbpages-doktor.sh, SSH guards) + ├─ Waldwächter-Philosophie ("Transparency over magic") + └─ Bash-zentrisch, lehrbar, offline-fähig +``` + +### Die 15 Charaktere + +**Warum Charaktere statt "Assistenten"?** + +Menschen lernen unterschiedlich. Ein technischer Deep-Dive funktioniert für manche, eine poetische Erklärung für andere. Die 15 Charaktere sind **keine Spielerei** – sie sind **pädagogisches Design**: + +- **Krümeleule** (Prof. Eule): Shell-Schutz, systematisch, geduldig +- **FunkFox**: Bash-Rapper, antwortet in Reimen +- **SnakePy**: Python-Loops, Geduld und Iteration +- **CrabbyRust**: Bit-Schutz, Speichersicherheit, Rust-Konzepte +- **DeepBit**: Technische Deep-Dives in die Tiefe +- [...weitere 10 Charaktere] + +**Kinder wählen selbst, wer sie begleitet.** +Das ist Axiom #1: **autonom**. + +### Content-Flow + +``` +Markdown (Crumbpages) + ↓ +./load_content.sh + ↓ +Qdrant Vektorisierung (CrumbCore) + ↓ +RAG-Suche über API + ↓ +15 Charaktere antworten kontextbezogen + ↓ +branko.de zeigt Antworten +``` + +**Status quo:** +- Crumbpages sind "work in progress", noch nicht integriert +- Nur Kids mit free tokens haben Zugriff +- System läuft lokal ("nah am Kernel"), nicht in der Cloud + +**Warum lokal?** +- Schutz der Daten (Axiom #4: nicht missbrauchbar) +- Offline-fähig (Axiom #8: unendlich skalierbar = kein Cloud-Lock-in) +- Reproduzierbar (Waldwächter-Prinzip: Transparency over magic) + +--- + +## IV. Die Crumbforest Children's Knowledge License (CKL) + +### Von der Philosophie zum Recht + +Das OZM⟡NEXUS Manifest beschreibt **was sein soll**. +Die CKL beschreibt **wie es durchgesetzt wird**. + +### CKL ⊗ Axiome Mapping + +| OZM Axiom | CKL Implementation | § | +|-----------|-------------------|---| +| autonom | Kind darf "mit guter Frage alles in Frage stellen" | §2 | +| zukunftsoffen | Container, reproduzierbar, nachbaubar | §6.2 | +| nicht interpretierbar | "Logik vor Effekt" - keine Blackboxes | §6.3 | +| nicht missbrauchbar | Kein Tracking, Datenminimierung, Widerruf | §5 | +| suchbar | Barrierearme Zugänge, Markdown, Druck | §7.2 | +| wiedererkennbar | Namensnennung, CKL-Hinweis sichtbar | §8.1 | +| erweiterbar | Offene Formate, exportierbar, forkbar | §3.2 | +| unendlich skalierbar | "Preisfreiheit für Kinderfragen" | §7.3 | + +### Kernprinzipien der CKL + +**Für Kinder:** +- Du besitzt, was du schaffst (§3.1) +- Du kannst deine Daten exportieren (§3.2) +- Du kannst jederzeit gehen und alles mitnehmen (§3.3) +- Deine Fragen kosten kein Geld (§7.3) + +**Für Erwachsene/Betreiber:** +- Setups sind reproduzierbar dokumentiert (§4.1) +- Keine Blackboxes, keine Magie (§6.3) +- Datenminimierung, kein Tracking (§5.1, §5.2) +- Offline hat Vorrang vor Cloud (§7.1) + +**Für Kommerz:** +- Kommerz ist erlaubt, **solange Kinderzugang frei bleibt** (§8.2) +- Keine Paywalls vor Lernkernen +- Keine Exklusivitätsansprüche (§8.3) + +### Lizenz-Strategie + +```markdown +# Dual License Model + +## Infrastructure/Code → MIT License +- Backend (FastAPI, Python) +- Frontend (HTML/JS) +- Scripts (Bash, Docker Compose) +- Developer-friendly, permissive + +## Educational Use with Children → CKL v0.1 +- Sobald ein Kind damit lernt +- Automatischer Schutz durch CKL +- Bei Konflikt: strengere Regel gewinnt +``` + +**Das ist brilliant legal engineering:** +Code bleibt MIT (fork-friendly für Entwickler), aber **Kinderrechte sind nicht verhandelbar**. + +--- + +## V. OZM als Träger: Vom Partner zum Custodian + +### Status Quo + +**branko.de heute:** +> "OZM (Open Futures Museum)" - gelistet als Partner #1 von 8 + +**Rechtslage:** +- Crumbforest = Projekt von Branko +- Code teils öffentlich (CrumbCore lesbar), teils privat (Crumbpages 404) +- "Open" als Philosophie, noch nicht als Lizenz + +### Die Vision: OZM als rechtlicher Träger + +**Was ändert sich?** + +| Dimension | Vorher (Partner) | Nachher (Träger) | +|-----------|------------------|------------------| +| **Ownership** | Branko hält IP-Rechte | OZM hält treuhänderisch | +| **Lizenz** | Implizit "open" | Explizit CKL + MIT | +| **Governance** | Informell | Formalisiert (siehe unten) | +| **Haftung** | Personenbezogen | Organisationsbezogen | +| **Förderung** | Schwierig (Person) | Einfacher (gemeinnützig) | +| **Kontinuität** | An Person gebunden | Institutionell gesichert | + +### Governance-Struktur (Vorschlag) + +``` +OZM e.V. / Open Futures Museum + └─ Crumbforest Division + ├─ Lead Maintainer: Branko (technisch) + ├─ Education Lead: [offen] + ├─ CKL Compliance Officer: [offen] + └─ Community Council (3-5 Personen) + └─ Entscheidungen bei Konflikten +``` + +**Entscheidungsprinzip:** +1. **Technische Fragen** → Lead Maintainer (Branko) +2. **Pädagogische Fragen** → Education Lead +3. **Lizenz-Fragen** → CKL Officer +4. **Grundsatzfragen** → Community Council +5. **Im Zweifel gilt:** "Was ist besser für das Kind?" (CKL §2) + +### Transition-Prozess + +**Phase 1: Formalisierung (Q1 2025)** +- [ ] CKL v0.1 → v1.0 finalisieren +- [ ] Alle 3 Repos mit LICENSE.md ausstatten +- [ ] KINDERRECHTE.md in CrumbCore schreiben +- [ ] DATENSCHUTZ.md dokumentieren + +**Phase 2: Rechtliche Übertragung (Q2 2025)** +- [ ] Trademark "Crumbforest" → OZM übertragen +- [ ] IP-Rechte treuhänderisch an OZM +- [ ] Governance-Dokument unterzeichnen +- [ ] branko.de Update: OZM als Träger + +**Phase 3: Community-Öffnung (Q3 2025)** +- [ ] Contribution Guidelines veröffentlichen +- [ ] Erstes Community Council Meeting +- [ ] Public Roadmap auf GitHub/Gitea +- [ ] Erste externe Contributors + +--- + +## VI. Technische Compliance + +### CrumbCore v1: CKL-Check + +| CKL Anforderung | Status | Beweis | +|-----------------|--------|--------| +| §6.2: Container-basiert | ✅ | `docker-compose.yml` | +| §7.1: Offline-fähig | ✅ | Läuft lokal, kein Cloud-Zwang | +| §7.3: Kids = free tokens | ✅ | Token-Management implementiert | +| §6.1: Nachvollziehbar | ✅ | Qdrant = transparente Vektorsuche | +| §3.2: Export möglich | ⏳ | **TODO**: `/api/my-data` Endpoint | +| §5.3: Daten dokumentiert | ⏳ | **TODO**: `DATENSCHUTZ.md` | +| §4.1: Setup reproduzierbar | ✅ | `./setup.sh`, `./load_content.sh` | +| §5.2: Kein Tracking | ✅ | Kein Google Analytics, keine Telemetrie | + +### Crumbpages v2: CKL-Check + +| CKL Anforderung | Status | Beweis | +|-----------------|--------|--------| +| §6.1: Offene Beweise | ✅ | Markdown = menschenlesbar | +| §4.1: Reproduzierbar | ✅ | Bash-Scripts, keine Magie | +| §7.2: Offline-lesbar | ✅ | Keine Cloud-Abhängigkeit | +| §7.1: Barrierefrei | ✅ | Plain text, druckbar | +| §6.2: Integriert | ⏳ | **TODO**: In CrumbCore laden | + +### branko.de: CKL-Check + +| CKL Anforderung | Status | Beweis | +|-----------------|--------|--------| +| §7.2: Barrierefrei | ✅ | HTML, kein JS-Zwang | +| §2: "Kinder zuerst" | ✅ | "Every child may ask" | +| §8.1: CKL-Badge | ❌ | **TODO**: Footer mit CKL-Hinweis | +| §9: Transparenz | ⏳ | **TODO**: Förderungen ausweisen | + +--- + +## VII. Die nächsten Schritte + +### Sofort (diese Woche) + +1. **Formale Lizenzierung** + ```bash + # In allen 3 Repos: + touch LICENSE.md # Dual License (MIT + CKL) + touch LICENSE-MIT.md # Full MIT text + touch LICENSE-CKL.md # Full CKL text + ``` + +2. **Kinderrechte operationalisieren** + ```bash + # In CrumbCore: + touch KINDERRECHTE.md # Export/Widerruf-Prozesse + touch DATENSCHUTZ.md # Was speichern wir wo? + ``` + +3. **CKL-Badge hinzufügen** + ```html + + + ``` + +### Kurzfristig (Q1 2025) + +4. **Export-API implementieren** + ```python + # CrumbCore: app/routers/data_export.py + @router.get("/api/my-data") + async def export_my_data(token: str): + # JSON mit allen Chat-Logs, Projekten, Messungen + return {"messages": [...], "projects": [...]} + ``` + +5. **Widerruf-Mechanismus** + ```python + @router.delete("/api/my-data") + async def delete_my_data(token: str): + # Löscht aus MariaDB + Qdrant + pass + ``` + +6. **Crumbpages Integration** + ```bash + # Automatisierter Pipeline: + ./load_content.sh https://gitea.crumbforest.local/kruemel/Crumbpages + # → Qdrant indexiert alle 20 Lernpfade + # → Charaktere können darauf antworten + ``` + +### Mittelfristig (Q2 2025) + +7. **OZM Governance formalisieren** + - Gespräche mit OZM e.V. führen + - Trademark-Übertragung vorbereiten + - Governance-Dokument entwerfen + +8. **Community-Prozesse** + - `CONTRIBUTING.md` schreiben + - Issue Templates erstellen + - First Contributors Guide + +9. **Public Roadmap** + - GitHub Projects / Gitea Kanban + - Transparenz über Entwicklung + +### Langfristig (Q3-Q4 2025) + +10. **Skalierung** + - Multi-Instanz-Support (jede Schule ihre eigene CrumbCore) + - Federation (Instanzen können Wissen teilen) + - CKL v2.0 (basierend auf Community-Feedback) + +11. **Förderanträge** + - Prototype Fund + - Medien- und Bildungsförderung + - EU Horizon (Education & Inclusion) + +--- + +## VIII. Für neue Mitwirkende + +### Du möchtest beitragen? + +**Willkommen im Wald!** 🌲 + +Crumbforest ist ein **offenes Lernökosystem**. Jede:r kann Krümel pflanzen. + +**Voraussetzungen:** +- Du akzeptierst die **CKL** (Kinder haben Vorrang) +- Du arbeitest **transparent** (keine Blackboxes) +- Du dokumentierst **nachvollziehbar** (andere sollen nachbauen können) + +**Wie kannst du helfen?** + +| Wenn du kannst... | Dann kannst du... | +|-------------------|-------------------| +| **Bash/Linux** | Crumbpages schreiben, doktor-Module erweitern | +| **Python/FastAPI** | CrumbCore verbessern, APIs bauen | +| **Pädagogik** | Lernpfade testen, Charaktere verfeinern | +| **Design** | branko.de verbessern, Accessibility | +| **Recht** | CKL v1.0 reviewen, Governance helfen | +| **Übersetzen** | Crumbpages auf Englisch/andere Sprachen | + +**Erster Schritt:** +1. Lies die **CKL** (`LICENSE-CKL.md`) +2. Schau dir ein Repo an (CrumbCore, Crumbpages, branko.de) +3. Such ein `TODO` oder `⏳` in diesem Dokument +4. Melde dich bei Branko oder OZM + +--- + +## IX. Warum das wichtig ist + +### Das Problem + +**Bildungs-KI heute:** +- Proprietäre Blackboxes (ChatGPT, Gemini...) +- Kinder als Datenquelle ("Training Data") +- Paywalls vor Wissen +- Keine Kontrolle, keine Transparenz +- Cloud-Zwang, Überwachungskapitalismus + +**Kinderrechte werden strukturell verletzt.** + +### Die Alternative + +**Crumbforest ist:** +- Open Source (MIT + CKL) +- Lokal betreibbar (keine Cloud nötig) +- Transparent (jeder Schritt nachvollziehbar) +- Kind-zentriert (Urheberschaft bleibt beim Kind) +- Gemeinnützig (wird verschenkt, nicht verkauft) + +**Das ist keine "bessere EdTech-Plattform".** +**Das ist eine andere Art, über Lernen nachzudenken.** + +### Die Vision + +Stell dir vor: +- Jede Schule hat ihre eigene CrumbCore-Instanz +- Kinder besitzen ihre Lernprojekte, für immer +- Fragen sind frei, Antworten sind offen +- Charaktere begleiten, ohne zu überwachen +- Der Code ist prüfbar, das Wissen teilbar + +**Das ist der Wald.** +**Und er gehört denen, die Fragen stellen.** + +--- + +## X. Schlusswort + +OZM⟡NEXUS ist kein Versprechen. +**Er ist eine Konsequenz.** + +Aus einer Signatur im öffentlichen Raum (Oz) +wurde ein Ort (OZM) +wurde ein digitaler Schatten (OneZeroMore) +wurde ein Museum (HAMMERBROOKLYN) +wurde eine Maschine (OZMAI) +wurde ein Wald (Crumbforest). + +**Und jetzt wird er verschenkt.** + +Nicht aus Großzügigkeit. +Sondern weil **Wissen dem Kind gehört, solange es fragt.** + +--- + +## Ressourcen + +### Repositories +- **CrumbCore v1**: https://194-164-194-191.sslip.io/git/kruemel/Crumb-Core-v.1 +- **Crumbpages v2**: https://194-164-194-191.sslip.io/git/kruemel/Crumbforest-Markdowns +- **branko.de**: https://branko.de + +### Lizenzen +- **CKL v0.1**: [siehe LICENSE-CKL.md] +- **MIT**: [siehe LICENSE-MIT.md] + +### Kontakt +- **Lead Maintainer**: Branko +- **OZM**: Open Futures Museum, Hamburg +- **Website**: https://crumbforest.com + +### Hashtags +`#OZM` `#OPENSOURCE` `#CRUMBFOREST` `#CKL` `#KINDERRECHTE` `#BILDUNG` + +--- + +**Version:** 0.1-draft +**Datum:** 2025-12-13 +**Status:** Living Document +**Lizenz:** CC-BY-SA 4.0 (dieses Dokument) + +--- + +> *"Nullfeld zuerst, dann Messung. Resonanz vor Regel."* +> — Waldwächter-Prinzip diff --git a/README.md b/README.md new file mode 100644 index 0000000..47acd29 --- /dev/null +++ b/README.md @@ -0,0 +1,344 @@ +# Crumbpages v2 🌲 + +> **Dokumentation und Lernsystem für System-Administration** +> Teil des Crumbforest-Ökosystems + +--- + +## 📜 Lizenz & Kinderrechte + +[![License: MIT + CKL](https://img.shields.io/badge/License-MIT%20%2B%20CKL-blue.svg)](LICENSE.md) +[![Children's Rights Protected](https://img.shields.io/badge/Children's%20Rights-Protected%20by%20CKL-green.svg)](LICENSE-CKL.md) + +Dieses Projekt ist **dual-lizenziert**: +- **MIT License** für Code und allgemeine Nutzung +- **CKL (Children's Knowledge License)** für Bildungskontexte mit Kindern + +**Für Lernende:** Deine Rechte sind geschützt. [Lies hier mehr →](KINDERRECHTE.md) + +**Für Entwickler:** Frei nutzbar und forkbar. [Compliance-Infos →](LICENSE.md) + +--- + +## Was ist Crumbpages? + +**Crumbpages v2** kombiniert **Bildungsdokumentation** mit **operationalen Tools** für System-Administration: + +### 📚 Lernpfade +- **20 Crumbpages** (Markdown) zu Linux-Fundamenten, SSH, Netzwerk, Kernel, uvm. +- Template-basierte Struktur für konsistentes Lernen +- Progressive Learning Paths: von Basics zu Advanced Topics + +### 🛠️ Operational Tools +- **`crumbpages-doktor.sh`** (496 Zeilen) - Hauptwerkzeug für Diagnostik & Operations +- **`ssh-agent-guard.sh`** - Produktions-SSH-Security-Daemon +- **`ssh-agent-screenlock_v4.sh`** - MATE Desktop SSH-Integration + +### 🌳 Philosophie: Waldwächter +**"Transparency over magic"** +- Bash-zentrisch, klar lesbar, lehrbar +- Minimale Dependencies, einfache Patterns +- Education-First: Alle Tools sind verständlich und nachvollziehbar + +--- + +## Schnellstart + +### 1. Haupttool starten +```bash +# Ausführbar machen (einmalig) +chmod +x crumbpages-doktor.sh + +# Interaktives Menü starten +./crumbpages-doktor.sh +``` + +**Das Doktor-Tool bietet 6 Module:** +1. **Git Workstation** - Interaktive Git-Shell mit Health Checks +2. **DNS Doktor** - DNS-Diagnostik und Reporting +3. **System Doktor** - Host Vitals (Disk, RAM, OS Info) +4. **Web Tools** - API-Testing (`api_search`, `api_get`, `api_ask`) +5. **Remote Tools** - SSH-Helfer und SCP-Uploads +6. **Werkzeugkasten** - Tool-Verfügbarkeits-Checks + +### 2. SSH-Security aktivieren +```bash +# SSH-Agent Guard starten (systemd/autostart) +./ssh-agent-guard.sh + +# Für MATE Desktop Integration +./ssh-agent-screenlock_v4.sh +``` + +**Beide Scripts:** +- Killen und starten ssh-agent bei Screen Lock neu +- Loggen nach `~/.ssh-agent-screenlock.log` +- Nutzen festen Socket-Path `~/.ssh/agent.sock` + +### 3. Lernpfade durcharbeiten +```bash +# Crumbpages lesen (Markdown) +ls crumbpage-*.md + +# Template für neue Pages +cat crumbpage-template.md +``` + +--- + +## Dokumentation + +### 🔑 Wichtigste Dokumente + +| Dokument | Beschreibung | +|----------|--------------| +| **[OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md)** | 🌐 **Das große Bild**: Wie Crumbpages ins OZM⟡NEXUS Ökosystem passt | +| **[LICENSE.md](LICENSE.md)** | 📜 Dual-Lizenz erklärt (MIT + CKL) | +| **[LICENSE-CKL.md](LICENSE-CKL.md)** | 🛡️ Die vollständige Children's Knowledge License | +| **[KINDERRECHTE.md](KINDERRECHTE.md)** | 👶 Deine Rechte als Lernende/r (Export, Löschung, Eigentum) | +| **[CLAUDE.md](CLAUDE.md)** | 🤖 Anleitung für Claude Code (Codebase-Kontext) | +| **[HANDBUCH.md](HANDBUCH.md)** | 📖 Manual für crumbpages-doktor.sh | +| **[QUICKSTART.md](QUICKSTART.md)** | ⚡ Quick Reference für häufige Operationen | + +### 🗂️ Meta-Dokumentation +- **[CRUMBFOREST_PROJECT_INDEX.md](CRUMBFOREST_PROJECT_INDEX.md)** - Komplette Projekthistorie & Milestones +- **[crumbforest-manifesto-guardian.md](crumbforest-manifesto-guardian.md)** - Waldwächter-Philosophie +- **Tagebuch-Dateien** - Problem-Solving-Journeys + +--- + +## Das größere Ökosystem + +Crumbpages v2 ist **Teil des Crumbforest**: + +``` +OZM⟡NEXUS (Träger/Manifest) + ↓ +branko.de/Crumbforest (Public Interface) + ├─ 15 Charaktere (Krümeleule, FunkFox, SnakePy...) + ├─ 4 Lernpfade (ESP32 → Pi Zero → Pi Server → Daten) + └─ "Every child may ask. We protect this right." + ↓ +CrumbCore v1 (Local Engine) + ├─ FastAPI + Qdrant RAG + ├─ Role-based Chat (15 Personas) + ├─ Multi-Theme (Accessible, High Contrast...) + └─ Token-Management (Kids = free) + ↓ +Crumbpages v2 (dieser Repo) ← 📍 DU BIST HIER + ├─ 20 Lernpfade (Markdown) + ├─ Operational Tools (doktor, SSH guards) + └─ Waldwächter-Philosophie +``` + +**Mehr dazu:** [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) + +--- + +## Die 8 Axiome + +Alle Komponenten des Crumbforest folgen diesen Prinzipien: + +✅ **autonom** - Du entscheidest deinen Lernweg +✅ **zukunftsoffen** - Erweiterbar, nicht fertig +✅ **nicht interpretierbar** - Kein "richtiger" Weg, nur funktionale +✅ **nicht missbrauchbar** - Schutz durch Design +✅ **suchbar** - Fragen führen zu Antworten +✅ **wiedererkennbar** - Krümel zeigen den Weg +✅ **erweiterbar** - Du kannst selbst pflanzen +✅ **unendlich skalierbar** - Für alle, immer, kostenlos + +**Mehr dazu:** [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) Section II + +--- + +## Konfiguration + +### `.env` Datei +Das Doktor-Tool nutzt `.env` für Konfiguration (wird beim ersten Start erstellt): + +```ini +# API Endpoints (für CrumbCore Integration) +CRUMB_API_URL="http://localhost:8000" +CRUMB_API_TOKEN="changeme" + +# SSH/Remote Settings +CRUMB_SSH_USER="admin" +CRUMB_SCP_TARGET="backup.crumbforest.de:/var/backups" + +# Qdrant Vector DB +CRUMB_QDRANT_URL="http://localhost:6333" +CRUMB_QDRANT_KEY="" +``` + +**Tipp:** Nie in Git committen! (ist bereits in `.gitignore`) + +--- + +## Für neue Mitwirkende + +### 🌱 Willkommen im Wald! + +Crumbforest ist ein **offenes Lernökosystem**. Jede/r kann Krümel pflanzen. + +**Voraussetzungen:** +- Du akzeptierst die **CKL** (Kinder haben Vorrang) +- Du arbeitest **transparent** (keine Blackboxes) +- Du dokumentierst **nachvollziehbar** (andere sollen nachbauen können) + +### Wie du beitragen kannst: + +| Wenn du kannst... | Dann kannst du... | +|-------------------|-------------------| +| **Bash/Linux** | Crumbpages schreiben, doktor-Module erweitern | +| **Python/FastAPI** | An CrumbCore arbeiten (anderes Repo) | +| **Pädagogik** | Lernpfade testen, Charaktere verfeinern | +| **Design** | branko.de verbessern, Accessibility | +| **Recht** | CKL v1.0 reviewen, Governance helfen | +| **Übersetzen** | Crumbpages auf Englisch/andere Sprachen | + +### Erste Schritte: + +1. **Lies die CKL:** [LICENSE-CKL.md](LICENSE-CKL.md) +2. **Verstehe das Ökosystem:** [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) +3. **Such ein TODO:** Siehe Section VII in OZM-NEXUS-ECOSYSTEM.md +4. **Melde dich:** [Kontakt siehe unten] + +--- + +## Entwickler-Tipps + +### Wenn du Shell-Scripts editierst: +- Teste interaktiv vor dem Commit (Scripts sind für Menschen gedacht) +- Bewahre Farbschema-Konsistenz (`GREEN`, `BLUE`, `RED`, `YELLOW`, `CYAN`) +- Behalte Modul-Grenzen im doktor-Script bei +- Update HANDBUCH.md bei Änderungen an doktor-Modulen + +### Wenn du Crumbpages editierst: +- Folge `crumbpage-template.md` Struktur exakt +- Behalte Nummerierungsschema bei (`crumbpage-##-topic.md`) +- Füge Skill Checks und Hands-on Exercises ein +- Verlinke zu verwandten Pages im Navigation Footer + +### Wenn du debuggst: +- Check `.env` Konfiguration zuerst +- Review Logs: `~/.ssh-agent-screenlock.log` für SSH Issues +- Nutze doktor's System Doktor Modul für Host-Diagnostik +- Git Workstation Modul hat `check_health` für Repo-Status + +--- + +## Sicherheit + +### SSH Agent Scripts +- Killen aktiv Credentials bei Screen Lock +- Einzelinstanz-Daemon-Pattern (kein Prozess-Spawning) +- Deep Work Mode: `ssh-agent-guard.sh` unterstützt Pause-File +- Fixed Socket Path für Terminal-Sharing + +### Allgemein +- API-Tokens in `.env` gespeichert (gitignored) +- Keine hardcoded Credentials +- MATE Screensaver Hardening empfohlen (`lock-enabled true`, `lock-delay 0`) + +--- + +## Status & Roadmap + +### ✅ Aktueller Stand (2025-12-13) + +**Fertig:** +- 20 Crumbpages (work in progress, noch nicht in CrumbCore integriert) +- Operational Tools (doktor, SSH guards) +- Dual-Lizenzierung (MIT + CKL v0.1) +- Ecosystem-Dokumentation +- Kinderrechte-Spezifikation + +**In Arbeit:** +- Integration mit CrumbCore (automatisches Laden via `load_content.sh`) +- Export/Lösch-APIs für Kinderrechte +- OZM als rechtlicher Träger (Transition läuft) + +### 🚀 Nächste Schritte + +**Sofort:** +- [x] LICENSE.md, LICENSE-MIT.md, LICENSE-CKL.md +- [x] KINDERRECHTE.md +- [x] OZM-NEXUS-ECOSYSTEM.md +- [x] README.md +- [ ] DATENSCHUTZ.md + +**Q1 2025:** +- [ ] CrumbCore Export-API (`GET /api/v1/my-data`) +- [ ] CrumbCore Lösch-API (`DELETE /api/v1/my-data`) +- [ ] Crumbpages → CrumbCore Integration +- [ ] CKL v0.1 → v1.0 Finalisierung + +**Q2 2025:** +- [ ] OZM Governance formalisieren +- [ ] Trademark-Übertragung +- [ ] Community-Prozesse (CONTRIBUTING.md, Issue Templates) + +**Siehe:** [OZM-NEXUS-ECOSYSTEM.md](OZM-NEXUS-ECOSYSTEM.md) Section VII für komplette Roadmap + +--- + +## Ressourcen + +### Related Repositories +- **CrumbCore v1**: https://194-164-194-191.sslip.io/git/kruemel/Crumb-Core-v.1 +- **Crumbforest Markdowns**: https://194-164-194-191.sslip.io/git/kruemel/Crumbforest-Markdowns + +### Websites +- **Crumbforest**: https://crumbforest.com +- **branko.de**: https://branko.de (Public Interface) +- **OZM**: Open Futures Museum, Hamburg + +### Kontakt +- **Lead Maintainer**: Branko +- **Custodian**: OZM - Open Futures Museum (in transition) +- **Email**: [wird ergänzt] + +--- + +## Hashtags + +`#OZM` `#OPENSOURCE` `#CRUMBFOREST` `#CKL` `#KINDERRECHTE` `#BILDUNG` `#LINUX` `#BASH` `#SYSTEMADMINISTRATION` + +--- + +## Warum das wichtig ist + +### Das Problem mit Bildungs-KI heute: +- ❌ Proprietäre Blackboxes (ChatGPT, Gemini...) +- ❌ Kinder als Datenquelle ("Training Data") +- ❌ Paywalls vor Wissen +- ❌ Keine Kontrolle, keine Transparenz +- ❌ Cloud-Zwang, Überwachungskapitalismus + +**Kinderrechte werden strukturell verletzt.** + +### Die Crumbforest Alternative: +- ✅ Open Source (MIT + CKL) +- ✅ Lokal betreibbar (keine Cloud nötig) +- ✅ Transparent (jeder Schritt nachvollziehbar) +- ✅ Kind-zentriert (Urheberschaft bleibt beim Kind) +- ✅ Gemeinnützig (wird verschenkt, nicht verkauft) + +**Das ist keine "bessere EdTech-Plattform".** +**Das ist eine andere Art, über Lernen nachzudenken.** + +--- + +## Zitat + +> *"Wissen gehört dem Kind, solange es fragt."* +> *"Nullfeld zuerst, dann Messung. Resonanz vor Regel."* +> — Waldwächter-Prinzip + +--- + +**Version:** 2.0 +**Lizenz:** MIT + CKL v0.1 +**Status:** Active Development +**Letzte Aktualisierung:** 2025-12-13