§1Canlı oturum

Tek tuval, birçok imleç, sıfır yükleme

eğitim kaybı — canlıNormalleştirEğitSizEkip arkadaşı
taslak — canlı, paylaşımlıcommit · v3 · 8f2ac1
Şek. 1 — Canlı bir oturum: paylaşılan tek tuvalde iki imleç, canlı izlenen bir çalıştırma — ve altında disiplini taşıyan hat. Solda taslak: canlı, paylaşımlı, hâlâ hareket hâlinde. Sağda commit: içeriğiyle kimliklenen bir sürüm ve atıf verdiğiniz şey.

Bir oturum açtığınızda ekip arkadaşlarınız Studio'nun aynı tuvalinde beliriverir: adlandırılmış canlı imleçler, seçimler, her kişinin rolünü gösteren ve baktığı yere tek tıkla atlayabildiğiniz bir katılımcı listesi. Katılım bilgisi bilinçli olarak geçicidir — imleçler ve görünümler yayınlanır, asla saklanmaz, asla belgenin parçası olmaz. Geri alma bile kişiye özeldir: Cmd+Z sizin son düzenlemenizi geri alır, bir başkasınınkini asla.

Hattan geçen şey veri değil, koordinasyondur. Düzenlemeler, katılım bilgisi ve bir çalıştırmanın ilerleyişi oturumla taşınır; veri kümeleri, kimlik bilgileri ve hesaplamanın kendisi local-first ilkesinin koyduğu yerde — her cihazın kendisinde — kalır. Scellis'te birlikte çalışmayı farklı kılan tersine çevirme budur: bulut çalışma ortamını saran barındırılmış bir alan değil, katılımcıların zaten sahip olduğu makinelerin üzerinde ince bir koordinasyon katmanı.

§2Paylaşılan çalıştırmalar

Çalıştırmayı birlikte izleyin

NeDiğerlerine canlı mıSonrasında
Belge düzenlemeleridenetlenir, sıralanır, yayınlanırkalıcı — yerel kuyruk ve commit edilmiş sürümler
Katılım — imleç, seçim, görünümevet, geçiciatılır; asla saklanmaz
Çalıştırmanın ilerleyişi — eğriler, durumevet, canlı akaratılır; atıf commit edilmiş çalıştırmaya verilir
Notlar ve yorumlarevet, oturumda canlıbelgeyle birlikte gider — bir sonucun ne olduğunu değiştirmeden
Veri kümeleri · kimlik bilgileri · hesaplamaoturumdan asla geçmezher katılımcının cihazında kalır

Eksik olan, yapısal olarak eksiktir: oturumda ham veri ya da gizli anahtarlar için kanal yoktur — koordinatör iş akışınızı sıraya koyar, asla çalıştırmaz.

Eğitimi başlattığınızda oturumdaki herkes olanları izler: dolan kayıp eğrisi, çalıştırmanın ilerleyişi, güncellenen çıktı — çalıştıran kişinin kendi GPU'sundan herkese canlı akar. Sonradan katılan biri eğrinin tamamını ilk adımdan itibaren alır, asla bir parçasını değil. Kimin ne yapabileceği de rolleri izler: düzenleyiciler paylaşılan bir çalıştırmayı başlatabilir, duraklatabilir, iptal edebilir; izleyiciler ve yorumcular kontrolleri devre dışı ve gerekçesi yazılı biçimde izler. Sonrasında çalıştırma, geçmişiyle birlikte rafınıza düşer.

Dürüstlük mühendisliğin içindedir. İzleyen biri, biten bir çalıştırmayı ortadan kaybolan bir makineden her zaman ayırt edebilir: kalp atışı kesildiğinde eğri, ilerleme taklidi yapmak yerine koptu olarak işaretlenir. Ve burada olan yalnızca izlemektir — bir çalıştırmanın ilerleyişini paylaşmak, işin kendisini asla taşımaz. Hesaplamanın parçalarını eşlerin üstlenmesini istediğinizde bu, dağıtık hesaplamadır: kendi güven düzeyleri olan ayrı ve açık bir karardır.

§3Yalnızca uzlaşma değil

Her an geçerli bir program olan taslak

Düzenlemenizanında, yerelDenetlenirtipler · döngü yokAynı programher ekrandaprogramı bozacak bir düzenlemereddedilir — gerekçesiyle
Şek. 2 — Her düzenleme kabul edilmeden önce denetlenir. Programı bozacak olan gerekçesiyle reddedilir; geçen ise sırada tek bir yer alır ve her ekranda sonunda aynı program durur.

Bir iş akışı düzyazı değildir; tipli ve çalıştırılabilir bir çizgedir — ve bu, paylaşılan belgeler için alışılmış cevabı eler. Standart mekanizma, herkesin aynı anda yaptığı düzenlemelerin yakınsamasını garanti eder: sonunda hepiniz aynı dosyaya varırsınız. Ama döngü içeren ya da tipleri uyuşmayan bir bağlantı taşıyan bir programda buluşmak da yakınsamadır. Scellis bunun yerine denetler. Önerilen her düzenleme, çizgenin uyması gereken kurallara karşı sınanır — düzenlediğiniz şey hâlâ var mı, döngü oluşuyor mu, bağlantılar uyuyor mu, sürümler sabit mi — ve ancak ondan sonra sırada tek bir kanonik konum alıp herkese gider.

