15 पॉइंट द्वारा xguru 2022-12-05 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Fiberplane इन्फ्रास्ट्रक्चर के लिए एक collaborative notebook tool है (incident response और infrastructure debugging)
  • इसने दो बड़ी समस्याओं को हल करने में मदद की

1. Operational Transformation

  • एडिटर के collaboration features में conflicts को resolve करने के लिए एक तरीका चाहिए था
  • Google Docs द्वारा इस्तेमाल किए जाने वाले algorithm OT को implement किया, लेकिन यह आसान काम नहीं था
  • जटिलता का मुख्य कारण यह था कि जैसे-जैसे supported operations बढ़ते हैं, implement किए जाने वाले transformations की संख्या geometric रूप से बढ़ जाती है
  • इस काम को लागू करने वाली logic client/server दोनों में होनी चाहिए। दोनों तरफ mismatch होने पर side effects हो सकते हैं (जैसे अलग-अलग users को अलग notebook दिखना)
  • इसे दोनों तरफ अलग-अलग दो बार implement करना जोखिम भरा था। टीम भी छोटी थी, और duplicate किया जाने वाला code बहुत बढ़ जाता
  • इसलिए backend algorithm को Rust में implement किया गया। फिर WASM का उपयोग करके frontend में भी बिल्कुल वही code चलाया गया
  • इससे development effort बचा और mismatch का risk कम हुआ

2. Providers

  • दूसरी समस्या यह थी कि external data sources से notebook में data कैसे लाया जाए
  • data sources कई तरह के form और size में होते हैं, और user के browser से हमेशा आसानी से accessible नहीं होते
  • इस समस्या को हल करने के लिए browser और customer-hosted proxy server दोनों पर चल सकने वाले WASM-आधारित plugin "Fiberplane Providers" बनाए गए
  • ऐसी चीज़ JavaScript से भी की जा सकती है, लेकिन WASM के ये फायदे हैं
    • बेहतर performance
    • WASM द्वारा समर्थित किसी भी language में plugin लिखे जा सकते हैं
    • WASM plugins sandbox में चलते हैं, जिससे malicious provider की capabilities सीमित होती हैं

fp-bindgen

  • WebAssembly कई तरह के scenarios में उपयोगी है
  • यह अपने product development को सरल बना सकता है, या customer infrastructure तक पहुँचने वाले code को सुरक्षित तरीके से चला सकता है
  • WASM महत्वपूर्ण है और बहुत इस्तेमाल होता है, इसलिए इसके लिए एक अलग internal tool भी बनाया गया
  • fp-bindgen एक binding generator है जो Rust source code पर काम करता है
  • इसका उपयोग Rust में WASM plugins लिखने और उन्हें browser या Wasmer environment में host करने के लिए किया जा सकता है
  • fp-bindgen को open source के रूप में जारी किया गया है

1 टिप्पणियां

 
xguru 2022-12-05

मुझे इस तरह के startup लेख पसंद हैं।
वे अपने हल किए गए problem को इस तरह व्यवस्थित करके साझा करते हैं कि वह दूसरों के काम आए, और साथ ही अपने संबंधित open source को भी promote करते हैं, जिससे यह एहसास होता है कि वे ecosystem में भी योगदान दे रहे हैं।

GeekNews Weekly #177 में QuickJS-emscripten : QuickJS को WASM में compile करके चलाना का परिचय दिया गया था।
यहां भी इसी तरह sandboxing के जरिए plugin concept अपनाया गया है। ऐसा लगता है कि sandboxing के लिए container के रूप में WASM का उपयोग अब धीरे-धीरे एक बुनियादी तरीका बनता जा रहा है।