From 6a3569011a5e9150f1b106a0489df1297a00c5c6 Mon Sep 17 00:00:00 2001 From: Ben_Kosytorz Date: Thu, 24 Sep 2026 12:51:49 +0200 Subject: [PATCH] Rename project to SpiderNet, Obsidian-style linked docs, license overview --- AGENTS.md | 4 +- documentation/Home.md | 45 ++++++++++++++++++++ documentation/README.md | 20 ++++----- documentation/ethos.md | 26 +++++++----- documentation/ideen/architektur.md | 66 ++++++++++++++++-------------- documentation/ideen/idee.md | 27 ++++++++---- documentation/ideen/lizenz.md | 62 ++++++++++++++++++++++++++++ documentation/ideen/recht.md | 4 +- documentation/ideen/roadmap.md | 16 ++++---- scripts/bootstrap-gitea.sh | 4 +- server/README.md | 27 ++++++------ 11 files changed, 213 insertions(+), 88 deletions(-) create mode 100644 documentation/Home.md create mode 100644 documentation/ideen/lizenz.md diff --git a/AGENTS.md b/AGENTS.md index cd06839..fef6758 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,4 +1,4 @@ -# AGENTS.md — Anarcho-Kommunistisches Internet +# AGENTS.md — SpiderNet > Arbeitsanweisungen und Ziele für Coding-Agents und Contributor:innen. > Lies diese Datei zuerst, bevor du etwas am Projekt änderst. @@ -46,7 +46,7 @@ Das Projekt besteht aus zwei Hälften: ## Git / Gitea -- Remote: `https://git.dieterunterstrich.de//anarcho-kommunistisches-internet.git` +- Remote: `https://git.dieterunterstrich.de//spidernet.git` - Branch: `main` - Credentials liegen im credential-helper `store` — niemals ausgeben oder committen - Repo-Setup: `scripts/bootstrap-gitea.sh` (erzeugt das Repo via Gitea-API und pusht) diff --git a/documentation/Home.md b/documentation/Home.md new file mode 100644 index 0000000..3b094ae --- /dev/null +++ b/documentation/Home.md @@ -0,0 +1,45 @@ +# SpiderNet — Startseite (Obsidian) + +> Für Obsidian: Ordner `documentation/` (oder das ganze Repo) als Vault +> öffnen; diese Notiz ist der Einstieg. Alle Verbindungen laufen über +> `[[Wikilinks]]`. + +## Projekt + +**SpiderNet** — ein Nachbarschaftsnetz: Häuser werden per Glasfaser +(neben den bestehenden Internetanschlüssen, Ziel 10 Gbit/s) direkt +verbunden. Die Bandbreite aller Anschlüsse wird gepoolt, sodass jeder +Haushalt vom gesamten Netz profitiert. + +## Navigation + +| Notiz | Worum es geht | +|---|---| +| [[Ethos]] | Werte: Gemeingut, Fairness, Leechen erlaubt, legale Basis | +| [[Idee]] | Kernidee + ehrlicher Realitätscheck | +| [[Architektur]] | Schichten: Physik → Routing → Pooling → Freenet-Inhalte | +| [[Recht]] | Deutsche Rechtslage + Pflichtregeln für die Software | +| [[Lizenz]] | Lizenz-Optionen (Code & Doku) | +| [[Roadmap]] | Phasen: Pilot → MVP → Rollout → Freenet → Backbone | +| [[Server-README|Server-Konzept]] | Software-Komponenten, Code-Standards | + +## Lesereihenfolge zum Einstieg + +1. [[Idee]] — was wollen wir eigentlich +2. [[Ethos]] — welche Regeln geben uns vor +3. [[Architektur]] — wie bauen wir es technisch +4. [[Recht]] — was können wir (nicht) tun +5. [[Roadmap]] — wie kommen wir dahin + +## Querverbindungen zwischen den Notizen + +- [[Ethos]] §2 (Fairness/Leechen) ↔ [[Architektur]] (Leech-Modus, `sn-fair`) +- [[Recht]] §5 (Pflichtregeln) ↔ [[Server-README]] (Haftungsausschluss) +- [[Idee]] (Realitätscheck) ↔ [[Architektur]] (10G-Faser, `sn-fetch`) +- [[Lizenz]] ↔ [[Ethos]] §6 (Transparenz) und `freenet-core` (AGPL) + +## Außerhalb der Doku + +- [[Server-README]] — Software-Konzept in `server/` +- `AGENTS.md` — Arbeitsregeln für Coding-Agents +- `scripts/bootstrap-gitea.sh` — Repo-Setup diff --git a/documentation/README.md b/documentation/README.md index 5dba84a..931ec9c 100644 --- a/documentation/README.md +++ b/documentation/README.md @@ -1,17 +1,17 @@ -# Dokumentation — Anarcho-Kommunistisches Internet +# SpiderNet — Dokumentation Ein Nachbarschaftsnetz aus Glasfaser, in dem sich alle Haushalte ihre Internetbandbreite teilen: **vom Internetanschluss zum Gemeingut.** -## Inhaltsverzeichnis +## Inhaltsverzeichnis (Obsidian-Map of Content) -| Datei | Inhalt | -|---|---| -| [ethos.md](ethos.md) | Werte, Prinzipien und "Hausregeln" des Netzes | -| [ideen/idee.md](ideen/idee.md) | Die Kernidee und ein ehrlicher Realitätscheck | -| [ideen/architektur.md](ideen/architektur.md) | Technische Architektur (Physik → Routing → Pooling → Inhalt) | -| [ideen/recht.md](ideen/recht.md) | Rechtslage in Deutschland (Störerhaftung, Abmahnrisiko, Verkabelung) | -| [ideen/roadmap.md](ideen/roadmap.md) | Phasenplan vom Pilot bis zum Nachbarschafts-Backbone | +- [[Ethos]] — Werte, Prinzipien und "Hausregeln" des Netzes +- [[Idee]] — Die Kernidee und ein ehrlicher Realitätscheck +- [[Architektur]] — Technische Architektur (Physik → Routing → Pooling → Inhalt) +- [[Recht]] — Rechtslage in Deutschland (Störerhaftung, Abmahnrisiko, Verkabelung) +- [[Lizenz]] — Lizenz-Optionen und Empfehlung +- [[Roadmap]] — Phasenplan vom Pilot bis zum Nachbarschafts-Backbone +- [[Server-README|Server-Konzept]] — geplante Software (`sn-node`, `sn-fetch`, …) ## Die Idee in einem Satz @@ -24,7 +24,7 @@ ist — ohne Mehrkosten und mit besserer Versorgung schwacher Haushalte. Konzeptphase. Die Software in `server/` ist noch nicht implementiert; der erste Meilenstein ist ein PoC "segmentierter Download über zwei Haushalte" -(siehe [Roadmap](ideen/roadmap.md)). +(siehe [[Roadmap]]). ## Verwandte Projekte (Prior Art) diff --git a/documentation/ethos.md b/documentation/ethos.md index c484ee9..0010978 100644 --- a/documentation/ethos.md +++ b/documentation/ethos.md @@ -10,20 +10,19 @@ gemeinsam und wird geteilt, nicht verkauft. Bandbreite ist ein **Commons**: Niemand erwirbt mehr Rechte, indem er mehr bezahlt oder mehr Hardware hat. Anders als z. B. [Althea](https://www.althea.net/) (Mikrozahlungen pro weitergeleitetem Paket) wollen wir bewusst **keine Bezahlung** im Kern — -der Fairness-Scheduler (siehe Architektur) ist unsere Währung. +der Fairness-Scheduler (siehe [[Architektur]]) ist unsere Währung. ## 2. Fairness als Algorithmus, nicht als Gnade Jeder Haushalt bekommt standardmäßig einen gleichberechtigten, fairen Anteil (max-min Fairness). Stärkere Anschlüsse teilen freiwillig — genau das ist der -"anarcho-kommunistische" Kern: voneinander abhängig, freiwillig, ohne Zwang -und ohne Markt. +Kern: voneinander abhängig, freiwillig, ohne Zwang und ohne Markt. **Leechen ist erlaubt.** Wer nichts beiträgt (kein Exit, kein Cache, keine Faser), darf trotzdem empfangen — Nachbarschaftskultur ist Nachsicht, nicht Gegenleistungszwang. Der Scheduler behandelt "Leeched" als niedrigste Priorität bei Knappheit, aber nie als Strafe. Es gibt keine Bezahlung und -keine Pflicht zum Mitmachen; Andenken an Fairness ist Sache des Viertels, +keine Pflicht zum Mitmachen; Erinnerung an Fairness ist Sache des Viertels, nicht der Software. ## 3. Freiwilligkeit und Do-ocracy @@ -48,19 +47,22 @@ gezwungen werden, als Exit für andere zu dienen — Exit-Bereitschaft ist eine Ein Netz, dessen öffentliches Gesicht "Piraterie" ist, wird abgemahnt, zerlegt und diskreditiert — und zieht Risiko auf die schwächsten Teilnehmer -(siehe [recht.md](ideen/recht.md)). Deshalb: +(siehe [[Recht]]). Deshalb: - Das Netz wird als Infrastrukturprojekt betrieben (Zugang, Resilienz, Gemeingut), nicht als Tauschbörsen-Produkt. - Jede:r bleibt für das eigene Tun verantwortlich; das Netz dokumentiert, dass viele Menschen Zugang haben (schützt den Anschlussinhaber). -- Technisch kühles Denken ja, "Es ist legal, weil verteilt" — nein. +- Die Software transportiert Dateien/Webseiten aller Art und übernimmt dafür + **keinerlei Verantwortung** — was übertragen wird, liegt in der + Verantwortung der Nutzer:innen (Haftungsausschluss, siehe [[Server-README]]). ## 6. Transparenz und offene Technik -Alles ist offen: Code (AGPL-3.0), Doku, Pläne, auch die Fehler. Hardware -besteht möglichst aus Standardkomponenten (Mini-PC, SFP-Medienwandler, -Standard-Glasfaser), die alle reparieren und beschaffen können. +Alles ist offen: Code (Lizentscheidung, siehe [[Lizenz]]), Doku, Pläne, auch +die Fehler. Hardware besteht möglichst aus Standardkomponenten (Mini-PC, +SFP-Medienwandler, Standard-Glasfaser), die alle reparieren und beschaffen +können. ## 7. Resilienz und Selbsthilfe @@ -74,7 +76,9 @@ geteilt wie Bandbreite. Basierend auf dem [Pico Peering Agreement](https://picopeer.net/) halten wir fest: **Wer mitmacht, teilt. Wer teilt, wird geteilt.** Konkret: -1. Ich verbinde mein Haus mit dem Netz und lasse Traffic durch. +1. Ich verbinde mein Haus mit dem Netz und lasse Traffic durch (oder leech + ausdrücklich, siehe §2). 2. Ich benutze das Netz fair (Fair-Share). -3. Ich stelle nichts Unlawfuls bereit und verantwortet mein eigenes Handeln. +3. Ich verantwort mein eigenes Handeln — nicht das Netz, nicht die + Nachbarn, nicht die Software. 4. Konflikte werden im Viertel geklärt, nicht beim Anwalt. diff --git a/documentation/ideen/architektur.md b/documentation/ideen/architektur.md index 9409fd4..1b7a3c9 100644 --- a/documentation/ideen/architektur.md +++ b/documentation/ideen/architektur.md @@ -1,40 +1,47 @@ # Architektur -Von unten (Physik) nach oben (Inhalte). Der AKI-Node ist das Herzstück — -eine kleine Box im Wohnungsregal, die zu Hause sitzt und das Viertel verbindet. +Von unten (Physik) nach oben (Inhalte). Der SpiderNet-Node (`sn-node`) ist +das Herzstück — eine kleine Box im Wohnungsregal, die zu Hause sitzt und das +Viertel verbindet. ## Übersicht ```mermaid flowchart TD subgraph HausA[Haus A] - GA[Geräte A] --> NA[AKI-Node A] + GA[Geräte A] --> NA[sn-node A] end subgraph HausB[Haus B] - GB[Geräte B] --> NB[AKI-Node B] + GB[Geräte B] --> NB[sn-node B] end subgraph HausC[Haus C] - GC[Geräte C] --> NC[AKI-Node C] + GC[Geräte C] --> NC[sn-node C] end - NA <-->|"Glasfaser (bzw. Funk-Fallback)"| NB - NB <-->|"Glasfaser"| NC + NA <-->|"Glasfaser 10 Gbit/s"| NB + NB <-->|"Glasfaser 10 Gbit/s"| NC NA -->|"ISP-Uplink A"| WA((Internet)) NB -->|"ISP-Uplink B"| WA NC -->|"ISP-Uplink C"| WA ``` -Entscheidend: **jeder Haushalt behält seinen eigenen Uplink**. Es gibt keinen -zentralen Exit (anders als klassische Community-Meshes mit einem Supernode), -sondern viele — das verteilt nicht nur Last, sondern auch Risiko und Zensur- -Angriffsfläche. +Entscheidend: -## Schicht 0 — Physik (Nachbarschaftsglasfaser) +1. **Jeder Haushalt behält seinen eigenen Uplink.** Es gibt keinen zentralen + Exit (anders als klassische Community-Meshes mit einem Supernode), sondern + viele — das verteilt nicht nur Last, sondern auch Risiko und Zensur- + Angriffsfläche. +2. **Die Glasfaserverbindungen sind ein *zweites* Netz neben den + Internetanschlüssen** und sollen schnell sein (10 Gbit/s per SFP+/ + 10G-Optik). Damit ist das Viertelnetz nie der Engpass — der Engpass sind + die Uplinks selbst, und genau die werden gepoolt. -- **Bevorzugt:** Glasfaser Haus-zu-Haus (z. B. 2-Faser-Duplex G.657A2, LC- - Stecker), Medienwandler bzw. SFP-Port direkt im Node. Innenrohr entlang - der Fassade, kurze Gräben im Garten, Kabelkanal. +## Schicht 0 — Physik (Nachbarschaftsglasfaser, 10 Gbit/s) + +- **Ziel:** 10 Gbit/s Haus-zu-Haus. Glasfaser (2-Faser-Duplex G.657A2, LC) + mit **10G-Optik (SFP+)** direkt im Node — langfristig günstiger und + zukunftssicher; 1G-Medienwandler sind die Budget-Fallback-Option. - **Pragmatisch für den Start:** was da ist — existierendes LAN-Kabel im - Mehrfamilienhaus (bis 100 m), Richtfunk 60-GHz-PTP (5–15 Gbit/s, + Mehrfamilienhaus (bis 100 m), Richtfunk 60-GHz-PTP (mehrere Gbit/s, Sichtlinie nötig) als Überbrückung. - **Topologie:** anfangs Stern/Ring (2–5 Häuser), später vermascht. Jede Faser ist ein separates Link; Redundanz schlägt Eleganz. @@ -45,13 +52,12 @@ Kandidaten (Auswahl offen, Kriterium: simpel, wartbar, verschlüsselt): | Kandidat | Pro | Con | |---|---|---| -| **Yggdrasil** | Out-of-the-box e2e-verschlüsseltes IPv6-Overlay, null Konfiguration, self-contained | experimentell, Performance über wenige Gbit/s hinaus | +| **Yggdrasil** (gewählt) | Out-of-the-box e2e-verschlüsseltes IPv6-Overlay, null Konfiguration, self-contained | experimentell, Performance-Grenzen bei hohen Gbit/s | | Babel + WireGuard | bewährt (Althea-Ansatz), Router-Hardware tauglich | mehr Konfigurationsaufwand | | cjdns | Battle-tested in Hyperboria | ältere Codebasis | -Empfehlung für den PoC: **Yggdrasil**. Jeder AKI-Node peert über die -Glasfaser-Links mit seinen Nachbarn; Geräte der Haushalte hängen per NAT/ -Firewall getrennt dahinter (Home-LAN ≠ Mesh-LAN). +Jeder `sn-node` peert über die Glasfaser-Links mit seinen Nachbarn; Geräte +der Haushalte hängen per NAT/Firewall getrennt dahinter (Home-LAN ≠ Mesh-LAN). ## Schicht 2 — Bandbreiten-Pooling (der eigentliche Kern) @@ -74,7 +80,7 @@ Gegenseitigkeitszwang. Technisch gilt: - Der Status ist sichtbar (Karma/Anzeige), aber es gibt keine Strafe und keine Zwangsfreischaltung. -### Segmentierter Multi-Exit-Download (`aki-fetch`) +### Segmentierter Multi-Exit-Download (`sn-fetch`) ```mermaid sequenceDiagram @@ -97,7 +103,7 @@ sequenceDiagram Node-->>User: Datei (Hash-verifiziert, reassembliert) ``` -- HTTP Range Splits + Shadow-Verifizierung (Content-Hash) +- HTTP Range Splits + Segment-Verifizierung (Content-Hash) - Fallback: entfällt ein Exit, übernimmt ein anderer das Segment - Für nicht-rangefähige Quellen: klassische Proxy-Rotation @@ -108,17 +114,15 @@ gewählten Exit, Exit-Wahl rotiert; Browsing/Video-Calls laufen über einen Exit, große Transfers über alle. Video-Calls werden explizit auf einen Exit gepinnt (kein Splitting). -### Fairness-Scheduler (`aki-fair`) +### Fairness-Scheduler (`sn-fair`) - Max-min Fairness über alle aktiven Nutzer:innen des Netzes - Exit-Kontingente (Volumenlimit, Wartungszeit) werden respektiert -- Karma statt Bezahlung: wer dauerhaft deutlich mehr zieht als er gibt, - wird fair angesprochen (Drosselung als letztes Mittel, nie als Strafe - für Berechtigte mit Bedarf) +- Leech-Nodes: niedrigste Priorität bei Knappheit, nie ausgeschlossen -### Nachbarschafts-Cache (`aki-cache`) +### Nachbarschafts-Cache (`sn-cache`) -- Transparenter Shared-Cache (lancache-Prinzip): große, popluläre Objekte +- Transparenter Shared-Cache (lancache-Prinzip): große, populäre Objekte (Steam, Konsolen-Updates, OS-Images, Software-Pakete) kommen aus dem Viertel statt aus dem Internet - DNS-basiert, pro Haushalt kleine Cache-Slots; gemeinsam sind sie groß @@ -132,7 +136,7 @@ Exit gepinnt (kein Splitting). - Freenet ist **keine Anonymitätslösung** (siehe FAQ) und wird auch nicht als solche beworben. - Unsere Software nutzt Freenet über `freenet-stdlib` bzw. die - WebSocket-API (nicht-derivativ), unsere eigene Codebasis bleibt AGPL-3.0. + WebSocket-API (nicht-derivativ); die Lizenzwahl steht in [[Lizenz]]. ## Sicherheit und Vertrauen @@ -142,12 +146,12 @@ Exit gepinnt (kein Splitting). Teilnehmer (Client-Isolation). - Kill-Switch: jeder Haushalt kann seine Faser physisch/softwareseitig abklemmen; der Node fällt auf "nur eigener Anschluss" zurück. -- Minimale Logs (DSGVO, siehe [recht.md](recht.md)). +- Minimale Logs (DSGVO, siehe [[Recht]]). ## Offene Fragen - DSLite/Carrier-NAT-Haushalte: Synchrone Exits gehen, aber Konfigurationsaufwand pro Router-Modell prüfen. - ISP-AGB: Weitergabe an "Dritte" kann verboten sein (per ISP prüfen, - siehe recht.md). + siehe [[Recht]]). - Wie viel Cache lohnt sich real bei 3–10 Haushalten? (Messung in Phase 2) diff --git a/documentation/ideen/idee.md b/documentation/ideen/idee.md index d8e0470..42e90bc 100644 --- a/documentation/ideen/idee.md +++ b/documentation/ideen/idee.md @@ -1,4 +1,4 @@ -# Die Kernidee — und ein ehrlicher Realitätscheck +# Idee — und ein ehrlicher Realitätscheck ## Ursprungsidee @@ -9,6 +9,11 @@ > kostet. Schwache Haushalte werden gestärkt. Nebenbei wird Traffic verteilt > und ist für Außenstehende schwerer zuzuordnen (Privacy). +Wichtiger Punkt (bewusst gehalten): Die Glasfaserverbindungen zwischen den +Häusern laufen **neben** den normalen ISP-Anschlüssen — das Nachbarschaftsnetz +ist ein *zweites*, schnelles (Ziel: 10 Gbit/s) lokales Netz, nicht ein Ersatz +für die Internetanschlüsse. + Diese Idee ist gut — und sie ist nicht abstrakt: NYC Mesh läuft genau so ("members share their internet"), Freifunk und guifi.net zeigen es in großem Maßstab. Was hier neu gedacht ist, ist der **konsequente Exit-Jede** @@ -19,9 +24,11 @@ verlassen das Viertel an *allen* Punkten gleichzeitig. 1. **Segmentierte Downloads über mehrere Exits.** Große Dateien werden in Byte-Bereiche gesplittet (HTTP Range Requests) und parallel über die - Glasfaseranschlüsse mehrerer Haushalte geladen. Das ist Multi-WAN- - Aggregation, nur verteilt über das Viertel. Ein DSL-50000-Haushalt kann - damit realistisch 5× herunterladen, wenn 4 Nachbarn mitspielen. + Internetanschlüsse mehrerer Haushalte geladen. Ein DSL-50000-Haushalt + kann damit realistisch 5× herunterladen, wenn 4 Nachbarn mitspielen. + Das geht, weil die Haus-zu-Haus-Verbindungen selbst schnell sein + sollen (10 Gbit/s) — die Faser im Viertel ist nie der Engpass, die + Uplinks sind es. 2. **Fair-Share-Scheduling.** Wer gerade nichts lädt, gibt seinen Anteil automatisch. Ein einzelner Stream profitiert von fremder Kapazität, mehrere Lade gleichzeitig bekommen faire Anteile. @@ -49,22 +56,24 @@ verlassen das Viertel an *allen* Punkten gleichzeitig. 3. **Physik ist der eigentliche Engpass.** Glasfaser spannen heißt: Genehmigungen, Vermieter, Grundstücke, Arbeit. Realistisch beginnt man mit dem, was da ist (Kabel im Mehrfamilienhaus, Garten, kurze Richtfunkstrecken), und - baut Glasfaser dort, wo ohnehin gegraben wird (siehe Recht). + baut Glasfaser dort, wo ohnehin gegraben wird (siehe [[Recht]]). 4. **Volumen-/Drosseltarife.** Wer ein Volumenlimit hat, zahlt mit Volumen, wenn Nachbarn über seinen Exit laden. Lösung: Exits haben harte Kontingente - und der Scheduler respektiert sie ("Exit-Karenz"), plus Karma. + und der Scheduler respektiert sie ("Exit-Karenz"), plus Karma. Für diese + (seltene) Fälle gibt es zusätzlich den **Leech-Modus**: Sharing komplett + aus, nur empfangen — unter Nachbarn legitim (siehe [[Ethos]] §2). 5. **Privacy ist ein Nebenprodukt, keine Anonymität.** Freenet sagt es selbst (FAQ): keine Anonymität wie Tor/I2P. Metadaten bleiben. Wer echte Anonymität will, legt Tor/I2P über das Netz. Wir verkaufen deshalb Privacy-by-Design, nicht Anonymität. 6. **Recht.** Abmahnungen landen zuerst beim Anschlussinhaber, egal wer geladen hat; bewusstes Ermöglichen von Rechtsbrüchen kann eigene Haftung - erzeugen. Details und Gegenmaßnahmen: [recht.md](recht.md). + erzeugen. Details und Gegenmaßnahmen: [[Recht]]. ## Der technische Kern (warum es Software braucht) Das Netz ohne Software ist "nur" ein LAN. Die Mehrwerte entstehen durch -einen **AKI-Node** pro Haushalt, der folgendes macht: +einen **SpiderNet-Node** pro Haushalt, der folgendes macht: - Overlay-Routing über alle Haushalte (Kandidat: Yggdrasil) - Exit-Pool verwalten: Wer darf über wen raus, mit welchem Kontingent @@ -73,4 +82,4 @@ einen **AKI-Node** pro Haushalt, der folgendes macht: - Transparenten Nachbarschafts-Cache - (Später) Freenet als Inhalts- und App-Ebene im Viertel -Siehe [architektur.md](architektur.md) und [server/README.md](../../server/README.md). +Siehe [[Architektur]] und [[Server-README]]. diff --git a/documentation/ideen/lizenz.md b/documentation/ideen/lizenz.md new file mode 100644 index 0000000..28eba9c --- /dev/null +++ b/documentation/ideen/lizenz.md @@ -0,0 +1,62 @@ +# Lizenz — Optionen und Empfehlung + +Damit wir uns festlegen können. Stand: September 2026. + +## Wichtigster Rahmen + +- Die Software wird **ohne jegliche Garantie** bereitgestellt — AGPL GPLv3- + -artige Lizenzen enthalten §§ 15/16 (No Warranty, Limitation of Liability) + bereits; permissive Lizenzen brauchen das Disclaimer-Klauseln separat + (Apache-2.0 hat es eingebaut, MIT/BSD nur minimal). +- Ethos: Code soll **Commons bleiben** — auch Forks sollen gezwungen sein, + offen zu bleiben, sonst kann das Nachbarschaftsprojekt abgespaltet und + geschlossen weiterverkauft werden. + +## Code-Lizenz-Optionen + +| Lizenz | Copyleft | Netz-Klausel | Passt zum Ethos? | Risiko für Nachbarschafts-Projekt | +|---|---|---|---|---| +| **AGPL-3.0** | stark | **ja** (§13 Remote-Network-Interaction) | **sehr gut** | Forks bleiben offen, "as a service"-Nutzung gezwungen offenzulegen; scare-off für kommerzielle Interessenten — gewollt | +| GPL-3.0 | stark | nein | gut | fork-protect, aber wer es nur *innerhalb eines eigenen Netzes* anbietet, muss nichts freigeben | +| LGPL-3.0 | schwach (nur Library-Boundary) | nein | mittel | geschlossen Forks leicht möglich | +| MPL-2.0 | mittel (datei-level) | nein | mittel | gut für "Firmen-freundlich"-Wunsch; aber Forks können proprietär um Dateien herumgebaut werden | +| EUPL-1.2 | stark | optional (Art. 13) | gut | kompatibel zu GPL via Abs. 6; wenig verbreitet, Komplexität | +| Apache-2.0 | keiner | nein | schlecht (ethisch) | Klon kann geschlossen werden — passt nicht zu "Gemeingut" | +| MIT / BSD | keiner | nein | schlecht | identisches Risiko, minimaler Disclaimer | + +### Empfehlung + +**AGPL-3.0 für alle Code-Crates in `server/`** (Status quo im Repo). Gründe: + +1. Spiegelbild zum Ethos: das Netz ist Commons, der Code auch. +2. **§13 verlangt Offenlegung bei Netzwerk-Nutzung** — unsere Software *ist* + ein Netzwerkdienst; wer eine eigene SpiderNet-Node-Variante betreibt, + muss den Quellcode anbieten. +3. `freenet-core` ist AGPL-3.0 — gleiche Lizenzfamilie macht Integration + einfach, falls wir mal direkt gegen die Core-API bauen statt nur über + `freenet-stdlib`/WebSocket. +4. AGPL ist nicht für Doku/Daten relevant; Code-Repo bleibt trotzdem sauber + (Lizenz-Matching für Developer-Komfort). + +## Doku-Lizenz-Optionen + +Doku (dieses Verzeichnis) kann separat lizenziert werden: + +| Lizenz | Charakter | Empfehlung | +|---|---|---| +| **CC-BY-SA-4.0** | teilen-als-gleiche, Namensnennung | gut, wenn Doku auch Commons bleiben soll | +| CC-BY-4.0 | Namensnennung, Weitergabe frei | ok, wer Forks der Doku nicht gleich erzwingen will | +| CC0-1.0 | public-domain-artig | im Widerspruch zum Ethos | +| gleich mit Code (AGPL) | geht auch, ist aber unüblich für Doku | n/a | + +### Empfehlung + +**CC-BY-SA-4.0 für `documentation/`** — sauber getrennt vom Code, passt +zum "Wissen wird geteilt wie Bandbreite"-Ethos (Ethos §7). + +## Was noch offen bleibt + +- [ ] Entscheidung: Code AGPL-3.0 bestätigen +- [ ] Entscheidung: Doku CC-BY-SA-4.0 +- [ ] `LICENSE`-Dateien: Code-`LICENSE` (AGPL, schon da) + `documentation/LICENSE` (CC-BY-SA) und Lizenz-Hinweis in jedem Dateikopf? (AGPL: Hinweis pro Crate reicht; Dateikopf optional) +- [ ] Nebenlizenzen von Dependencies (cargo-deny, sobald Cargo-Projekt existiert) diff --git a/documentation/ideen/recht.md b/documentation/ideen/recht.md index 2c75df6..57c55f0 100644 --- a/documentation/ideen/recht.md +++ b/documentation/ideen/recht.md @@ -30,14 +30,14 @@ zu ermöglichen, kann als Teilnehmer/Beihelfer behandelt werden (Analogie: BGH zu Tor-Exit-Betreibern mit Vorbelastung). -### Was das für das AKI-Netz bedeutet +### Was das für das SpiderNet-Netz bedeutet 1. **Exit-Haushalt = Verantwortung bleibt beim Exit-Haushalt.** Wenn fremder Traffic über meinen Anschluss ins Internet geht, gilt: - Ich muss darlegen können, dass andere Zugang hatten → das Netz dokumentiert (lokal, nicht zentral!) die Teilnehmerschaft. - Bei Kenntnis einer konkreten Verletzung muss ich handeln können → - deshalb braucht der AKI-Node technische Wege, einzelne Nutzer/Segmente + deshalb braucht der SpiderNet-Node technische Wege, einzelne Nutzer/Segmente zu sperren, ohne das ganze Netz zu killen. 2. **Kein "Das ist ja verteilt, also legal."** Wer lädt, bleibt Täter — unabhängig davon, über welchen Exit. Verteilung ändert die Ermittlungs- diff --git a/documentation/ideen/roadmap.md b/documentation/ideen/roadmap.md index c1a0f86..05f72ea 100644 --- a/documentation/ideen/roadmap.md +++ b/documentation/ideen/roadmap.md @@ -15,9 +15,9 @@ endet mit etwas, das man benutzen kann. Ziel: Beweis, dass Pooling über zwei Anschlüsse real funktioniert. -- [ ] AKI-Node auf Mini-PC (Raspberry Pi / N100-Box), Yggdrasil-Overlay - zwischen 2 Haushalten (Kabel oder kurzstrecke WLAN/60-GHz) -- [ ] `aki-fetch` PoC: segmentierter Download (HTTP-Range-Splitting) über +- [ ] SpiderNet-Node auf Mini-PC (Raspberry Pi / N100-Box), Yggdrasil-Overlay + zwischen 2 Haushalten (Kabel oder Kurzstrecke WLAN/60-GHz) +- [ ] `sn-fetch` PoC: segmentierter Download (HTTP-Range-Splitting) über 2 Exits, plus Baseline-Messung (1-Exit vs. 2-Exit, gleiche Datei) - [ ] Fair-Share-Scheduler v0: zwei gleichzeitige Downloads, faire Aufteilung - [ ] Doku: Messwerte, Erkenntnisse, Stolpersteine → hier in das Repo @@ -26,11 +26,11 @@ Ziel: Beweis, dass Pooling über zwei Anschlüsse real funktioniert. Ziel: ein Paket, das 3–10 Haushalte installieren können. -- [ ] `aki-node` Daemon: Discovery, Peering, Metriken (per-Exit Bandbreite/ +- [ ] `sn-node` Daemon: Discovery, Peering, Metriken (per-Exit Bandbreite/ Latenz), Onboarding-Flow (QR/Knopfdruck) -- [ ] Exit-Pool: Kontingente, opt-in/opt-out, Kill-Switch -- [ ] `aki-fetch`: API + CLI + einfache Browser-Integration -- [ ] `aki-cache`: lancache-artiger transparenter Cache (DNS-basiert) +- [ ] Exit-Pool: Kontingente, opt-in/opt-out, Leech-Modus, Kill-Switch +- [ ] `sn-fetch`: API + CLI + einfache Browser-Integration +- [ ] `sn-cache`: lancache-artiger transparenter Cache (DNS-basiert) - [ ] Fairness-Scheduler v1 (max-min, Exit-Kontingente, Karma) - [ ] Telemetrie: keine zentrale Sammlung; lokale Metriken im Node @@ -53,4 +53,4 @@ Ziel: ein Paket, das 3–10 Haushalte installieren können. - [ ] Peering mit Freifunk-Clouds oder anderen Nachbarschaftsnetzen - [ ] Echtes Backbone: eigene Glasfaser in Straßen, ggf. IXP-Peering (langfristig, NYC-Mesh-Stil) -- [ ] Federated Viertel: mehrere AKI-Netze verbinden sich +- [ ] Federated Viertel: mehrere SpiderNet-Netze verbinden sich diff --git a/scripts/bootstrap-gitea.sh b/scripts/bootstrap-gitea.sh index 2f63450..03c4a0a 100755 --- a/scripts/bootstrap-gitea.sh +++ b/scripts/bootstrap-gitea.sh @@ -14,8 +14,8 @@ set -eu HOST="git.dieterunterstrich.de" -REPO_NAME="anarcho-kommunistisches-internet" -DESCRIPTION="Nachbarschafts-Netz: gepoolte Bandbreite, Gemeingut, Privacy by Design" +REPO_NAME="spidernet" +DESCRIPTION="SpiderNet: Nachbarschafts-Netz, gepoolte Bandbreite, Gemeingut, Privacy by Design" CRED_FILE="${HOME}/.git-credentials" command -v python3 >/dev/null 2>&1 || { echo "ERROR: python3 required" >&2; exit 1; } diff --git a/server/README.md b/server/README.md index c293140..e0ba2cc 100644 --- a/server/README.md +++ b/server/README.md @@ -1,4 +1,4 @@ -# AKI Node — Server/Software (Konzeptphase) +# SpiderNet-Node — Server/Software (Konzeptphase) Die Software, die aus "Nachbarschafts-LAN" ein gepooltes Bandbreitennetz macht. Sprache: **Rust**. Status: **Konzeptphase — noch nichts implementiert.** @@ -17,7 +17,8 @@ des Daemons und in der Weboberfläche. ## Zielbild -Pro Haushalt läuft ein AKI-Node (Mini-PC oder Einplatinenrechner), der: +Pro Haushalt läuft ein SpiderNet-Node (`sn-node`, Mini-PC oder +Einplatinenrechner), der: 1. Das Nachbarschafts-Overlay bildet (Yggdrasil als erste Wahl) 2. Seinen eigenen ISP-Uplink als **Exit** anbietet (opt-in, Kontingent) @@ -30,14 +31,14 @@ Pro Haushalt läuft ein AKI-Node (Mini-PC oder Einplatinenrechner), der: | Crate/Binary | Zweck | |---|---| -| `aki-node` | Daemon: Discovery, Peering, Metriken, Onboarding | -| `aki-exit` | Exit-Dienst: kontingentierter Uplink-Proxy für Nachbarn (verschlüsselt) | -| `aki-fetch` | Segmentierter Multi-Exit-Downloader (HTTP-API + CLI) | -| `aki-fair` | Fairness-Scheduler (max-min, Exit-Kontingente, Karma) | -| `aki-cache` | Transparenter Nachbarschafts-Cache (DNS-basiert) | -| `aki-freenet` | Integration von `freenet-core` (Contracts für Nachbarschafts-Inhalte) | +| `sn-node` | Daemon: Discovery, Peering, Metriken, Onboarding | +| `sn-exit` | Exit-Dienst: kontingentierter Uplink-Proxy für Nachbarn (verschlüsselt) | +| `sn-fetch` | Segmentierter Multi-Exit-Downloader (HTTP-API + CLI) | +| `sn-fair` | Fairness-Scheduler (max-min, Exit-Kontingente, Karma, Leech-Modus) | +| `sn-cache` | Transparenter Nachbarschafts-Cache (DNS-basiert) | +| `sn-freenet` | Integration von `freenet-core` (Contracts für Nachbarschafts-Inhalte) | -## MVP (Phase 2 der [Roadmap](../documentation/ideen/roadmap.md)) +## MVP (Phase 2 der [[Roadmap]]) Kleinster brauchbarer Schnitt: @@ -46,8 +47,9 @@ Kleinster brauchbarer Schnitt: gesplittet, reassembliert, hash-verifiziert 3. Fair-Share: zwei gleichzeitige Downloads teilen sich die Gesamt- kapazität fair -4. Exit opt-in per Konfig-Datei; Kill-Switch (Exit aus = Node nutzt nur - den eigenen Uplink) +4. Exit opt-in per Konfig-Datei; Leech-Modus (Sharing aus, nur empfangen) + jederzeit umschaltbar; Kill-Switch (Exit aus = Node nutzt nur den + eigenen Uplink) ## Nicht-Ziele (bewusst) @@ -93,5 +95,4 @@ unmöglich werden. Verbindliche Regeln für jede Crate in `server/`: - Yggdrasil als Overlay (später evtl. Babel + WireGuard) - `freenet-stdlib` / WebSocket-API für Freenet-Integration - HTTP Range Requests + SHA-256-Verifizierung für Segmentierung -- Lizenz: AGPL-3.0 (freenet-core ist AGPL-3.0; Nutzung über stdlib/API - erlaubt trotzdem freie Wahl — wir wählen aus Ethos-Gründen AGPL) +- Lizenz: siehe [[Lizenz]] (Empfehlung: AGPL-3.0)