Rename project to SpiderNet, Obsidian-style linked docs, license overview
This commit is contained in:
@@ -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/<user>/anarcho-kommunistisches-internet.git`
|
||||
- Remote: `https://git.dieterunterstrich.de/<user>/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)
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
|
||||
+15
-11
@@ -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.
|
||||
|
||||
@@ -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-
|
||||
Entscheidend:
|
||||
|
||||
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.
|
||||
|
||||
## Schicht 0 — Physik (Nachbarschaftsglasfaser)
|
||||
## Schicht 0 — Physik (Nachbarschaftsglasfaser, 10 Gbit/s)
|
||||
|
||||
- **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.
|
||||
- **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)
|
||||
|
||||
@@ -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]].
|
||||
|
||||
@@ -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)
|
||||
@@ -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-
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
|
||||
+14
-13
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user