Kendi düzenlemenizin anında yerleştiğini görürsünüz; ardından kanonik sıranın üzerine yeniden uygulanır — tuval anında hissettirir, belge ise hiçbir zaman bozuk bir durumdan geçmez. Sunucunun sahip olduğu tek şey de bu sıradır: bir sürümün kimliğini, tek başına ve çevrimdışı commit eden biri birebir aynı şekilde hesaplar — canlı oturum düzenlemeleri sıraya koyar, asla gerçeğin kaynağı olmaz. Karakter karakter birleştirmenin hayatta kaldığı tek yer serbest metin alanlarıdır: düzyazı birleştirme ister, programlar geçerlilik.

§4Disiplin

Taslak üzerinde birlikte çalışırsınız; commit'e atıf verirsiniz

Canlı oturum birlikte düşünmek içindir ve bilinçli olarak geçicidir: taslağın akışkanlığı, imleçler, süren bir çalıştırmanın eğrisi — hiçbiri bir sürümün ne olduğuna dahil değildir. Commit, akışkan taslağın sabit bir referansa dönüştüğü andır; kimlik commit'te başlar ve bu yüzden bir makaledeki bağlantı, hâlâ hareket eden bir taslağa asla asılı kalamaz.

İki paylaşım bağlantısı türü bu ayrımı taşır. Oturum bağlantısı birini canlı uca alır: oturum açmış, rolüyle sınırlı, düzenleyebilir — hesabı olmayan bir ziyaretçi bile kime ait olduğu belli, kalıcı bir adla düzenler. Anlık görüntü bağlantısı ise donmuş baytları teslim eder: giriş yok, değişmez, bir makaleye güvenle konur. Hangi kapıyı açtığınız, hangi sözü verdiğinizi belirler — paylaşım ekip ölçeğinde yönetişim gerektirdiğinde ise roller ve politikalar Workspace'lerde durur.

§5Notlar ve tartışma

Tartışma doğrudan işin üzerinde geçer

Notlar düşüncenin geçtiği yere tutunur — bir bloğa, bir bağlantıya, tuvalin bir bölgesine ya da belgenin kendisine — piksel koordinatlarıyla değil, işaret ettikleri şeyle. Belgeyle birlikte gider, onunla sürümlenir, ama bir sürümün ne olduğunun dışında kalır: bir yorum, bir sonucun anlamını asla değiştirmez. Notun işaret ettiği şey sonradan silinirse not, rehberli yeniden tutturma sunan ayrık bir iğneye dönüşür — yazılan asla kaybolmaz. Yorum dizileri etiketleme ve “çözüldü” işareti taşır; canlı oturumda bir yorum, yazıldığı anda herkeste belirir.

Yayımladığınız her şey kamusal karşılığını da alır: herhangi bir okura açık, düzenleme yetkisi gerektirmeyen, hata bildirimi biçiminde bir tartışma — bir sorunla karşılaşan kişi onu, yazarın ve gelecekteki her kullanıcının göreceği yere yazar. Marketplace'i çift yönlü yapan şeylerden biri de budur. Oturumların, rollerin ve bağlantıların tam akışı canlı iş birliği rehberinde anlatılır.

§6Sunucu ortadan kalkarsa

Yalnız çalışma asla kırılmaz — şansla değil, tasarımla

DurumOturumİşiniz
Yalnız, sunucu kapalıkaybedilecek oturum yokher şey çalışır, çevrimdışı
Canlı oturum koordinatörü kaybedersıralama kontrollü biçimde duraklardüzenlemeye devam edersiniz; yerel kuyruk tutar
Çevrimdışı düzenlemeden sonra dönüşaçığı kapat, sonra yeniden uygulabasit çakışmalar, kime ait olduğu belli biçimde kendiliğinden çözülür
Gerçek bir yapısal çakışmagörünür biçimde yükseltilirrehberli üç yönlü birleştirme — asla sessiz üstüne yazma
Düzenlemeniz silinmiş bir şeyi hedefliyordüzenleme bir kenara alınırsahipsiz kalan düzenlemeler ayrı bir tepside toplanır; yeniden bağlamak için rehber eşlik eder — hiçbir şey kaybolmaz

Hata durumları tasarlanmış ve test edilmiş davranıştır, hata ekranı değil — her satır iş birliğinin verdiği sözün parçasıdır.

Canlı iş birliği, üstte duran bir katmandır; onu kaldırın, her şey yine çalışır. Bu bir yedek çözüm değil, mimarinin kuralıdır: her iş birliği özelliği, tamamen çalışan yalnız ve çevrimdışı bir deneyime inebilmelidir ve bunu otomatik bir denetim koruma altında tutar. Oturum koordinatörü bir önbellektir, gerçek değil — kalıcılık cihazınızın kendi kuyruğunda ve commit edilmiş sürümlerdedir — ve hesaplayan, yazan ve commit eden yolların dışında durduğu doğrulanabilir.

Canlı bir oturum koordinatörünü gerçekten kaybettiğinde davranış, rol yapmak değil kontrollü bir duraklamadır: herkes tam yerel kalıcılıkla düzenlemeye devam eder, paylaşılan sıralama durur, yeniden bağlananlar açığı kapatır. Basit çakışmalar, kime ait olduğu belli biçimde kendiliğinden çözülür; sert yapısal bir çakışma rehberli üç yönlü birleştirmeye taşınır — asla sessiz bir “son yazan kazanır”, asla kaybolan iş. Ücretli bir planın satın aldığı da tam olarak budur: barındırılan iş birliği kapasitesi bir hizmettir — hesaplama asla.