- Fiberplane ist ein kollaboratives Notebook-Tool für Infrastruktur (Incident Response und Infrastruktur-Debugging)
- Es half dabei, zwei große Probleme zu lösen
1. Operational Transformation
- Für die Kollaborationsfunktionen des Editors wurde eine Methode benötigt, um Konflikte aufzulösen
- Sie implementierten OT, den Algorithmus, den auch Google Docs verwendet, aber das war keine leichte Aufgabe
- Die Hauptursache für die Komplexität ist, dass mit der wachsenden Zahl unterstützter Operationen die Anzahl der zu implementierenden Transformationen exponentiell zunimmt
- Die Logik zur Anwendung dieser Operationen muss sowohl auf Client- als auch auf Serverseite vorhanden sein. Abweichungen zwischen beiden Seiten können Nebenwirkungen verursachen (zum Beispiel unterschiedliche Notebooks bei den Bearbeitenden)
- Dies zweimal getrennt auf beiden Seiten zu implementieren, ist riskant. Das Team ist klein, und die Menge an zu duplizierendem Code würde enorm wachsen
- Deshalb wurde der Backend-Algorithmus in Rust implementiert. Mit WASM wird im Frontend dann exakt derselbe Code ausgeführt
- Dadurch konnten sie Entwicklungsaufwand sparen und das Risiko von Inkonsistenzen verringern
2. Providers
- Ein weiteres Problem war, Daten aus externen Datenquellen in Notebooks zu holen
- Datenquellen gibt es in unterschiedlichen Formen und Größen, und sie sind im Browser der Nutzenden nicht immer leicht zugänglich
- Um dieses Problem zu lösen, entwickelten sie die WASM-basierten Plugins „Fiberplane Providers“, die sowohl im Browser als auch auf einem vom Kunden gehosteten Proxy-Server ausgeführt werden können
- Mit JavaScript wäre das ebenfalls möglich, aber WASM bietet folgende Vorteile
- bessere Performance
- Plugins können in allen von WASM unterstützten Sprachen geschrieben werden
- WASM-Plugins laufen in einer Sandbox und begrenzen so die Möglichkeiten bösartiger Provider
fp-bindgen
- WebAssembly ist in vielen verschiedenen Szenarien hilfreich
- Es kann die Entwicklung eigener Produkte vereinfachen oder Code sicher ausführen, der auf die Infrastruktur von Kunden zugreift
- Weil WASM wichtig ist und intensiv genutzt wird, haben sie auch ein eigenes Tool entwickelt
- fp-bindgen ist ein Binding-Generator, der auf Rust-Quellcode arbeitet
- Er kann verwendet werden, um WASM-Plugins in Rust zu schreiben und sie im Browser oder in einer Wasmer-Umgebung zu hosten
- fp-bindgen wurde als Open Source veröffentlicht
1 Kommentare
Ich mag solche Startup-Beiträge.
Sie vermitteln den Eindruck, dass ein Unternehmen zum Ökosystem beiträgt, indem es die selbst gelösten Probleme so aufbereitet, dass sie anderen helfen, und dabei auch das eigene Open Source mit bewirbt.
In GeekNews Weekly #177 wurde QuickJS-emscripten: QuickJS als WASM kompilieren und ausführen vorgestellt.
Auch hier wird offenbar ein Plugin-Konzept über Sandboxing verfolgt. Es scheint, als werde der Einsatz von WASM als Container für Sandboxing inzwischen zum Standard.