Rename project to SpiderNet, Obsidian-style linked docs, license overview

This commit is contained in:
2026-09-24 12:51:49 +02:00
parent e4641d1e71
commit 6a3569011a
11 changed files with 213 additions and 88 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
# AGENTS.md — Anarcho-Kommunistisches Internet # AGENTS.md — SpiderNet
> Arbeitsanweisungen und Ziele für Coding-Agents und Contributor:innen. > Arbeitsanweisungen und Ziele für Coding-Agents und Contributor:innen.
> Lies diese Datei zuerst, bevor du etwas am Projekt änderst. > Lies diese Datei zuerst, bevor du etwas am Projekt änderst.
@@ -46,7 +46,7 @@ Das Projekt besteht aus zwei Hälften:
## Git / Gitea ## Git / Gitea
- Remote: `https://git.dieterunterstrich.de/<user>/anarcho-kommunistisches-internet.git` - Remote: `https://git.dieterunterstrich.de/<user>/spidernet.git`
- Branch: `main` - Branch: `main`
- Credentials liegen im credential-helper `store` — niemals ausgeben oder committen - Credentials liegen im credential-helper `store` — niemals ausgeben oder committen
- Repo-Setup: `scripts/bootstrap-gitea.sh` (erzeugt das Repo via Gitea-API und pusht) - Repo-Setup: `scripts/bootstrap-gitea.sh` (erzeugt das Repo via Gitea-API und pusht)
+45
View File
@@ -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
+10 -10
View File
@@ -1,17 +1,17 @@
# Dokumentation — Anarcho-Kommunistisches Internet # SpiderNet — Dokumentation
Ein Nachbarschaftsnetz aus Glasfaser, in dem sich alle Haushalte ihre Ein Nachbarschaftsnetz aus Glasfaser, in dem sich alle Haushalte ihre
Internetbandbreite teilen: **vom Internetanschluss zum Gemeingut.** Internetbandbreite teilen: **vom Internetanschluss zum Gemeingut.**
## Inhaltsverzeichnis ## Inhaltsverzeichnis (Obsidian-Map of Content)
| Datei | Inhalt | - [[Ethos]] — Werte, Prinzipien und "Hausregeln" des Netzes
|---|---| - [[Idee]] — Die Kernidee und ein ehrlicher Realitätscheck
| [ethos.md](ethos.md) | Werte, Prinzipien und "Hausregeln" des Netzes | - [[Architektur]] — Technische Architektur (Physik → Routing → Pooling → Inhalt)
| [ideen/idee.md](ideen/idee.md) | Die Kernidee und ein ehrlicher Realitätscheck | - [[Recht]] — Rechtslage in Deutschland (Störerhaftung, Abmahnrisiko, Verkabelung)
| [ideen/architektur.md](ideen/architektur.md) | Technische Architektur (Physik → Routing → Pooling → Inhalt) | - [[Lizenz]] — Lizenz-Optionen und Empfehlung
| [ideen/recht.md](ideen/recht.md) | Rechtslage in Deutschland (Störerhaftung, Abmahnrisiko, Verkabelung) | - [[Roadmap]] — Phasenplan vom Pilot bis zum Nachbarschafts-Backbone
| [ideen/roadmap.md](ideen/roadmap.md) | Phasenplan vom Pilot bis zum Nachbarschafts-Backbone | - [[Server-README|Server-Konzept]] — geplante Software (`sn-node`, `sn-fetch`, …)
## Die Idee in einem Satz ## 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 Konzeptphase. Die Software in `server/` ist noch nicht implementiert; der
erste Meilenstein ist ein PoC "segmentierter Download über zwei Haushalte" erste Meilenstein ist ein PoC "segmentierter Download über zwei Haushalte"
(siehe [Roadmap](ideen/roadmap.md)). (siehe [[Roadmap]]).
## Verwandte Projekte (Prior Art) ## Verwandte Projekte (Prior Art)
+15 -11
View File
@@ -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. Niemand erwirbt mehr Rechte, indem er mehr bezahlt oder mehr Hardware hat.
Anders als z. B. [Althea](https://www.althea.net/) (Mikrozahlungen pro Anders als z. B. [Althea](https://www.althea.net/) (Mikrozahlungen pro
weitergeleitetem Paket) wollen wir bewusst **keine Bezahlung** im Kern — 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 ## 2. Fairness als Algorithmus, nicht als Gnade
Jeder Haushalt bekommt standardmäßig einen gleichberechtigten, fairen Anteil Jeder Haushalt bekommt standardmäßig einen gleichberechtigten, fairen Anteil
(max-min Fairness). Stärkere Anschlüsse teilen freiwillig — genau das ist der (max-min Fairness). Stärkere Anschlüsse teilen freiwillig — genau das ist der
"anarcho-kommunistische" Kern: voneinander abhängig, freiwillig, ohne Zwang Kern: voneinander abhängig, freiwillig, ohne Zwang und ohne Markt.
und ohne Markt.
**Leechen ist erlaubt.** Wer nichts beiträgt (kein Exit, kein Cache, **Leechen ist erlaubt.** Wer nichts beiträgt (kein Exit, kein Cache,
keine Faser), darf trotzdem empfangen — Nachbarschaftskultur ist Nachsicht, keine Faser), darf trotzdem empfangen — Nachbarschaftskultur ist Nachsicht,
nicht Gegenleistungszwang. Der Scheduler behandelt "Leeched" als niedrigste nicht Gegenleistungszwang. Der Scheduler behandelt "Leeched" als niedrigste
Priorität bei Knappheit, aber nie als Strafe. Es gibt keine Bezahlung und 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. nicht der Software.
## 3. Freiwilligkeit und Do-ocracy ## 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, Ein Netz, dessen öffentliches Gesicht "Piraterie" ist, wird abgemahnt,
zerlegt und diskreditiert — und zieht Risiko auf die schwächsten Teilnehmer 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, - Das Netz wird als Infrastrukturprojekt betrieben (Zugang, Resilienz,
Gemeingut), nicht als Tauschbörsen-Produkt. Gemeingut), nicht als Tauschbörsen-Produkt.
- Jede:r bleibt für das eigene Tun verantwortlich; das Netz dokumentiert, - Jede:r bleibt für das eigene Tun verantwortlich; das Netz dokumentiert,
dass viele Menschen Zugang haben (schützt den Anschlussinhaber). 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 ## 6. Transparenz und offene Technik
Alles ist offen: Code (AGPL-3.0), Doku, Pläne, auch die Fehler. Hardware Alles ist offen: Code (Lizentscheidung, siehe [[Lizenz]]), Doku, Pläne, auch
besteht möglichst aus Standardkomponenten (Mini-PC, SFP-Medienwandler, die Fehler. Hardware besteht möglichst aus Standardkomponenten (Mini-PC,
Standard-Glasfaser), die alle reparieren und beschaffen können. SFP-Medienwandler, Standard-Glasfaser), die alle reparieren und beschaffen
können.
## 7. Resilienz und Selbsthilfe ## 7. Resilienz und Selbsthilfe
@@ -74,7 +76,9 @@ geteilt wie Bandbreite.
Basierend auf dem [Pico Peering Agreement](https://picopeer.net/) halten wir Basierend auf dem [Pico Peering Agreement](https://picopeer.net/) halten wir
fest: **Wer mitmacht, teilt. Wer teilt, wird geteilt.** Konkret: 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). 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. 4. Konflikte werden im Viertel geklärt, nicht beim Anwalt.
+35 -31
View File
@@ -1,40 +1,47 @@
# Architektur # Architektur
Von unten (Physik) nach oben (Inhalte). Der AKI-Node ist das Herzstück — Von unten (Physik) nach oben (Inhalte). Der SpiderNet-Node (`sn-node`) ist
eine kleine Box im Wohnungsregal, die zu Hause sitzt und das Viertel verbindet. das Herzstück — eine kleine Box im Wohnungsregal, die zu Hause sitzt und das
Viertel verbindet.
## Übersicht ## Übersicht
```mermaid ```mermaid
flowchart TD flowchart TD
subgraph HausA[Haus A] subgraph HausA[Haus A]
GA[Geräte A] --> NA[AKI-Node A] GA[Geräte A] --> NA[sn-node A]
end end
subgraph HausB[Haus B] subgraph HausB[Haus B]
GB[Geräte B] --> NB[AKI-Node B] GB[Geräte B] --> NB[sn-node B]
end end
subgraph HausC[Haus C] subgraph HausC[Haus C]
GC[Geräte C] --> NC[AKI-Node C] GC[Geräte C] --> NC[sn-node C]
end end
NA <-->|"Glasfaser (bzw. Funk-Fallback)"| NB NA <-->|"Glasfaser 10 Gbit/s"| NB
NB <-->|"Glasfaser"| NC NB <-->|"Glasfaser 10 Gbit/s"| NC
NA -->|"ISP-Uplink A"| WA((Internet)) NA -->|"ISP-Uplink A"| WA((Internet))
NB -->|"ISP-Uplink B"| WA NB -->|"ISP-Uplink B"| WA
NC -->|"ISP-Uplink C"| WA NC -->|"ISP-Uplink C"| WA
``` ```
Entscheidend: **jeder Haushalt behält seinen eigenen Uplink**. Es gibt keinen Entscheidend:
zentralen Exit (anders als klassische Community-Meshes mit einem Supernode),
sondern viele — das verteilt nicht nur Last, sondern auch Risiko und Zensur-
Angriffsfläche.
## 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- ## Schicht 0 — Physik (Nachbarschaftsglasfaser, 10 Gbit/s)
Stecker), Medienwandler bzw. SFP-Port direkt im Node. Innenrohr entlang
der Fassade, kurze Gräben im Garten, Kabelkanal. - **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 - **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. Sichtlinie nötig) als Überbrückung.
- **Topologie:** anfangs Stern/Ring (2–5 Häuser), später vermascht. Jede - **Topologie:** anfangs Stern/Ring (2–5 Häuser), später vermascht. Jede
Faser ist ein separates Link; Redundanz schlägt Eleganz. Faser ist ein separates Link; Redundanz schlägt Eleganz.
@@ -45,13 +52,12 @@ Kandidaten (Auswahl offen, Kriterium: simpel, wartbar, verschlüsselt):
| Kandidat | Pro | Con | | 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 | | Babel + WireGuard | bewährt (Althea-Ansatz), Router-Hardware tauglich | mehr Konfigurationsaufwand |
| cjdns | Battle-tested in Hyperboria | ältere Codebasis | | cjdns | Battle-tested in Hyperboria | ältere Codebasis |
Empfehlung für den PoC: **Yggdrasil**. Jeder AKI-Node peert über die Jeder `sn-node` peert über die Glasfaser-Links mit seinen Nachbarn; Geräte
Glasfaser-Links mit seinen Nachbarn; Geräte der Haushalte hängen per NAT/ der Haushalte hängen per NAT/Firewall getrennt dahinter (Home-LAN ≠ Mesh-LAN).
Firewall getrennt dahinter (Home-LAN ≠ Mesh-LAN).
## Schicht 2 — Bandbreiten-Pooling (der eigentliche Kern) ## 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 - Der Status ist sichtbar (Karma/Anzeige), aber es gibt keine Strafe und
keine Zwangsfreischaltung. keine Zwangsfreischaltung.
### Segmentierter Multi-Exit-Download (`aki-fetch`) ### Segmentierter Multi-Exit-Download (`sn-fetch`)
```mermaid ```mermaid
sequenceDiagram sequenceDiagram
@@ -97,7 +103,7 @@ sequenceDiagram
Node-->>User: Datei (Hash-verifiziert, reassembliert) 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 - Fallback: entfällt ein Exit, übernimmt ein anderer das Segment
- Für nicht-rangefähige Quellen: klassische Proxy-Rotation - 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, große Transfers über alle. Video-Calls werden explizit auf einen
Exit gepinnt (kein Splitting). Exit gepinnt (kein Splitting).
### Fairness-Scheduler (`aki-fair`) ### Fairness-Scheduler (`sn-fair`)
- Max-min Fairness über alle aktiven Nutzer:innen des Netzes - Max-min Fairness über alle aktiven Nutzer:innen des Netzes
- Exit-Kontingente (Volumenlimit, Wartungszeit) werden respektiert - Exit-Kontingente (Volumenlimit, Wartungszeit) werden respektiert
- Karma statt Bezahlung: wer dauerhaft deutlich mehr zieht als er gibt, - Leech-Nodes: niedrigste Priorität bei Knappheit, nie ausgeschlossen
wird fair angesprochen (Drosselung als letztes Mittel, nie als Strafe
für Berechtigte mit Bedarf)
### 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 (Steam, Konsolen-Updates, OS-Images, Software-Pakete) kommen aus dem
Viertel statt aus dem Internet Viertel statt aus dem Internet
- DNS-basiert, pro Haushalt kleine Cache-Slots; gemeinsam sind sie groß - 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 - Freenet ist **keine Anonymitätslösung** (siehe FAQ) und wird auch nicht
als solche beworben. als solche beworben.
- Unsere Software nutzt Freenet über `freenet-stdlib` bzw. die - 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 ## Sicherheit und Vertrauen
@@ -142,12 +146,12 @@ Exit gepinnt (kein Splitting).
Teilnehmer (Client-Isolation). Teilnehmer (Client-Isolation).
- Kill-Switch: jeder Haushalt kann seine Faser physisch/softwareseitig - Kill-Switch: jeder Haushalt kann seine Faser physisch/softwareseitig
abklemmen; der Node fällt auf "nur eigener Anschluss" zurück. 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 ## Offene Fragen
- DSLite/Carrier-NAT-Haushalte: Synchrone Exits gehen, aber - DSLite/Carrier-NAT-Haushalte: Synchrone Exits gehen, aber
Konfigurationsaufwand pro Router-Modell prüfen. Konfigurationsaufwand pro Router-Modell prüfen.
- ISP-AGB: Weitergabe an "Dritte" kann verboten sein (per ISP 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) - Wie viel Cache lohnt sich real bei 3–10 Haushalten? (Messung in Phase 2)
+18 -9
View File
@@ -1,4 +1,4 @@
# Die Kernidee — und ein ehrlicher Realitätscheck # Idee — und ein ehrlicher Realitätscheck
## Ursprungsidee ## Ursprungsidee
@@ -9,6 +9,11 @@
> kostet. Schwache Haushalte werden gestärkt. Nebenbei wird Traffic verteilt > kostet. Schwache Haushalte werden gestärkt. Nebenbei wird Traffic verteilt
> und ist für Außenstehende schwerer zuzuordnen (Privacy). > 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 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 ("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** 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 1. **Segmentierte Downloads über mehrere Exits.** Große Dateien werden in
Byte-Bereiche gesplittet (HTTP Range Requests) und parallel über die Byte-Bereiche gesplittet (HTTP Range Requests) und parallel über die
Glasfaseranschlüsse mehrerer Haushalte geladen. Das ist Multi-WAN- Internetanschlüsse mehrerer Haushalte geladen. Ein DSL-50000-Haushalt
Aggregation, nur verteilt über das Viertel. Ein DSL-50000-Haushalt kann kann damit realistisch 5× herunterladen, wenn 4 Nachbarn mitspielen.
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 2. **Fair-Share-Scheduling.** Wer gerade nichts lädt, gibt seinen Anteil
automatisch. Ein einzelner Stream profitiert von fremder Kapazität, automatisch. Ein einzelner Stream profitiert von fremder Kapazität,
mehrere Lade gleichzeitig bekommen faire Anteile. 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, 3. **Physik ist der eigentliche Engpass.** Glasfaser spannen heißt: Genehmigungen,
Vermieter, Grundstücke, Arbeit. Realistisch beginnt man mit dem, was da Vermieter, Grundstücke, Arbeit. Realistisch beginnt man mit dem, was da
ist (Kabel im Mehrfamilienhaus, Garten, kurze Richtfunkstrecken), und 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, 4. **Volumen-/Drosseltarife.** Wer ein Volumenlimit hat, zahlt mit Volumen,
wenn Nachbarn über seinen Exit laden. Lösung: Exits haben harte Kontingente 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 5. **Privacy ist ein Nebenprodukt, keine Anonymität.** Freenet sagt es
selbst (FAQ): keine Anonymität wie Tor/I2P. Metadaten bleiben. Wer echte selbst (FAQ): keine Anonymität wie Tor/I2P. Metadaten bleiben. Wer echte
Anonymität will, legt Tor/I2P über das Netz. Wir verkaufen deshalb Anonymität will, legt Tor/I2P über das Netz. Wir verkaufen deshalb
Privacy-by-Design, nicht Anonymität. Privacy-by-Design, nicht Anonymität.
6. **Recht.** Abmahnungen landen zuerst beim Anschlussinhaber, egal wer 6. **Recht.** Abmahnungen landen zuerst beim Anschlussinhaber, egal wer
geladen hat; bewusstes Ermöglichen von Rechtsbrüchen kann eigene Haftung 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) ## Der technische Kern (warum es Software braucht)
Das Netz ohne Software ist "nur" ein LAN. Die Mehrwerte entstehen durch 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) - Overlay-Routing über alle Haushalte (Kandidat: Yggdrasil)
- Exit-Pool verwalten: Wer darf über wen raus, mit welchem Kontingent - 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 - Transparenten Nachbarschafts-Cache
- (Später) Freenet als Inhalts- und App-Ebene im Viertel - (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]].
+62
View File
@@ -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)
+2 -2
View File
@@ -30,14 +30,14 @@
zu ermöglichen, kann als Teilnehmer/Beihelfer behandelt werden zu ermöglichen, kann als Teilnehmer/Beihelfer behandelt werden
(Analogie: BGH zu Tor-Exit-Betreibern mit Vorbelastung). (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 1. **Exit-Haushalt = Verantwortung bleibt beim Exit-Haushalt.** Wenn
fremder Traffic über meinen Anschluss ins Internet geht, gilt: fremder Traffic über meinen Anschluss ins Internet geht, gilt:
- Ich muss darlegen können, dass andere Zugang hatten → das Netz - Ich muss darlegen können, dass andere Zugang hatten → das Netz
dokumentiert (lokal, nicht zentral!) die Teilnehmerschaft. dokumentiert (lokal, nicht zentral!) die Teilnehmerschaft.
- Bei Kenntnis einer konkreten Verletzung muss ich handeln können → - 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. zu sperren, ohne das ganze Netz zu killen.
2. **Kein "Das ist ja verteilt, also legal."** Wer lädt, bleibt Täter — 2. **Kein "Das ist ja verteilt, also legal."** Wer lädt, bleibt Täter —
unabhängig davon, über welchen Exit. Verteilung ändert die Ermittlungs- unabhängig davon, über welchen Exit. Verteilung ändert die Ermittlungs-
+8 -8
View File
@@ -15,9 +15,9 @@ endet mit etwas, das man benutzen kann.
Ziel: Beweis, dass Pooling über zwei Anschlüsse real funktioniert. Ziel: Beweis, dass Pooling über zwei Anschlüsse real funktioniert.
- [ ] AKI-Node auf Mini-PC (Raspberry Pi / N100-Box), Yggdrasil-Overlay - [ ] SpiderNet-Node auf Mini-PC (Raspberry Pi / N100-Box), Yggdrasil-Overlay
zwischen 2 Haushalten (Kabel oder kurzstrecke WLAN/60-GHz) zwischen 2 Haushalten (Kabel oder Kurzstrecke WLAN/60-GHz)
- [ ] `aki-fetch` PoC: segmentierter Download (HTTP-Range-Splitting) über - [ ] `sn-fetch` PoC: segmentierter Download (HTTP-Range-Splitting) über
2 Exits, plus Baseline-Messung (1-Exit vs. 2-Exit, gleiche Datei) 2 Exits, plus Baseline-Messung (1-Exit vs. 2-Exit, gleiche Datei)
- [ ] Fair-Share-Scheduler v0: zwei gleichzeitige Downloads, faire Aufteilung - [ ] Fair-Share-Scheduler v0: zwei gleichzeitige Downloads, faire Aufteilung
- [ ] Doku: Messwerte, Erkenntnisse, Stolpersteine → hier in das Repo - [ ] 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. 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) Latenz), Onboarding-Flow (QR/Knopfdruck)
- [ ] Exit-Pool: Kontingente, opt-in/opt-out, Kill-Switch - [ ] Exit-Pool: Kontingente, opt-in/opt-out, Leech-Modus, Kill-Switch
- [ ] `aki-fetch`: API + CLI + einfache Browser-Integration - [ ] `sn-fetch`: API + CLI + einfache Browser-Integration
- [ ] `aki-cache`: lancache-artiger transparenter Cache (DNS-basiert) - [ ] `sn-cache`: lancache-artiger transparenter Cache (DNS-basiert)
- [ ] Fairness-Scheduler v1 (max-min, Exit-Kontingente, Karma) - [ ] Fairness-Scheduler v1 (max-min, Exit-Kontingente, Karma)
- [ ] Telemetrie: keine zentrale Sammlung; lokale Metriken im Node - [ ] 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 - [ ] Peering mit Freifunk-Clouds oder anderen Nachbarschaftsnetzen
- [ ] Echtes Backbone: eigene Glasfaser in Straßen, ggf. IXP-Peering - [ ] Echtes Backbone: eigene Glasfaser in Straßen, ggf. IXP-Peering
(langfristig, NYC-Mesh-Stil) (langfristig, NYC-Mesh-Stil)
- [ ] Federated Viertel: mehrere AKI-Netze verbinden sich - [ ] Federated Viertel: mehrere SpiderNet-Netze verbinden sich
+2 -2
View File
@@ -14,8 +14,8 @@
set -eu set -eu
HOST="git.dieterunterstrich.de" HOST="git.dieterunterstrich.de"
REPO_NAME="anarcho-kommunistisches-internet" REPO_NAME="spidernet"
DESCRIPTION="Nachbarschafts-Netz: gepoolte Bandbreite, Gemeingut, Privacy by Design" DESCRIPTION="SpiderNet: Nachbarschafts-Netz, gepoolte Bandbreite, Gemeingut, Privacy by Design"
CRED_FILE="${HOME}/.git-credentials" CRED_FILE="${HOME}/.git-credentials"
command -v python3 >/dev/null 2>&1 || { echo "ERROR: python3 required" >&2; exit 1; } command -v python3 >/dev/null 2>&1 || { echo "ERROR: python3 required" >&2; exit 1; }
+14 -13
View File
@@ -1,4 +1,4 @@
# AKI Node — Server/Software (Konzeptphase) # SpiderNet-Node — Server/Software (Konzeptphase)
Die Software, die aus "Nachbarschafts-LAN" ein gepooltes Bandbreitennetz Die Software, die aus "Nachbarschafts-LAN" ein gepooltes Bandbreitennetz
macht. Sprache: **Rust**. Status: **Konzeptphase — noch nichts implementiert.** macht. Sprache: **Rust**. Status: **Konzeptphase — noch nichts implementiert.**
@@ -17,7 +17,8 @@ des Daemons und in der Weboberfläche.
## Zielbild ## 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) 1. Das Nachbarschafts-Overlay bildet (Yggdrasil als erste Wahl)
2. Seinen eigenen ISP-Uplink als **Exit** anbietet (opt-in, Kontingent) 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 | | Crate/Binary | Zweck |
|---|---| |---|---|
| `aki-node` | Daemon: Discovery, Peering, Metriken, Onboarding | | `sn-node` | Daemon: Discovery, Peering, Metriken, Onboarding |
| `aki-exit` | Exit-Dienst: kontingentierter Uplink-Proxy für Nachbarn (verschlüsselt) | | `sn-exit` | Exit-Dienst: kontingentierter Uplink-Proxy für Nachbarn (verschlüsselt) |
| `aki-fetch` | Segmentierter Multi-Exit-Downloader (HTTP-API + CLI) | | `sn-fetch` | Segmentierter Multi-Exit-Downloader (HTTP-API + CLI) |
| `aki-fair` | Fairness-Scheduler (max-min, Exit-Kontingente, Karma) | | `sn-fair` | Fairness-Scheduler (max-min, Exit-Kontingente, Karma, Leech-Modus) |
| `aki-cache` | Transparenter Nachbarschafts-Cache (DNS-basiert) | | `sn-cache` | Transparenter Nachbarschafts-Cache (DNS-basiert) |
| `aki-freenet` | Integration von `freenet-core` (Contracts für Nachbarschafts-Inhalte) | | `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: Kleinster brauchbarer Schnitt:
@@ -46,8 +47,9 @@ Kleinster brauchbarer Schnitt:
gesplittet, reassembliert, hash-verifiziert gesplittet, reassembliert, hash-verifiziert
3. Fair-Share: zwei gleichzeitige Downloads teilen sich die Gesamt- 3. Fair-Share: zwei gleichzeitige Downloads teilen sich die Gesamt-
kapazität fair kapazität fair
4. Exit opt-in per Konfig-Datei; Kill-Switch (Exit aus = Node nutzt nur 4. Exit opt-in per Konfig-Datei; Leech-Modus (Sharing aus, nur empfangen)
den eigenen Uplink) jederzeit umschaltbar; Kill-Switch (Exit aus = Node nutzt nur den
eigenen Uplink)
## Nicht-Ziele (bewusst) ## 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) - Yggdrasil als Overlay (später evtl. Babel + WireGuard)
- `freenet-stdlib` / WebSocket-API für Freenet-Integration - `freenet-stdlib` / WebSocket-API für Freenet-Integration
- HTTP Range Requests + SHA-256-Verifizierung für Segmentierung - HTTP Range Requests + SHA-256-Verifizierung für Segmentierung
- Lizenz: AGPL-3.0 (freenet-core ist AGPL-3.0; Nutzung über stdlib/API - Lizenz: siehe [[Lizenz]] (Empfehlung: AGPL-3.0)
erlaubt trotzdem freie Wahl — wir wählen aus Ethos-Gründen AGPL)