- Braid, birlikte çalışabilir durum senkronizasyonu için algoritmalar, uygulamalar, araçlar ve standartlar geliştiren açık bir çalışma grubudur.
- Amaç, ağ tabanlı bilişim sistemleri genelinde dağıtık durumu yerel değişkenler kadar kolay okunup yazılabilir hale getirmektir.
- Her iki haftada bir yapılan açık toplantılarda uygulama ve sistem gereksinimleri tartışılır, ortak noktalar belirlenir ve paylaşılan protokoller üzerinde uzlaşma aranır.
Braid-HTTP: HTTP için senkronizasyon
- Braid-HTTP, HTTP'yi durum aktarımından durum senkronizasyonu protokolüne genelleştiren bir uzantıdır.
- HTTP'ye şu yetenekleri ekler:
- HTTP kaynakları için sürümleme
- GET istekleri için abonelik (Subscription)
- Range istekleri için PATCH
- OT veya CRDT davranışını tanımlayan Merge-Type
- Bu özellikler sayesinde web kaynakları birden çok istemci, sunucu ve proxy arasında otomatik olarak senkronize edilebilir; ayrıca birden fazla yazar, keyfi ağ gecikmeleri ve bölünmeleri altında bile tutarlılığı koruyarak eşzamanlı düzenleme yapabilir.
- Web uygulamaları, Braid uzantılarını kullanarak işbirlikçi düzenleme, sunucusuz çevrimdışı mod ve P2P ağ iletişimi sunabilir.
- Standart kütüphaneler sayesinde mevcut web uygulamaları ve tarayıcılara bu yetenekler kolayca eklenebilir.
- Daha fazla ayrıntı için IETF internet taslağına bakılabilir.
Braid protokolünü kullanmak
- Braid, bugünün web'iyle uyumludur, mevcut tarayıcılarda çalışır ve var olan web uygulamalarına kolayca eklenebilir.
- Çeşitli diller için kütüphaneler vardır:
- Javascript: braid-http, braid-protocol
- Haskell: wai-braid
- Lua: Paul Kulchenko tarafından geliştiriliyor
- Chrome'da Braid özellikleri, Braid-Chrome uzantısı kullanılarak etkinleştirilebilir.
Braid senkronizasyon modeli
- Protokol uygulamaları:
- braid-http
- braid-protocol
- wai-braid
- Tarayıcı uzantısı:
- Durum soyutlama kütüphaneleri:
- Braid-Text (metin için)
- Redwood
- Statebus
- Statecraft
- Algoritmalar:
- Diamond Types: dünyadaki en hızlı metin CRDT'si
- Antimatter: dünyadaki ilk history-pruning metin CRDT'si
- Sync9: metin ve JSON için CRDT+OT
- SyncX: Sync9
- Shelf: son derece basit ve kullanışlı bir JSON CRDT'si
- Diffsync: özyinelemeli üç yönlü birleştirme kullanan CRDT+OT
- Tiny-Merge: pratik CRDT'ler için iyi tasarlanmış bir kütüphane
- CR-SQLite: SQLite'ı çok kullanışlı bir CRDT'ye dönüştürür
- Portals: tüm OT veya CRDT'ler için kopyalama, taşıma ve wrap işlemleri
- Simpleton: tüm CRDT'ler için çok basit, hızlı ve hafif bir istemci
- Uyumluluk:
- Automerge uyumluluğu
- ShareDB ve Sync9 uyumluluğu
Uygulamalar
- Bu web sitesinin kendisi
- Peery View: Braid tabanlı bir P2P itibar sistemi
- Quiet: torDT kullanan P2P sohbet
- Wiki
Birlikte çalışmak
- Bu, açık bir gruptur.
- Her iki haftada bir Zoom bağlantısı üzerinden genel toplantı yapılır.
- Yeni ilerlemeler demo edilir, standartlar tartışılır ve dağıtık web inşasına yönelik yaklaşımlar ele alınır.
- Özel konular için ara toplantılar da düzenli olarak takvime eklenir.
Standartlar nasıl oluşturuluyor
- Çalışmalar IETF içinde açık şekilde yürütülür.
- Spesifikasyonlar Braid ve HTTP e-posta listelerinde tartışılır.
- Github üzerinden Braid spesifikasyonu düzenlenebilir.
- Bir sorun varsa Github'da issue açılabilir.
- Bir fikriniz varsa bunu spesifikasyona yazıp Pull Request gönderebilirsiniz.
- Genel uzlaşıya varıldığında Pull Request kabul edilir.
- Standart tartışmalarındaki gelişmeleri takip etmek için e-posta listesine abone olabilir ve Github'ı izleyebilirsiniz.
- Yardıma ihtiyaç varsa Michael Toomim'e e-posta gönderilebilir.
Braid protokolü
- Braid protokolü, birden çok senkronizasyon algoritmasının ortak bir ağ protokolü üzerinden birlikte çalışabilmesini sağlar.
- Günümüzün senkronizasyon araçları farklı protokoller kullansa da, ağ mesajları zaman içindeki sürümleri, uzaydaki konumları ve zaman aralıkları boyunca uzaydaki yamaları taşır.
- Yama kümelerinin birleşimi, braid adı verilen matematiksel bir yapı oluşturur.
- Braid protokolü, tüm senkronizasyon araçlarının zamandaki değişimi ifade edip bunu tutarlı bir duruma çözümleyebilmesi için standart bir mesaj biçimidir.
- Veri modelini keşfetmeye yönelik etkileşimli demolar:
- Braid ile etkileşime geçmek
- Rastgele braid oluşturmak
- HTTP üzerinden senkronizasyonla ilgileniyorsanız, protokol spesifikasyonunu inceleyip e-posta listesinde geri bildirim verebilirsiniz.
Protokol yol haritası
- Mevcut Braid spesifikasyonu, HTTP'yi iki senkronizasyon boyutunda genişletir:
- Seviye 0: bugünün HTTP'si
- Seviye 1: push update içeren abonelikler
- Seviye 2: P2P tutarlılığı (patch, version, merge)
- Ayrıca aşağıdaki P2P yeteneklerinin prototipleri hazırlanıyor, ancak bunlar henüz standartlaştırılmış değil:
- Seviye 3: P2P anlambilimi (metotlar, doğrulama, onay)
- Seviye 4: P2P taşıma (URL, adlandırma, şifreleme, yönlendirme)
- Açıklamalar için meeting-2'deki Mike sunumuna bakılabilir.
- Dört alanın tamamında işbirliği memnuniyetle karşılanır.
Braid, senkronizasyon araçlarını birlikte çalışabilir hale getirir
- Rafie Walker, Braid protokolünü kullanarak bir OT sistemi ile CRDT'yi senkronize ediyor.
- WebSocket üzerinde bir babel fish bulunuyor; bu sayede ShareDB'nin ağ mesajları Braid mesajlarına ve tersine dönüştürülebiliyor.
- ShareDB ile Sync9 arasındaki babel fish:
- Canlı olarak denenebilir.
- ShareDB protokolüne dair içgörüler sağlayan Seph Gentle'a teşekkürler.
- Bu babel fish büyük ölçüde tamamlanmış durumda, ancak iki senkronizasyon aracının çakışmaları farklı sıralama düzenlerinde çözmesi durumunu ele almıyor.
- Bunun için aynı merge type'ın uygulanması gerekiyor (bkz. protokol spesifikasyonu).
- Automerge gibi CRDT sistemleri için bir babel fish tasarımına da başlanmış durumda.
- Elinizde bir senkronizasyon aracı varsa, Braid uyumluluk katmanı geliştirmek için birlikte çalışabilirsiniz.
Neden "Braid"?
- Braid, Braid video oyunu gibi web'e tarihsel zaman yolculuğu ekler.
- World Wide Web'in her telini örerek web'i daha kalın, daha güçlü ve daha dayanıklı hale getirir.
- Web standartlarında senkronizasyon ve dağıtık teknolojilere ilişkin farklı bakış açılarını bir araya örer.
- Braid, senkronizasyon araçlarının ihtiyaç duyduğu bilgileri içeren hem matematiksel hem de bilgisayarda kullanılan bir veri yapısıdır.
- Düzenlemeleri braid'in yamaları olarak ifade ederek, birden çok senkronizasyon aracının birlikte çalışabilmesini sağlar.
GN⁺ görüşü
- Braid protokolü, farklı senkronizasyon algoritmalarını birleştirebilen güçlü bir araç ve dağıtık sistemlerde tutarlılığı korumada büyük fayda sağlayabilir.
- Hem CRDT hem de OT desteği sunması, işbirlikçi uygulama geliştirenler için oldukça faydalı olacaktır.
- Braid-HTTP uzantılarının mevcut web uygulamalarına kolayca entegre edilebilmesi, geliştiricilerin yeni teknolojileri benimsemesinin önünde büyük bir engel olmayacağını gösteriyor.
- Braid'in açık toplantıları, topluluk katılımını teşvik ediyor ve farklı görüşlerin toplanarak daha iyi standartlar oluşturulmasına fırsat veriyor.
- Çoklu dil desteği, geliştiricilerin Braid'i tercih ettikleri dilde kullanabilmesini sağlayarak daha fazla geliştiricinin katılımına uygun bir ortam oluşturuyor.
1 yorum
Hacker News görüşü
Hacker News yorumları derleme özeti
Yeni
braid-textkütüphanesi yakında çıkıyorsimpletonbirleştirme türünü kullandığı için istemci tarafında geçmiş ek yükü yok.URL'de sürüm numarası yer almıyor
HTTP genişletmek yerine mevcut standartları kullanma tercihi
partial PUTyerinePATCHkullanmak daha uygun olabilir.Dağıtık altyapı için avantajlı
Daha genel bir event streaming hedefi olasılığı
WebDAV ile karşılaştırma
Kullanım alanına dair soru
İlgili bağlantılar
Yalnızca gerçek zamanlı olup olmadığı
HTTP'nin doğası