- Fiberplane est un outil de notebook collaboratif pour l’infrastructure (gestion des incidents et débogage d’infrastructure)
- Il a aidé à résoudre deux grands problèmes
1. Operational Transformation
- Il fallait une méthode pour résoudre les conflits dans les fonctionnalités de collaboration de l’éditeur
- Ils ont implémenté OT, l’algorithme utilisé par Google Docs, mais cela n’a pas été une tâche facile
- La principale source de complexité est qu’à mesure que le nombre d’opérations prises en charge augmente, le nombre de transformations à implémenter croît de façon exponentielle
- La logique permettant d’appliquer ce travail devait être présente côté client et côté serveur. Un décalage entre les deux pouvait provoquer des effets de bord (par exemple des notebooks différents selon les collaborateurs)
- L’implémenter séparément deux fois des deux côtés était risqué. L’équipe était aussi réduite, et la quantité de code à dupliquer aurait énormément augmenté
- Ils ont donc implémenté l’algorithme backend en Rust. Puis, en utilisant WASM, ils ont exécuté exactement le même code côté front
- Cela leur a permis d’économiser des efforts de développement et de réduire le risque d’incohérence
2. Providers
- Un autre problème consistait à faire entrer des données de sources externes dans le notebook
- Les sources de données existent sous des formes et à des tailles variées, et elles ne sont pas toujours facilement accessibles depuis le navigateur de l’utilisateur
- Pour résoudre ce problème, ils ont créé des plugins basés sur WASM, les « Fiberplane Providers », capables de s’exécuter à la fois dans le navigateur et sur un serveur proxy hébergé par le client
- Cette approche est aussi possible en JavaScript, mais WASM présente les avantages suivants
- De meilleures performances
- La possibilité d’écrire des plugins dans tous les langages pris en charge par WASM
- Les plugins WASM s’exécutent dans un bac à sable, ce qui limite les capacités d’un provider malveillant
fp-bindgen
- WebAssembly est utile dans de nombreux scénarios
- Il peut simplifier le développement de produits internes ou permettre d’exécuter en toute sécurité du code qui accède à l’infrastructure des clients
- WASM étant important et largement utilisé, ils ont aussi créé leur propre outil dédié
- fp-bindgen est un générateur de bindings qui fonctionne sur du code source Rust
- Il permet d’écrire des plugins WASM en Rust et de les héberger dans le navigateur ou dans un environnement Wasmer
- fp-bindgen a été publié en open source
1 commentaires
J’aime ce genre d’articles de startup.
Ils donnent l’impression de contribuer à l’écosystème en expliquant un problème qu’ils ont résolu de manière utile pour les autres, tout en faisant aussi la promotion de leur open source associé.
Dans GeekNews Weekly #177, on avait présenté QuickJS-emscripten : compiler et exécuter QuickJS en WASM.
Ici aussi, ils semblent adopter un concept de plugin via le sandboxing. L’usage de WASM comme conteneur pour le sandboxing semble désormais devenir la norme.