- Fiberplane es una herramienta de cuadernos colaborativos para infraestructura (respuesta a incidentes y depuración de infraestructura)
- Ayudó a resolver dos grandes problemas
1. Operational Transformation
- Se necesitaba una forma de resolver conflictos en las funciones de colaboración del editor
- Implementaron OT, el algoritmo que usa Google Docs, pero no fue una tarea sencilla
- La principal causa de la complejidad es que, a medida que aumenta la cantidad de operaciones compatibles, la cantidad de transformaciones que hay que implementar crece exponencialmente
- La lógica para aplicar este trabajo debía existir tanto en el cliente como en el servidor. Las diferencias entre ambos podían provocar efectos secundarios (por ejemplo, que distintos usuarios vieran cuadernos diferentes)
- Implementar esto dos veces por separado en ambos lados era arriesgado. El equipo también era pequeño y la cantidad de código duplicado crecería muchísimo
- Por eso implementaron el algoritmo de backend en Rust. Luego, usando WASM, ejecutaron exactamente el mismo código también en el frontend
- Con esto ahorraron esfuerzo de desarrollo y redujeron el riesgo de inconsistencias
2. Providers
- Otro problema era traer datos desde fuentes de datos externas hacia los cuadernos
- Las fuentes de datos vienen en distintas formas y tamaños, y no siempre son fácilmente accesibles desde el navegador del usuario
- Para resolver este problema, crearon un plugin basado en WASM llamado "Fiberplane Providers", que puede ejecutarse tanto en el navegador como en un servidor proxy alojado por el cliente
- Esta tecnología también podría haberse hecho con JavaScript, pero WASM tiene las siguientes ventajas
- Mejor rendimiento
- Los plugins pueden escribirse en cualquiera de los lenguajes compatibles con WASM
- Los plugins WASM se ejecutan en un sandbox, lo que limita las capacidades de proveedores maliciosos
fp-bindgen
- WebAssembly es útil en diversos escenarios
- Puede simplificar el desarrollo del propio producto o ejecutar de forma segura código que accede a la infraestructura del cliente
- Como WASM es importante y se usa mucho, también crearon su propia herramienta
- fp-bindgen es un generador de bindings que funciona sobre código fuente Rust
- Puede usarse para escribir plugins WASM en Rust y alojarlos en el navegador o en el entorno Wasmer
- fp-bindgen fue publicado como open source
1 comentarios
Me gustan este tipo de posts de startups.
Dan la impresión de que, al ordenar el problema que resolvieron de una forma que le sirva a otros, también promocionan su propio open source relacionado y así contribuyen al ecosistema.
En GeekNews Weekly #177 presentaron QuickJS-emscripten: compilar y ejecutar QuickJS como WASM.
Aquí también parecen estar tomando un concepto de plugins mediante sandboxing. Parece que usar WASM como contenedor para sandboxing ya se está volviendo algo básico.