En Emacs usulü Bzr destanı
(thanosapollo.org)- 2008'de Emacs, CVS sonrasındaki aday olarak Git ve Bazaar'ı değerlendirdi; benchmark'larda Git ezici biçimde daha hızlıydı
- Richard Stallman, GNU paketi olduğu gerekçesiyle seçimin Bazaar olacağını kesinleştirdi ve teknik tartışmalar kararı değiştiremedi
- 2008~2012 arasında GitHub büyürken, Emacs katkıcıları Bazaar öğrenmek zorunda kaldı; Canonical ise 2012'de geliştirme ekibini işten çıkardı
- 2013'te Bazaar bakımının duraklaması ve ELPA branch hatası, tartışmayı yeniden alevlendirdi; ELPA sonunda Git'e taşındı
- 2014'te Eric S. Raymond'un dönüşüm çalışmasının ardından Emacs Git'e geçti, ancak hemen sonrasında çekirdek katkıcıların Git öğrenme sorunu ortaya çıktı
2008: Git hızlıydı ama Bazaar seçildi
- Mart 2008'de Emacs, CVS'ten daha modern bir sürüm kontrol aracına geçmek istedi ve adaylar Git ile Bazaar olarak daraltıldı
- Git, Linus Torvalds'ın Linux çekirdeği için yaptığı araçtı
- Bazaar, Canonical'ın bakımını üstlendiği bir GNU projesiydi
- emacs-devel üzerinde 236 mesajlık bir tartışma sürdü ve birçok geliştirici iki aracı benchmark etti
- Andreas Schwab,
bzr logkomutunun başlamasının 1 dakikadan uzun sürdüğünü söyleyerek bunu “tamamen kullanılamayacak kadar yavaş” diye nitelendirdi - David Kastrup,
git logneredeyse anında çalışırken Bazaar'ın dosya kopyalama·taşıma·yeniden adlandırma bilgilerini açıkça aldığı için teoride daha hızlı görünmesi gerektiğini düşündü
- Andreas Schwab,
- Gerçek sayılarda da Git üstünlüğü açıktı
git log | head -10.012 saniye sürerken, Bazaar'da aynı işlem 21.5 saniye sürüyordu- Tek dosya değişikliğini commit etmek Git'te 0.08 saniye, Bazaar'da 17 saniye sürüyordu
- O dönem baş bakımcı olan Stefan Monnier, Bazaar'ın Git'ten hızlı ya da yavaş olmasının asıl mesele olmadığını, ancak Emacs'in geçiş yapabilmesi için “yeterince hızlı” olması gerektiğini ve en azından
bzr diffkomutunun birkaç saniyeden uzun sürmemesi gerektiğini söyledi - Canonical'ın Bazaar geliştiricisi Jonathan Lange, ilk checkout için
wget,tar,bzr init-repo,bzr branch,bzr pull --rememberbirleşiminden oluşan bir prosedür önerdi- Bu prosedür,
git cloneile kıyaslanacak kadar uzun ve manueldi
- Bu prosedür,
GNU aracı kullanılması gerektiği yönündeki karar
- Birisi, Emacs bakımcılarına ve karar vericilerine “şu an için bzr'ın uygun araç olmadığına ikna olmak için daha hangi bilgiye ihtiyaç var?” diye sordu
- Richard Stallman, bunun o anlık bir karar değil uzun vadeli bir karar olduğunu ve geri çevrilmesi zor geçici bir karar almak yerine Bazaar geliştiricileri iyileştirme yapana kadar birkaç ay beklemenin daha iyi olacağını söyledi
- Stallman, ayrı bir mesajda “Bu soru bitmiştir ve karar verilmiştir. GNU Bzr kullanacağız. Çünkü bu bir GNU paketidir” diyerek noktayı koydu
- Teknik gerekçelerin siyasi bir kararla silinip süpürüldüğü eleştirisine karşı Stallman, GNU paketlerinin birbirini desteklemesi kuralının GNU sisteminin tamamını daha iyi çalıştırdığını söyledi
- “Git neden GNU sisteminin bir parçası yapılmıyor?” sorusuna ise, Git'in GNU sistemine dahil edilebileceğini ancak Git geliştiricilerinin onu GNU paketi yapmak isteme olasılığının düşük olduğunu düşündüğünü belirtti
- 2008'deki benchmark'lar, 236 mesaj ve Canonical çalışanının dolaylı prosedürü bile sonucu değiştirmedi; Emacs, GNU paketi olduğu gerekçesiyle Bazaar'ı seçti
2008~2012: Git'in yayılması ve Bazaar kullanım yükü
- 2008'de GitHub ortaya çıkıp hızla büyürken, Emacs katkıcıları yama gönderebilmek için başka yerde kullanmadıkları Bazaar'ı öğrenmek zorunda kaldı
- emacs-devel üzerinde Bazaar sorunlarını ele alan başlıklar tekrar tekrar ortaya çıktı
- “Help me unstick my bzr, please”
- “Can NOT bzr the emacs repos (may be bzr has a memory leak)”
- 2012'de Canonical, Bazaar geliştirme ekibini işten çıkardı
- Bundan sonra Bazaar'ın bakım durumu, Emacs geliştirme sürecinde daha büyük bir yük haline geldi
2013: Bakımın duraklaması ve Git'in yeniden tartışılması
- Mart 2013'te, Bazaar geliştirmesinin fiilen durmasından bir yıl sonra John Wiegley, Emacs'in Git'e geçip geçemeyeceğini yeniden sordu
- Bazaar geliştirmesi fiilen durma noktasındaydı
- ELPA deposu gibi Emacs geliştirmesini etkileyen önemli hatalar, bug tracker'da yıllarca çözülmeden kalmıştı
- Bu tartışmada da yaklaşık 200 mesaj yazıldı
- Stallman'ın ilk tepkisi, Bazaar bakımcılarının bazı hataları düzelttiği ve kendisinin de bir gün önce ELPA branch hatasının düzeltilmesini istediği, bu yüzden makul bir süre tanımak istediği yönündeydi
- Dmitry Gutov, söz konusu hatanın 1.5 yıllık bir hata olduğunu söyleyerek bunun çok geç olup olmadığını sordu
- Stallman, Bazaar'ın etkili biçimde bakımının yapılıp yapılmadığını anlamaya çalıştığını ve “Yes” cevabını almak istediğini açıkladı
- Joakim Verona, Bazaar topluluğunun çok yardımcı olduğunu ancak iyi bilinen çok sayıda hata ve yama bulunduğunu, bunların bazılarının Emacs geliştiricileri tarafından sağlanmasına rağmen yıllarca upstream'e alınmadığını söyledi
- Stallman, Bazaar mailing list'ini okuyacak zamanı olmadığını ve okuduğu tek geliştirme mailing list'inin emacs-devel olduğunu söyledi
- Bazaar kullanıcılarının Bazaar bakımının yeterliliği konusunda söz hakkı olup olmaması sorusuna ise, ilgili bilgileri dikkate aldığını ancak kullanıcılara “söz hakkı” vermenin uygun olmadığını düşündüğünü belirtti
Karl Fogel'in eleştirisi ve yetki devri sorunu
- Producing Open Source Software kitabının yazarı ve ilk Subversion geliştiricilerinden biri olan Karl Fogel, Stallman'ın karar verme biçimini ve yetki devri eksikliğini eleştirdi
- Fogel, Stallman'ın Bazaar'ın geliştirme durumunu yakından inceleyecek zamanı yoksa, Bazaar'ın hâlâ Emacs için iyi bir seçim olup olmadığını da yetkin biçimde değerlendiremeyeceğini düşündü
- Buna zaman ve zihinsel kapasite ayıramıyorsa, bunu Emacs bakımcılarına devretmesi gerektiğini savundu
- Fogel, tek bir kişiye tek bir hatayı sormanın bir projenin sağlığını ölçmek için vekil gösterge olamayacağını ve başlıktaki diğer kişilerin zaten daha kapsamlı araştırma yaptığını söyledi
- Stallman buna “çünkü Emacs'ten daha fazlası söz konusu” diye yanıt verdi
- Bir GNU amiral gemisi projesinin GNU aracını bırakmasının, diğer GNU paketlerine nasıl bir sinyal vereceği temel meseleydi
- Fogel, Stallman'ın ya Bazaar'ın bakım durumuna güvenecek kadar değerlendirme yapacak zamanı harcaması ya da bunu yapabilecek birine yetki devretmesi gerektiğini yeniden vurguladı
- Stallman ise yalnızca hâlihazırda bir planı olduğunu ve uygulamakta olduğunu söyledi; ayrıntı, takvim ya da yetki devri sunmadı
ELPA önce Git'e taşındı
- 2013'teki tartışmada Stefan Monnier, Bazaar'ı kullanmaya devam etmek ya da Git, Monotone, Darcs, Mercurial, OpenCM, Fossil gibi bir şeye geçmek arasında çok büyük bir ilgisi olmadığını söyledi
- Stefan için o anda önemli olan şey, ELPA branch'ini Bazaar'dan çıkarmaktı
- Çünkü Bazaar, ELPA branch'ini düzgün işleyemiyordu
- Leo Liu, GNU projelerinin çoğunun Bazaar kullanmadığına dikkat çekti
- Ona göre Bazaar hatalarını düzeltmek Bazaar için faydalı olabilir, ama GNU'nun geneli için zarar anlamına gelebilirdi
- Gönüllülerin boş zamanının %20'si Bazaar'la boğuşmaya gidiyorsa, bunun maliyeti GNU projelerine katılımı caydıracak kadar büyük olabilirdi
- Aynı yılın sonunda Stefan Monnier, Bazaar'da bozuk olan ELPA branch'ini Git'e taşıdı
- ELPA branch'inde checkout sırasında çakışma oluşturan bir hata vardı ve bunu düzeltecek kimse kalmamıştı
- Stefan, ELPA için Git, trunk için Bzr şeklindeki iki araçlı yapıyı sevmediğini ama başka çıkış yolu görmediğini söyledi
- Bu değişikliği Git ile Bazaar'ın artı-eksi tartışmasına ya da
trunk'ın Git'e taşınması tartışmasına dönüştürmemek gerektiğini özellikle belirtti
- ELPA Git'e taşınınca, “Git ELPA için yeterliyse trunk için de yeterli değil mi?” sorusunu doğuracak zemin oluştu
2014: Eric S. Raymond'un dönüşüm çalışması ve gerçek geçiş
- Ağustos 2014'te Eric S. Raymond, Emacs deposu için dönüşüm script'lerini hazırlamış durumdaydı
- Zor işlerin hepsinin bittiğini ve düğmeye basmadan önce yaklaşık 8 saatlik bir bildirimin yeterli olduğunu söyledi
- Gerçek geçiş Kasım 2014'te gerçekleşti
- 13 Kasım'da ESR, “Commits are open. Have at it.” diyen altı kelimelik bir mesaj gönderdi
- Bu geçiş bazıları tarafından heroic olarak tanımlandı
- 2008'deki 236 mesaj, 2013'teki 200 mesaj, Stefan'ın bakımı, tekrarlanan Bazaar sorunları ve ölü bir sürüm kontrol sisteminin ardından Emacs sonunda Git'e geçti
Geçişten sonra: çekirdek katkıcılar da Git'i yeni öğrenmek zorunda kaldı
- Geçişten hemen sonraki birkaç gün içinde, önemli sayıda çekirdek katkıcının daha önce hiç Git kullanmadığı ortaya çıktı
- emacs-devel üzerinde Git kullanımını soran başlıklar peş peşe geldi
- “This Is The Git Help Mailing List”
- “git pull fails with merge conflicts. How can this possibly happen?”
- “A simple git workflow for the rest of us”
- “need help adjusting workflow to git”
- “Good book on Git”
- “Obscure error/warning/information message from git pull” başlığı 124 mesaj sürdü
- Uzun yıllardır önemli bir metin editörü geliştiren kişilerin temel Git soruları sormasının arka planında, dünyanın geri kalanı Git'e geçerken Emacs'in Bazaar'da kaldığı dönem vardı
1 yorum
Lobste.rs yorumları
rms’in yönettiği bir projede çalışırsanız gerçekten aklınızı kaçıracakmışsınız gibi hissettiriyor
Gerçekten müthiş bir tarihçe. Uzun zaman önce bir üniversitede Mark Shuttleworth’ün orijinal Bazaar’ı anlattığı bir sunum izlemiştim; dağıtık sürüm kontrol sistemi fikri gerçekten çok ilginç gelmişti
Sonrasında bzr’nin yeniden yazılmış sürümü çıktı ve tamamen içine çekildim. Git’ten çok daha mantıklı geldiğini düşünüyordum; yıllarımı projeye verip e-posta listelerinde aktif oldum, eklentiler yazdım, hatta kod farkı karşılaştırma algoritmasını daha hızlı olsun diye C ile yeniden yazmaya bile çalıştım
Sonunda kazananın Git olduğu açıkça ortaya çıktı ama bunu kabullenmem epey uzun sürdü
Bu özete göre Richard Stallman, 2013’e kadar bile Emacs projesinin Git’e geçmesini yasaklamış. Sonrasında Emacs’in 2013 sonu ve 2014 sonunda iki aşamada Git’e taşındığı söyleniyor ama 2013 başından sonra Stallman’dan hiç bahsedilmiyor
Yıllarca Bazaar’ı savunduysa, sonrasındaki e-posta zincirlerinde gerçekten hiç karşı çıkmadı mı? Yoksa bu arada Emacs projesi üzerindeki yetkisini mi kaybetti?
Yazıda bağlantı verilen 2014 başlığında adını taşıyan bir e-posta görmedim ama bağlantısı verilmeyen başka başlıklar olmuş olabilir. Tartışmalar yüzünden Stallman’ın bir yerden istifa ettiği bir dönem miydi diye düşündüm ama değilmiş; başka bir şeyi hatırlıyormuşum. Wikipedia’ya göre Stallman, 2019’da Free Software Foundation’dan ayrıldı ve GNU Project’ten de ayrılmış değildi
Hangi projenin resmî bir GNU projesi olduğunu tam olarak bilmiyorum. Lisans yüzünden mi? Git ve Linux ikisi de GPLv2-only, Bazaar ise GPLv2+. Telif hakkı devri yüzünden mi? Depo, issue tracker, e-posta listesi gibi şeylerin barındırılması yüzünden mi? Destek gibi işleyen “GNU” öneki taşıyan isim yüzünden mi?
Bir yerde önemli bir ayrım olduğu açık ama bunun ne olduğu ve neden önemli olduğu konusunda emin değilim
Bir de tekrarlanan bir bir eksik hatası var:
2014 civarında mysql üzerinde bir şey yapmaya çalışmıştım ama depoyu klonlayıp release branch’i checkout etmek için bütün gün uğraşıp başarısız olunca vazgeçmiştim; artık bu çok daha az utanç verici geliyor
Ondan önce CVS, Subversion ve Mercurial’ı yıllarca kullanmış olduğum için sorunun ağda ya da benim bilgisayarımda olduğunu sanmıştım. Bu yazıyı okuyana kadar bzr’nin gerçek benchmark’larının bu kadar korkunç olduğunu ya da Canonical bzr’yi bu kadar kullanmasına rağmen bzr ekibini çoktan işten çıkarmış olduğunu bilmiyordum
Birkaç yıl sonra mysql’de başka bir iş yapmak için gittiğimde Git’e geçmişlerdi ve daha başlamadan önüme duvar çıkmadığı için gerçekten ilginç işler yapabildim
Harika bir yazı. Bu tür e-posta listesi dramalarının nasıl geliştiğini hep görmek istemiştim ama bizzat içine atlayacak cesaretim olmamıştı. Hikâye kurgusu ve seçilen alıntılar gerçekten çok iyi
Karmaşık tarihi eğlenceli biçimde toparlamış. Yine de başlığın “The Most Emacs Bzr Saga” yerine “The Most Bzr Emacs Saga” olması daha doğru değil mi diye düşündüm
“Emacs”i sıfat gibi kullanmak tamamen görülmemiş bir şey değil ama yine de biraz tuhaf duruyor
Bazaar, benim kullandığım ilk sürüm kontrol sistemiydi. O dönemde Ubuntu ile Linux’a yeni giriyordum ve Canonical, kaynak kodu barındırmak için Launchpad kullanıyordu
Ondan önce kodumu hiçbir yere yüklemiyordum ama Launchpad ve Bazaar kullanınca epey havalı görünmüştü. Tabii projelerim o kadar küçüktü ki herhangi bir performans sorunu hiç fark etmedim