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.
|
> 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)
|
||||||
|
|||||||
@@ -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
|
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
@@ -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.
|
||||||
|
|||||||
@@ -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-
|
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.
|
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-
|
- **Ziel:** 10 Gbit/s Haus-zu-Haus. Glasfaser (2-Faser-Duplex G.657A2, LC)
|
||||||
Stecker), Medienwandler bzw. SFP-Port direkt im Node. Innenrohr entlang
|
mit **10G-Optik (SFP+)** direkt im Node — langfristig günstiger und
|
||||||
der Fassade, kurze Gräben im Garten, Kabelkanal.
|
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)
|
||||||
|
|||||||
@@ -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]].
|
||||||
|
|||||||
@@ -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
|
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-
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user