- Braid adalah kelompok kerja terbuka yang membuat algoritme, aplikasi, alat, dan standar untuk sinkronisasi status yang interoperabel.
- Tujuannya adalah membuat status terdistribusi di seluruh sistem komputasi jaringan dapat dibaca dan ditulis semudah variabel lokal.
- Setiap dua minggu, mereka mengadakan pertemuan terbuka untuk membahas kebutuhan aplikasi dan sistem, mengidentifikasi kesamaan, dan mencari kesepakatan atas protokol bersama.
Braid-HTTP: Sinkronisasi untuk HTTP
- Braid-HTTP adalah ekstensi yang menggeneralisasi HTTP dari protokol transfer status menjadi protokol sinkronisasi status.
- Ekstensi ini menambahkan kemampuan berikut ke HTTP:
- Versioning sumber daya HTTP
- Subscription untuk permintaan GET
- PATCH untuk permintaan Range
- Merge-Type yang menentukan operasi OT atau CRDT
- Dengan kemampuan ini, sumber daya web dapat disinkronkan secara otomatis di antara banyak klien, server, dan proxy, dan banyak penulis dapat mengedit secara bersamaan sambil mempertahankan konsistensi bahkan di bawah latensi jaringan dan partisi yang sewenang-wenang.
- Aplikasi web dapat menggunakan ekstensi Braid untuk menyediakan pengeditan kolaboratif, mode offline serverless, dan jaringan P2P.
- Dengan menggunakan pustaka standar, kemampuan ini dapat dengan mudah ditambahkan ke aplikasi web dan browser yang sudah ada.
- Detail lebih lanjut dapat dilihat dalam draf internet IETF.
Menggunakan protokol Braid
- Braid kompatibel dengan web saat ini, berfungsi di browser saat ini, dan dapat dengan mudah ditambahkan ke aplikasi web yang sudah ada.
- Tersedia pustaka untuk berbagai bahasa:
- Javascript: braid-http, braid-protocol
- Haskell: wai-braid
- Lua: sedang dikembangkan oleh Paul Kulchenko
- Di Chrome, fitur Braid dapat digunakan melalui ekstensi Braid-Chrome.
Model sinkronisasi Braid
- Implementasi protokol:
- braid-http
- braid-protocol
- wai-braid
- Ekstensi browser:
- Pustaka abstraksi status:
- Braid-Text (untuk teks)
- Redwood
- Statebus
- Statecraft
- Algoritme:
- Diamond Types: CRDT teks tercepat di dunia
- Antimatter: CRDT teks pertama di dunia dengan history pruning
- Sync9: CRDT+OT untuk teks dan JSON
- SyncX: Sync9
- Shelf: JSON CRDT yang sangat sederhana dan berguna
- Diffsync: CRDT+OT yang menggunakan penggabungan tiga arah rekursif
- Tiny-Merge: pustaka CRDT praktis yang dirancang dengan baik
- CR-SQLite: mengubah SQLite menjadi CRDT yang sangat berguna
- Portals: operasi copy, move, dan wrap untuk semua OT atau CRDT
- Simpleton: klien ringan yang sangat sederhana dan cepat untuk semua CRDT
- Kompatibilitas:
- Kompatibilitas Automerge
- Kompatibilitas ShareDB dan Sync9
Aplikasi
- Situs web ini sendiri
- Peery View: sistem reputasi P2P berbasis Braid
- Quiet: chat P2P menggunakan torDT
- Wiki
Bekerja bersama
- Ini adalah kelompok terbuka.
- Setiap dua minggu diadakan rapat umum melalui tautan Zoom.
- Mereka mendemokan perkembangan baru, membahas standar, dan mendiskusikan pendekatan untuk membangun web terdistribusi.
- Rapat sela untuk topik khusus juga secara berkala ditambahkan ke jadwal.
Cara membuat standar
- Pekerjaan dilakukan secara terbuka di IETF.
- Spesifikasi dibahas di mailing list Braid dan HTTP.
- Spesifikasi Braid dapat diedit di Github.
- Jika ada masalah, Anda dapat mengajukan issue di Github.
- Jika punya ide, Anda dapat menuliskannya ke spesifikasi dan mengajukan Pull Request.
- Setelah tercapai konsensus kasar, Pull Request akan diterima.
- Untuk mengikuti perkembangan terbaru diskusi standar, Anda dapat berlangganan mailing list dan membuka Github.
- Jika membutuhkan bantuan, Anda dapat mengirim email kepada Michael Toomim.
Protokol Braid
- Protokol Braid memungkinkan banyak algoritme sinkronisasi saling interoperasi melalui protokol jaringan bersama.
- Perangkat sinkronisasi masa kini menggunakan protokol yang berbeda-beda, tetapi pesan jaringannya membawa patch ruang melintasi versi waktu, posisi ruang, dan rentang waktu.
- Komposisi kumpulan patch membentuk struktur matematis yang disebut braid.
- Protokol Braid adalah format pesan standar agar semua perangkat sinkronisasi dapat mengekspresikan perubahan seiring waktu dan menyelesaikannya menjadi status yang konsisten.
- Demo interaktif untuk menjelajahi model data:
- Berinteraksi dengan braid
- Membuat braid acak
- Jika Anda tertarik pada sinkronisasi melalui HTTP, Anda dapat meninjau spesifikasi protokol dan memberikan masukan di mailing list.
Peta jalan protokol
- Saat ini, spesifikasi Braid memperluas HTTP ke dalam dua dimensi sinkronisasi:
- Level 0: HTTP masa kini
- Level 1: subscription dengan push update
- Level 2: konsistensi P2P (patch, version, merge)
- Selain itu, fitur P2P berikut sedang diprototipekan tetapi belum distandardisasi:
- Level 3: semantik P2P (method, validation, acknowledgement)
- Level 4: transport P2P (URL, naming, encryption, routing)
- Untuk penjelasannya, Anda dapat merujuk ke presentasi Mike di meeting-2.
- Kolaborasi disambut di keempat area tersebut.
Braid membuat perangkat sinkronisasi dapat saling beroperasi
- Rafie Walker menyinkronkan sistem OT dan CRDT menggunakan protokol Braid.
- Ada babelfish untuk websocket yang mengubah pesan jaringan ShareDB menjadi pesan Braid dan sebaliknya.
- Babelfish antara ShareDB dan Sync9:
- Dapat dicoba secara langsung.
- Terima kasih kepada Seph Gentle atas wawasannya tentang protokol ShareDB.
- Babelfish ini sebagian besar sudah selesai, tetapi tidak menangani kasus ketika dua perangkat sinkronisasi menyelesaikan konflik dengan urutan penyortiran yang berbeda.
- Untuk itu, merge type yang sama perlu diimplementasikan (lihat spesifikasi protokol).
- Desain babelfish untuk Automerge, sistem CRDT, juga telah mulai dikerjakan.
- Jika Anda memiliki perangkat sinkronisasi, Anda dapat bekerja sama untuk mengembangkan lapisan kompatibilitas Braid.
Mengapa disebut "Braid"?
- Braid menambahkan perjalanan waktu historis ke web, seperti video game Braid.
- Braid menjalin setiap helai World Wide Web sehingga web menjadi lebih tebal, kuat, dan tangguh.
- Braid merajut bersama berbagai sudut pandang tentang teknologi sinkronisasi dan terdistribusi dalam standar web.
- Braid adalah struktur matematis sekaligus struktur data komputer yang memuat informasi yang diperlukan oleh perangkat sinkronisasi.
- Dengan mengekspresikan pengeditan sebagai patch dalam braid, berbagai perangkat sinkronisasi dapat saling interoperasi.
Opini GN⁺
- Protokol Braid adalah alat yang kuat untuk menyatukan berbagai algoritme sinkronisasi dan dapat sangat membantu dalam menjaga konsistensi di sistem terdistribusi.
- Dukungan untuk CRDT dan OT akan sangat berguna bagi pengembang aplikasi kolaboratif.
- Ekstensi Braid-HTTP dapat dengan mudah diintegrasikan ke aplikasi web yang sudah ada, sehingga tidak akan menjadi hambatan besar bagi pengembang untuk mengadopsi teknologi baru.
- Pertemuan terbuka Braid mendorong partisipasi komunitas dan memberi kesempatan untuk membangun standar yang lebih baik dengan menghimpun beragam pandangan.
- Dukungan untuk berbagai bahasa memungkinkan pengembang menggunakan Braid dalam bahasa pilihan mereka, sehingga menciptakan lingkungan yang mendorong lebih banyak partisipasi pengembang.
1 komentar
Komentar Hacker News
Ringkasan kumpulan komentar Hacker News
Rilis pustaka
braid-textbaru akan segera hadirsimpleton, sehingga tidak ada overhead riwayat di sisi klien.Nomor versi tidak disertakan dalam URL
Lebih memilih menggunakan standar yang sudah ada daripada memperluas HTTP
PATCHmungkin lebih tepat daripadapartial PUT.Menguntungkan untuk infrastruktur terdistribusi
Kemungkinan menjadi tujuan event streaming yang lebih umum
Perbandingan dengan WebDAV
Pertanyaan tentang kegunaan
Tautan terkait
Apakah hanya untuk real-time
Karakteristik HTTP