- Braid इंटरऑपरेबल state synchronization के लिए algorithm, application, tool और standard बनाने वाला एक open working group है.
- इसका लक्ष्य पूरे network computing system में distributed state को local variable की तरह आसानी से पढ़ने और लिखने योग्य बनाना है.
- हर 2 हफ्ते में open meeting के जरिए application और system requirements पर चर्चा की जाती है, समानताएँ पहचानी जाती हैं, और shared protocol पर सहमति खोजी जाती है.
Braid-HTTP: HTTP के लिए synchronization
- Braid-HTTP एक extension है जो HTTP को state transfer से आगे बढ़ाकर state synchronization protocol के रूप में generalize करता है.
- यह HTTP में ये सुविधाएँ जोड़ता है:
- HTTP resource versioning
- GET request के लिए subscription
- Range request के लिए PATCH
- OT या CRDT behavior को निर्दिष्ट करने वाला Merge-Type
- इन सुविधाओं की मदद से web resource कई client, server और proxy के बीच अपने-आप synchronize हो सकते हैं, और कई author मनमाने network delay और partition के बावजूद consistency बनाए रखते हुए एक साथ edit कर सकते हैं.
- Web application, Braid extension का उपयोग करके collaborative editing, serverless offline mode और P2P networking दे सकते हैं.
- Standard library का उपयोग करने पर मौजूदा web application और browser में ये सुविधाएँ आसानी से जोड़ी जा सकती हैं.
- अधिक जानकारी IETF Internet Draft में देखी जा सकती है.
Braid protocol का उपयोग
- Braid मौजूदा web के साथ compatible है, आज के browser में काम करता है, और मौजूदा web application में आसानी से जोड़ा जा सकता है.
- अलग-अलग language के लिए library उपलब्ध हैं:
- Javascript: braid-http, braid-protocol
- Haskell: wai-braid
- Lua: Paul Kulchenko द्वारा विकासाधीन
- Chrome में Braid-Chrome extension के जरिए Braid features का उपयोग किया जा सकता है.
Braid synchronization model
- Protocol implementation:
- braid-http
- braid-protocol
- wai-braid
- Browser extension:
- State abstraction library:
- Braid-Text (text के लिए)
- Redwood
- Statebus
- Statecraft
- Algorithm:
- Diamond Types: दुनिया का सबसे तेज text CRDT
- Antimatter: दुनिया का पहला history-pruning text CRDT
- Sync9: text और JSON के लिए CRDT+OT
- SyncX: Sync9
- Shelf: बहुत सरल और उपयोगी JSON CRDT
- Diffsync: recursive 3-way merge का उपयोग करने वाला CRDT+OT
- Tiny-Merge: practical CRDT की अच्छी तरह डिज़ाइन की गई library
- CR-SQLite: SQLite को बेहद उपयोगी CRDT में बदलता है
- Portals: किसी भी OT या CRDT के लिए copy, move और wrap operation
- Simpleton: किसी भी CRDT के लिए बहुत सरल, तेज lightweight client
- Compatibility:
- Automerge compatibility
- ShareDB और Sync9 compatibility
Application
- यह वेबसाइट स्वयं
- Peery View: Braid-आधारित P2P reputation system
- Quiet: torDT का उपयोग करने वाली P2P chat
- Wiki
साथ मिलकर काम करना
- यह एक open group है.
- हर 2 हफ्ते में Zoom link पर general meeting होती है.
- नई प्रगति का demo किया जाता है, standard पर चर्चा होती है, और distributed web बनाने के तरीकों पर विचार किया जाता है.
- विशेष विषयों पर बीच-बीच में meetings भी नियमित रूप से schedule में जोड़ी जाती हैं.
Standard कैसे बनते हैं
- IETF में सार्वजनिक रूप से काम किया जाता है.
- Braid और HTTP mailing list पर specification पर चर्चा होती है.
- Github पर Braid specification को edit किया जा सकता है.
- कोई समस्या हो तो Github पर issue file किया जा सकता है.
- कोई idea हो तो उसे specification में लिखकर Pull Request भेजा जा सकता है.
- Rough consensus बनने पर Pull Request स्वीकार कर लिया जाता है.
- Standard discussion की ताज़ा जानकारी के लिए mailing list subscribe की जा सकती है और Github पर नज़र रखी जा सकती है.
- मदद चाहिए तो Michael Toomim को email करके सहायता ली जा सकती है.
Braid protocol
- Braid protocol कई synchronization algorithm को एक common network protocol के जरिए interoperable बनाता है.
- आज के synchronization engine अलग-अलग protocol इस्तेमाल करते हैं, लेकिन उनके network message समय के version, स्थान की position, और समय की range के पार फैले स्थान के patch को ले जाते हैं.
- Patch set की संरचना एक mathematical structure बनाती है, जिसे braid कहा जाता है.
- Braid protocol एक standard message format है, जिससे सभी synchronization engine समय के बदलाव को व्यक्त कर सकें और उसे consistent state में resolve कर सकें.
- Data model को explore करने के लिए interactive demo:
- braid के साथ interact करना
- random braid बनाना
- अगर आप HTTP के जरिए synchronization में रुचि रखते हैं, तो protocol specification देख सकते हैं और mailing list में अपनी राय दे सकते हैं.
Protocol roadmap
- मौजूदा Braid specification, HTTP को synchronization के दो dimension में expand करती है:
- Level 0: आज का HTTP
- Level 1: push update के साथ subscription
- Level 2: P2P consistency (patch, version, merge)
- इसके अलावा नीचे दिए गए P2P features का prototype बनाया जा रहा है, लेकिन वे अभी standardized नहीं हैं:
- Level 3: P2P semantics (method, validation, acknowledgement)
- Level 4: P2P transport (URL, naming, encryption, routing)
- विवरण के लिए meeting-2 में Mike की presentation देखी जा सकती है.
- सभी चारों क्षेत्रों में सहयोग का स्वागत है.
Braid synchronization engine को interoperable बनाता है
- Rafie Walker ने Braid protocol का उपयोग करके OT system और CRDT को synchronize किया है.
- WebSocket पर एक babelfish है जो ShareDB के network message को Braid message में बदल सकता है और उल्टा भी.
- ShareDB और Sync9 के बीच babelfish:
- इसे live आज़माया जा सकता है.
- ShareDB protocol पर insight देने के लिए Seph Gentle का धन्यवाद.
- यह babelfish लगभग पूरा हो चुका है, लेकिन उन मामलों को handle नहीं करता जहाँ दो synchronization engine अलग ordering में conflict resolve करते हैं.
- इसके लिए वही merge type implement करना होगा (protocol specification देखें).
- Automerge जैसे CRDT system के लिए babelfish design पर भी काम शुरू हो चुका है.
- अगर आपके पास synchronization engine है, तो Braid compatibility layer विकसित करने के लिए साथ काम किया जा सकता है.
नाम "Braid" क्यों?
- Braid, वीडियो गेम Braid की तरह web में historical time travel जोड़ता है.
- यह World Wide Web के हर strand को गूँथकर web को और मोटा, शक्तिशाली और मज़बूत बनाता है.
- यह web standard में synchronization और distributed technology पर मौजूद कई दृष्टिकोणों को साथ बुनता है.
- Braid एक mathematical structure भी है और computer data structure भी, जिसमें synchronization engine के लिए ज़रूरी जानकारी होती है.
- Edit को braid के patch के रूप में व्यक्त करके यह कई synchronization engine को interoperable बनाता है.
GN⁺ की राय
- Braid protocol एक शक्तिशाली tool है जो अलग-अलग synchronization algorithm को एकीकृत कर सकता है, और distributed system में consistency बनाए रखने में बहुत मददगार हो सकता है.
- CRDT और OT दोनों का support collaborative application developer के लिए बहुत उपयोगी होगा.
- Braid-HTTP का extension मौजूदा web application में आसानी से integrate किया जा सकता है, इसलिए developer के लिए नई तकनीक अपनाने में बड़ी रुकावट नहीं होगी.
- Braid की open meeting community participation को बढ़ावा देती है और अलग-अलग राय लेकर बेहतर standard बनाने का अवसर देती है.
- विभिन्न language support की वजह से developer अपनी पसंदीदा language में Braid का उपयोग कर सकते हैं, जिससे अधिक developer के जुड़ने का माहौल बनता है.
1 टिप्पणियां
Hacker News राय
Hacker News टिप्पणियों का सारांश
नई braid-text लाइब्रेरी जल्द जारी होने वाली है
simpletonmerge type का उपयोग करती है, इसलिए client history overhead नहीं है.URL में version number शामिल नहीं होता
HTTP extension के बजाय मौजूदा standards का उपयोग पसंद
partial PUTकी जगहPATCHका उपयोग अधिक उपयुक्त हो सकता है.distributed infrastructure के लिए फायदेमंद
ज़्यादा सामान्य event streaming लक्ष्य की संभावना
WebDAV से तुलना
उपयोग के मामलों पर सवाल
संबंधित लिंक
क्या यह सिर्फ real-time के लिए है
HTTP की प्रकृति