12 पॉइंट द्वारा GN⁺ 2024-05-27 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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:
    • Braid-Chrome
  • 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 टिप्पणियां

 
GN⁺ 2024-05-27
Hacker News राय

Hacker News टिप्पणियों का सारांश

  • नई braid-text लाइब्रेरी जल्द जारी होने वाली है

    • वेब ऐप्स में collaborative editing फीचर आसानी से जोड़ने के लिए एक लाइब्रेरी का परिचय.
    • इसे Node.js ऐप में सरलता से जोड़ा जा सकता है, और WebSocket की ज़रूरत नहीं है.
    • simpleton merge type का उपयोग करती है, इसलिए client history overhead नहीं है.
    • Braid-Chrome extension के जरिए version history देखी जा सकती है.
  • URL में version number शामिल नहीं होता

    • URL में version number शामिल नहीं होता, बल्कि अलग header के रूप में भेजा जाता है.
    • किसी खास version को link करना मुश्किल है.
    • यह सवाल उठता है कि क्या synchronization का HTTP से इतना गहरा जुड़ाव होना चाहिए.
  • HTTP extension के बजाय मौजूदा standards का उपयोग पसंद

    • HTTP को extend करने के बजाय मौजूदा standards का उपयोग करना बेहतर हो सकता है.
    • partial PUT की जगह PATCH का उपयोग अधिक उपयुक्त हो सकता है.
  • distributed infrastructure के लिए फायदेमंद

    • Braid cloud के बिना भी devices के बीच state synchronization की लागत कम कर सकता है.
    • यह decentralized infrastructure के लिए फायदेमंद है.
  • ज़्यादा सामान्य event streaming लक्ष्य की संभावना

    • individual resource changes को subscribe किया जा सकता है.
    • इससे अधिक सामान्य event streaming लक्ष्य की संभावना पर सवाल उठता है.
  • WebDAV से तुलना

    • यह WebDAV जैसा है, लेकिन अधिक शक्तिशाली फीचर्स देता है.
    • HTTP के ऊपर एक अलग layer बनाना बेहतर हो सकता है.
  • उपयोग के मामलों पर सवाल

    • इस लाइब्रेरी का उपयोग कहाँ किया जा सकता है, इस पर सवाल.
    • use case स्पष्ट नहीं है.
  • संबंधित लिंक

    • Braid: Synchronization for HTTP से संबंधित लिंक दिया गया है.
  • क्या यह सिर्फ real-time के लिए है

    • यह सवाल कि क्या यह केवल real-time के लिए है, और क्या history cleanup फीचर है.
    • client के बहुत कम कनेक्ट होने की स्थिति को लेकर चिंता.
  • HTTP की प्रकृति

    • HTTP एक request-response protocol है और state transfer को संभालता नहीं है.
    • यह विवरण कि Braid-HTTP को state synchronization protocol के रूप में extend किया गया है, अजीब लगती है.