Die Suche nach einer unkomplizierten Offline-Wiki-Lösung endete für viele Nutzer oft in Sackgassen. Tools wie Kiwix erfordern zusätzliche Apps und mehr als ein Gigabyte an ZIM-Dateien, während IPFS eine stabile Verbindung und technische Einrichtung voraussetzt. Doch was wäre, wenn es ein System gäbe, das ohne Installation auskommt, auf jedem Gerät sofort läuft und sich sogar per Bluetooth oder USB-Stick weitergeben lässt?
Genau dieses Problem löste der Entwickler hinter Portable Knowledge Mesh. Das Ergebnis ist ein schlankes, aber leistungsstarkes Werkzeug: eine einzelne reader.html-Datei mit nur 19 KB Größe, die ohne zusätzliche Software oder Internetverbindung genutzt werden kann. Selbst ein einfacher Doppelklick auf die Datei reicht aus, um das Offline-Wiki zu starten. Das Besondere daran? Die gesamte Wissensbasis inklusive eines 21-Artikel-Pakets zum Thema Überlebenstechniken wiegt weniger als 50 KB – klein genug, um es sogar in einer einzigen Chat-Nachricht zu versenden.
Einfacher Start dank Single-File-Prinzip
Die grundlegende Idee hinter Portable Knowledge Mesh ist so simpel wie genial: Alles, was benötigt wird, steckt in einer einzigen Datei. Doch diese Einfachheit stellte den Entwickler vor technische Herausforderungen. Besonders kritisch war die Forderung, dass die Datei direkt aus dem lokalen Dateisystem (file://) ohne Server oder sichere HTTPS-Verbindung geöffnet werden kann. Viele moderne Webtechnologien wie Service Worker oder IndexedDB funktionieren unter diesen Bedingungen nicht zuverlässig.
Um diese Hürde zu überwinden, setzte der Entwickler auf eine bewusste Beschränkung: Sämtliche Daten werden im Arbeitsspeicher und in sessionStorage abgelegt. Die Wissenspakete selbst sind als einfache JSON-Dateien strukturiert, was die Verarbeitung ohne externe Abhängigkeiten ermöglicht. Erst später wurde die Lösung um eine optimierte ZIP-Struktur mit CompressionStream erweitert, doch die initiale Version setzte vollständig auf das Prinzip der maximalen Kompatibilität.
Sicherheit gegen Manipulation durch kryptografische Signaturen
In einem Umfeld, in dem Wissen direkt zwischen Geräten getauscht wird, ohne zentrale Server oder Kontrollinstanzen, gewinnt die Frage der Authentizität an Bedeutung: Können Nutzer sicher sein, dass die erhaltenen Inhalte nicht verändert wurden? Portable Knowledge Mesh begegnet diesem Problem mit einer robusten kryptografischen Lösung.
Jedes Wissenspaket wird mit einem ECDSA P-256-Schlüssel signiert. Der Prozess läuft wie folgt ab:
- Jeder Artikel wird einzeln mit SHA-256 gehasht.
- Aus den sortierten Hash-Werten aller Artikel wird ein Merkle-Baum-Root berechnet.
- Dieser Root wird mit dem privaten Schlüssel des Herausgebers signiert.
- Die Lesesoftware überprüft beim Öffnen des Pakets die Integrität, indem sie alle Schritte im Browser neu berechnet und die Signatur validiert.
Selbst kleinste Änderungen an einem Artikel führen dazu, dass die Berechnung des Root-Hashes fehlschlägt oder die Signatur nicht mehr übereinstimmt. Somit ist sichergestellt, dass manipulierte Inhalte sofort erkannt und abgelehnt werden. Die Implementierung nutzt ausschließlich die im Browser integrierte WebCrypto-API, wodurch keine externen Bibliotheken erforderlich sind.
// Überprüfung der Paketintegrität im Browser
async function verifyPack(mesh) {
const m = mesh.manifest;
const per = {};
// Hashes aller Artikel berechnen
for (const [id, md] of Object.entries(mesh.content.blocks)) {
per[id] = await sha256Hex(md);
}
// Merkle-Root aus sortierten Hashes erstellen
const root = await sha256Hex(
Object.keys(per).sort().map(id => per[id]).join('')
);
// Signaturprüfung
const key = await crypto.subtle.importKey(
'jwk', m.publisher.pubkey_jwk,
{ name: 'ECDSA', namedCurve: 'P-256' },
true, ['verify']
);
const ok = await crypto.subtle.verify(
{ name: 'ECDSA', hash: 'SHA-256' },
key,
base64ToBytes(m.signature_b64),
new TextEncoder().encode(root)
);
return ok ? 'verifiziert' : 'manipuliert';
}Zukunftssichere Synchronisation ohne zentrale Kontrolle
Ein zentrales Anliegen des Projekts ist die dezentrale Weitergabe von Wissen – ganz ohne Abhängigkeiten von Servern oder Cloud-Diensten. Die naheliegendste Lösung für eine solche Synchronisation wäre der Einsatz von CRDTs (Conflict-free Replicated Data Types), die Änderungen kollisionsfrei zwischen Geräten zusammenführen. Doch hier stieß der Entwickler auf ein fundamentales Problem: CRDTs neigen dazu, mit der Zeit immer größer zu werden.
Die meisten CRDT-Implementierungen speichern nicht nur den aktuellen Zustand, sondern auch eine Historie von Änderungen (sogenannte Tombstones). In einem Szenario, in dem Geräte möglicherweise monatelang nicht miteinander kommunizieren, führt dies unweigerlich zu einem Speicherüberlauf, sobald die lokale Datenbank die zulässige Quota überschreitet. Eine zentrale Instanz zur Bereinigung der Historie gibt es in diesem Modell nicht.
Um dieses Problem zu umgehen, setzt der Entwickler für zukünftige Versionen auf einen hybriden Ansatz:
- LWW-Map (Last-Write-Wins) pro Artikel: Statt einer vollständigen Änderungshistorie wird nur der aktuellste Zustand jedes Artikels gespeichert. Dies reduziert den Speicherbedarf drastisch.
- Lamport-Uhren statt Systemzeit: Da Geräte offline sein können und deren Uhren manipuliert werden, kommt eine logische Zeitsteuerung zum Einsatz. Konflikte werden durch die Lamport-Zeit und bei Gleichstand durch den Autoren-Schlüssel aufgelöst.
- Vertrauensbasierte Komprimierung: Vertrauenswürdige Editoren können signierte Snapshots veröffentlichen, die von anderen Nutzern als neue Basis akzeptiert werden. Alte Änderungen werden damit verworfen, ohne dass ein Server erforderlich ist.
Priorität: Einfache Übertragung über physische Medien
Obwohl WebRTC theoretisch eine elegante Lösung für die direkte Geräte-zu-Geräte-Synchronisation bieten würde, entschied sich der Entwickler bewusst dagegen, diese Technologie zur Kernfunktionalität zu machen. Der Grund: Ohne zusätzliche Server wie STUN oder TURN funktioniert WebRTC nur im lokalen Netzwerk und ist damit zu unzuverlässig für den Einsatz als primäre Synchronisationsmethode.
Stattdessen setzt Portable Knowledge Mesh auf physische Medien als Hauptübertragungsweg:
- Bluetooth für schnelle Dateiübertragung zwischen Smartphones
- USB-Sticks für den offline Transfer zwischen Computern
- AirDrop für nahtlose Weitergabe innerhalb des Apple-Ökosystems
- QR-Codes für kurze, visuelle Links zu Wissenspaketen
- E-Mail-Anhänge für den Versand an entfernte Kontakte
Erst in späteren Versionen (v0.3) soll WebRTC für die lokale Netzwerksynchronisation als optionale Erweiterung hinzugefügt werden.
Aktueller Stand und zukünftige Pläne
Die erste stabile Version (v0.1) von Portable Knowledge Mesh ist bereits veröffentlicht und konzentriert sich auf die lesbare Offline-Nutzung. Das mitgelieferte Paket "Barefoot Skills" enthält 21 Artikel zu Überlebenstechniken und Erste-Hilfe-Maßnahmen.
Die nächsten Meilensteine sind bereits in Planung:
- v0.2: Einbettung eines editierbaren Overlays, das lokale Communities ermöglicht, Inhalte anzupassen und eigene Versionen zu erstellen – immer noch ohne Server, aber mit einem dezentralen Vertrauensmodell.
- v0.3: Einführung einer PWA-Version (Progressive Web App), die als installierbare Anwendung läuft, sowie die Integration von WebRTC für die LAN-Synchronisation und die automatische Komprimierung von Wissenspaketen.
Portable Knowledge Mesh beweist damit, dass komplexe Anforderungen an Datensicherheit, Benutzerfreundlichkeit und Offline-Funktionalität auch mit minimalistischen Mitteln gelöst werden können. In einer Zeit, in der digitale Abhängigkeit von Cloud-Diensten und ständiger Internetverbindung zur Norm wird, bietet diese Lösung eine erfrischend autonome Alternative.
KI-Zusammenfassung
İnternet bağlantısı gerektirmeyen, sadece 19 KB boyutunda bir HTML dosyasıyla çalışan taşınabilir wiki aracı hakkında detaylı rehber. Kurulum gerektirmeyen ve Bluetooth/USB ile paylaşılabilen bu çözümle bilgiye her yerde ulaşın.