- Rust ile yazılmış yeni sürüm kontrol sistemi jj, mevcut Git’in sınırlamalarını tamamlayan ve kademeli olarak benimsenebilen bir yapıya sahip bir araçtır
- Yazar, geçmişte Rust’ın büyüme potansiyelini analiz etmiş olma deneyimine dayanarak, jj’nin de ürün-pazar uyumu, uzman ekip ve kullanıcı tabanı açısından benzer bir potansiyele sahip olduğunu değerlendiriyor
- jj, Git depolarıyla uyumlu kalırken daha basit bir iş akışı sunuyor; özellikle Git’in iç yapısına aşina olmayan geliştiriciler için erişilebilirliği yüksek
- Google ve Oxide gibi yerlerde gerçek kullanım yayılıyor; tutkulu bir topluluk ve kendini adamış bir geliştirme ekibi oluşuyor
- Yazar, jj tabanlı bir iş birliği platformu geliştiren ERSC'ye katılarak, Rust’ın ilk dönemlerindeki gibi jj ekosisteminin büyümesine doğrudan katkı sağlamayı planlıyor
Rust’ı seçme nedeni
- Yazar, 2012 Noel’inde Hacker News’te “Rust 0.5 released” haberini görüp bu dile ilgi duymaya başlıyor
- O dönemde Ruby on Rails geliştiricisiydi, ancak üniversite yıllarından beri derleyiciler ve sistem programlama ile ilgileniyordu
- Rust’ın başarılı olma ihtimalini değerlendirirken üç unsuru dikkate alıyor: ürün-pazar uyumu, geliştirme ekibi, kullanıcı tabanı
- C/C++’ın yerini alabilecek güvenilir bir dil yoktu ve Rust, çöp toplayıcı olmadan bellek güvenliği sunan yenilikçi bir yaklaşım ortaya koyuyordu
- Mozilla’nın sponsorluğu ve Rust’ı Firefox’a dahil etme planı olduğu için, gerçek kullanım tabanı edinme ihtimalinin yüksek olduğunu düşünüyordu
- Rust topluluğunun nazik ve iş birliğine açık atmosferi de önemli bir çekim unsuru oldu
- Daha sonra yazar, “Rust for Rubyists” eğitimini yazdı ve resmî belgelerin ortak yazarlarından biri oldu
jj’nin ortaya çıkışı
- jj (Jujutsu), bir programlama dili değil, Rust ile uygulanmış yeni bir sürüm kontrol sistemi (VCS)
- Git ile uyumlu ve mevcut depoları olduğu gibi kullanarak kademeli biçimde benimsenebiliyor
- Yazar, teknik zevkleri benzer olan geliştirici Rain’in tavsiyesiyle jj’yi keşfetmeye başlıyor
- Rain, Meta’nın kaynak yönetimi ekibinden geliyor ve onun tavsiyesi güvenilir bir sinyal olarak görülüyor
- Hafta sonunda jj’yi bizzat deneyerek bir eğitim yazısı projesi başlatıyor
- Rust öğrenirken yaptığı gibi, yazarak kavramları düzenleme yaklaşımını benimsiyor
- Sonuç olarak bu eğitim topluluk içinde olumlu karşılık buluyor
jj’nin geleceğine dair görünüm
- Yazar, jj’de Rust’ın ilk dönemlerine benzer bir büyüme deseni görüyor
- Ürün-pazar uyumu, ekip yetkinliği ve kullanıcı yayılımı ihtimali açısından tablo olumlu
- Ürün-pazar uyumu açısından Git mutlak üstünlüğe sahip olsa da, jj Git depolarını olduğu gibi işleyebildiği için kısmi benimseme mümkün
- Oxide içinde de kullanım Rain ile başlayıp yayılıyor; hatta özel bir kanal açılacak kadar ilgi görüyor
- Google içinde de jj kullanılıyor; bu, Mozilla’nın Rust’ı benimsemesine benzer bir sinyal olarak yorumlanıyor
- Google’ın büyük monorepo’sunda (Piper backend tabanlı) da bazı projeler jj kullanıyor; bu da sosyal kanıt (social proof) işlevi görüyor
- Bir öğrenme eğrisi var, ancak Git’in iç yapısına aşina olmayan kullanıcılar için aksine daha sezgisel ve daha basit bir kullanım deneyimi sunuyor
- Git uzmanlarının yeni kavramlara uyum sağlaması gerekirken, genel geliştiriciler hızlıca alışıyor
- jj topluluğu tutkulu ve samimi bir atmosferle büyüyor; bu da Rust’ın ilk dönem topluluğunu hatırlatıyor
jj ekibi ve topluluğu
- Kurucu Martin, uzun süredir jj geliştirmeye kendini adamış durumda; yakın zamanda da kişisel hesaptan resmî organizasyon hesabına geçiş yaparak yönetişim yapısını düzenledi
- Ekip üyeleri, kaynak kontrol araçları geliştirme deneyimi yüksek uzmanlar; teknik yön ve kalite yönetimi konusunda güçlüler
- Topluluk, aktif geri bildirim ve iş birliğiyle hızla büyüyor; erken dönem Rust topluluğunun olumlu enerjisini yeniden üretiyor
Yeni meydan okuma: ERSC’ye katılım
- Yazar, Oxide’dan ayrılıp jj tabanlı bir iş birliği platformu geliştiren startup ERSC’ye katılmaya karar veriyor
- Oxide harika bir iş yeriydi, ancak jj ekosistemine daha derinden katılma arzusu belirleyici etken oldu
- ERSC, jj üzerinde bir geliştirici iş birliği platformu kurmayı planlıyor; GitHub’ın Logical Awesome adlı tüzel kişilikle yola çıkmış olması örneğini anarak benzer bir erken aşamayı açıklıyor
- Yazar, Oxide’daki işlerini tamamladıktan sonra biraz dinlenip ardından jj topluluğu faaliyetlerine ve eğitimi tamamlamaya odaklanmayı planlıyor
- Discord’daki faaliyetlerini artıracağını, blog yazı dizisi yayımlayacağını ve topluluğa katkı sunacağını belirtiyor
- 2025’i yeni bir dönüm noktası olarak değerlendiriyor ve gerçekten tutkuyla bağlı olduğu bir projeye yönelebilme fırsatı için minnettarlığını ifade ediyor
Sonuç
- Yazar, jj’nin Rust’ın büyüme rotasını yeniden üretebilecek potansiyele sahip olduğuna inanıyor
- Bunun dayanakları Git ile uyumluluk, kademeli benimseme imkânı, kendini adamış ekip ve canlı topluluk
- jj, yalnızca basit bir araç olmanın ötesinde, geliştirici iş birliği biçimini dönüştürebilecek bir platforma dönüşme potansiyeli gösteriyor
- Rust ile başlayan yazarın yolculuğu artık jj ile birlikte yeni bir bölüme giriyor
2 yorum
Bu daha önce birkaç kez çıkmıştı ama bir kez bakmak gerekecek gibi.
Hacker News görüşleri
jj'yi yaklaşık iki kez ciddi ciddi denedim. birinci sınıf conflict kavramı havalı ama pratikte staging/commit işlemlerini çatışma çözümünden çok daha sık yapıyorsunuz. magit'ten geldiğim için jj'nin hunk bölme ve seçme özellikleri bana çok kullanışsız geldi. Ben sık sık rebase yapıyorum, bu yüzden magit'in rebase kısayollarıyla zaten jj'nin avantajlarının çoğunu kullanıyordum. Benim gibi biri için jj'nin magit'i geçmesi, hunk seçimi UX'inin çok daha fazla iyileşmesine bağlı
Git'in alternatiflerini her gördüğümde biraz Luddite duygusu hissediyorum. Zaten çok fazla dil, framework ve araç var. En azından VCS tarafında Git gibi neredeyse evrensel bir çözümümüz olması iyi bir şey. jj bazı sorunları çözebilir ama sektörün iki sistemi birden desteklemek zorunda kalmasının getireceği yük düşünülünce net bir kazanç olmayabilir
git-svnile Git kullanmıştım. jj de benzer bir yaklaşım izliyor gibi. jj'yi bilmeseniz bile mevcut CI ya da araçlar olduğu gibi çalışıyorjj'yi denedim ama ben Sublime Merge'e alışığım. CLI ile sürüm kontrolü yaparken tekrar eden girişler çok oluyor ve durumu gözden kaçırmak kolay. GUI'de durum hep görünür oluyor ve tek tıkla diff'e ya da commit mesajı girişine geçilebiliyor. Klavyeyle hunk seçmek bir daha yapmak istemediğim bir şey. SM gerçekten çok rahat. Keşke jj GUI'si gelişse ya da SM'e jj entegrasyonu gelse
Asıl haber, insanların “jjhub” gibi şeyler yapmaya başlaması (ersc.io)
Google içinde jj'nin yayıldığı söyleniyor ama Google'ın dahili VCS'sini düzenli aralıklarla değiştirme gibi bir eğilimi var. 7 yıl içinde git wrapper, mercurial uzantıları ve şimdi de jj arasında geçiş yaptılar
jj'nin büyük binary dosyaları git'ten daha iyi yönetip yönetmediğini merak ediyorum. Oyun geliştirme tarafında Perforce hâlâ kral. git, LFS olsa bile yeterli değil
Yaklaşık bir gün boyunca Jujutsu tutorial'ını takip ettim ve oldukça iyi buldum. Ama yine de sanki eksik bir puzzle parçası varmış gibi geldi. Mesela GitHub'a PR açarken change id'nin gerçekten işe yarayıp yaramadığını merak ettim. Muhtemelen asıl değerini sadece Google içindeki Piper backend'de gösteriyor. ERSC'nin planlarını merak ediyorum. Benim kişisel isteğim, çevrimdışı code review'yu içine alan dağıtık bir workflow
change-idbaşlığı bulunuyor; bu sayede GitHub jj'yi bilmese bile jj kullanıcıları kendi aralarında rebase takibi yapabiliyor.git cat-file -p HEADile görülebilirKişisel projelerimde jj'yi 1-2 aydır kullanıyorum ve oldukça memnunum. Yalnız eski revision'ları düzenlerken
.gitignore'a yeni eklenen dosyalar yanlışlıkla dahil olabiliyor. Onun dışında iyi. Yine de şimdilik Git bilgim çok daha fazla, bu yüzden şirkette de yavaş yavaş kullanmaya başlayacağımBu yıl Sapling/Subversion şirketine katıldım ama jj'yi hâlâ denemedim. Yine de Sapling çok daha sezgisel ve commit stack'leri branch'lerden daha kolay anlaşılıyor. Tabii Meta'nın review UI'ı gibi destekler olmadan nasıl olur merak ediyorum. Böyle projelere kesinlikle ihtiyaç var
Adı ne olursa olsun, East River Source Control gerçekten harika bir isim