Bun’ın Rust ile yeniden yazılması hakkındaki düşüncelerim
(andrewkelley.me)- Zig’in yaratıcısı Andrew Kelley, Bun’ın Rust ile yeniden yazılmasını dil özelliklerinin kazananı-kaybedeni meselesinden çok Zig Software Foundation (ZSF) ile Bun/Oven arasındaki ilişkinin çöküşünü ortaya koyan bir olay olarak yorumluyor
- İlk dönem Bun, performans başarısının temelinde Zig’i kabul etmiş ve ZSF’ye yılda 60.000 $ tutarında bağış yapmıştı; ancak VC destekli bir startup olduktan sonra organizasyon işleyişi ve kod kalitesi etrafındaki memnuniyetsizlik büyüdü
- ZSF, Bun kod tabanında hacky implementasyonlar, assertion’ların aşırı kullanımı, hızlı özellik eklemeye kıyasla yetersiz hata ve teknik borç temizliği konusunda endişeliydi; Bun’ın Zig’in temsilî örneği gibi görünmesi de bir yük olarak görülüyordu
- Kelley, Bun’ın Rust’a geçiş yazısının hata azalmasını stil rehberi vs. dil özellikleri çerçevesine soktuğunu eleştiriyor; asıl meselenin hataları gidermeye ayrılan mühendislik zamanı ve kod kalitesi yönetimi olduğunu düşünüyor
- ZSF, Bun’ın bağışları için minnettar; ancak Anthropic satın alımından sonra bağışlar ve ilişki sona erdi, Rust ile yeniden yazım sayesinde Zig ile Bun’ın ticari çıkarlarının ayrışmasını olumlu karşılıyor
Bun ve Zig’in ilk dönem ilişkisi
- Jarred yaklaşık 5 yıl önce Zig topluluğuna katıldı; Kelley onu hızlı deneyen, çok öğrenen ve güçlü bir “beginner energy” taşıyan biri olarak gördü
- Bun bir JavaScript toolchain’i olarak dikkat çekince Zig’e yönelik ilgi de artmaya başladı
- Kelley, Jarred’ın yalnızca crowdfunding ile bile San Francisco standartlarında istikrarlı bir gelir elde edebileceğini düşünüyor; ancak Thiel Fellowship tarzı düşünceyi ve Silicon Valley yaklaşımını benimseyerek venture capital yolunu seçtiğini düşünüyor
- İlk dönem Bun, Zig projesine dostane yaklaşıyordu
- Bun web sitesinde performans başarılarında Zig’in payını teslim ediyordu
- Zig Software Foundation için yılda 60.000 $ tutarında aylık bağış ayarlamıştı
- Bun’ın Rust ile yeniden yazım yazısında da Zig projesine yönelik teşekkürlerin samimi göründüğünü değerlendiriyor
VC destekli startup olduktan sonraki çatlaklar
- Bun VC destekli bir startup olduktan sonra Jarred, toplulukla birlikte açık kaynağı büyüten bir geliştiriciden çok işletme yöneticisine yaklaştı
- Oven’ın işe alım mesajı, ilk yaklaşık 9 ay boyunca yoğun bir çalışma temposu öngörüyor ve work-life balance “çalışılmayan çok zaman olması” anlamına geliyorsa uygun olmayabileceğini belirtiyordu
- Kelley, Oven mülakat adayları ve çalışanlarıyla konuşurken Jarred’ın yönetici rolüne dair olumsuz mesajları tekrar tekrar duyduğunu söylüyor
- Sorun olarak anılan başlıklar iletişim eksikliği, gerçekçi olmayan beklentiler, düşük empati ve deneyim eksikliğiydi
- Bunun sonucunda Zig ile çalışmak isteyen topluluk üyeleri Oven ve Bun’dan uzak durmaya başladı
- Jarred üretkenliğe ve startup exit stratejisine odaklandıkça, Kelley’nin Zig için uzun vadeli vizyonundan uzaklaştı
- Örneğin Jarred, Language Server Protocol implementasyonu ve VSCode entegrasyonuna öncelik verilmesini istedi; ancak Kelley’nin daha büyük planları vardı
ZSF’nin gördüğü Bun kod kalitesi sorunları
- Kelley’nin işaret ettiği temel sorun kod kalitesi
- Zig ekibi kullanıcı projelerinin kaynak kodunu okuyor, dil değişikliklerinin kullanıcıları nasıl etkileyeceğini kontrol ediyor, değişikliklerin yol açtığı kırılmaları ve performans regresyonlarını test ediyor
- Bun kod tabanında ZSF’nin endişe duyduğu programlama pratikleri arttı
- Hacky implementasyonlar birikmeye devam etti
- assertion’ların aşırı kullanımı vardı
- Özellikleri hızlı eklemeye kıyasla düşünme, hata giderme ve teknik borcu azaltma için ayrılan zaman azdı
- Kelley, Bun’ın bu yaklaşımının Zig’e yönelik memory safety eleştirileriyle birleşebileceğinden endişelendi ve Zig projesiyle sosyal mesafe koymak istedi
- ZSF, Bun’ı daha iyi programlama pratiklerine yönlendirmeye çalıştı ama etkili olamadı
Anthropic satın alımı ve Rust ile yeniden yazım
- ZSF içinde Bun’ın net liability’ye yakın olduğu yönünde bir kanaat oluştu
- Bun’ın Zig’in temsilî örneği gibi görünmesi, fakat gerçekte “Zig kodu böyle yazılmamalı” örneğine daha yakın olması bir yüktü
- Kelley, Bun’ın “bir tür cloud ürünü satma” iş planını en başından zayıf görüyordu; bir gün satılırsa Zig’in de dolaylı olarak olumsuz tanıtım alabileceğini düşünüyordu
- Anthropic satın alımından sonra ZSF rahatladı
- Bağış sessizce durdu ve ZSF bunu bekliyordu
- Bun tarafı aylık toplantıyı ne iptal etti ne de toplantıya katıldı; ilişki bitmiş kabul edildi
- ZSF, birkaç gün içinde Rust ile yeniden yazımın geleceğinden şüpheleniyordu ve bunu destekliyordu
- Anthropic satın alımından sonra Claude’un Bun ile, Bun’ın da Zig ile yazılmış olması şeklindeki dolaylı bağlantı bile Zig topluluğu üzerinde yük oluşturdu
- drive-by slop contributions arttı
- LLM çıktısını forum yazılarına yapıştıran yapay zeka meraklıları içeri doldu
- Kelley, Zig’in yapay zekayla bağlantılı bir programlama dili olarak tanınmasından endişe etti
- Jarred Rust ile yeniden yazımı duyurduğunda Kelley bunu çok olumlu karşıladı ve artık “benim sorunum değil” hissini ifade etti
Bun’ın Rust ile yeniden yazım yazısına yanıt
- Kelley, Bun’ın Rust ile yeniden yazım yazısının iyi yazıldığını düşünmekle birlikte birkaç temel soruna dikkat çekiyor
-
Hata azalmasının özü
- Bun yazısı, hatalardan kaçınmak için stil rehberi ile programlama dili özellikleri arasında seçim yapmak gerekiyormuş gibi bir çerçeve kuruyor
- Kelley’ye göre hata gidermenin başlıca yolu, hataları bulup ortadan kaldırmak için mühendislik kaynağı ayırmak
- TigerBeetle’ın zaman ayırarak hataları bulup giderdiğini ve ZSF ile sağlıklı bir ilişki sürdürdüğünü, Bun’ın ise ikisini de yapmadığını düşünüyor
-
Test suite konusundaki çelişki
- Bun yazısının, 1 milyon satır incelenmemiş kodun deploy edilebilmesinin nedeni olarak test suite’in yeterli olmasını gösterdiğini düşünüyor
- Kelley, öyleyse Zig kodunda neden can sıkıcı hatalar olduğunu; test suite’in Zig kodundaki hataları yakalayamayıp 1 milyon satır incelenmemiş koddaki hataları yakalayıp yakalayamayacağını soruyor
-
Performans ve LTO
- Bun yazısı performans artışını LTO’ya bağlıyor; ancak Kelley’ye göre Zig, Bun’ın tüm yaşamı boyunca LTO’yu destekliyordu
- Zig geçmişte LTO’yu varsayılan olarak etkinleştirmişti, fakat LLVM bug’ları çok fazla olduğu için varsayılandan çıkardı; bu bug’lar Rust’ı da etkiliyor
- Kelley, ZSF’nin büyük olasılıkla LTO’nun etkinleştirilmesini önerdiğini ve Bun’ın dinlemediğini düşünüyor
-
fuzzing
- Bun yazısı, Zig kodu üzerinde özenli fuzzing yapılmış gibi ima ediyor; ancak Kelley, bir görüşmede Bun ekibinin hiçbir şeyi fuzz etmediğini söylediğini belirtiyor
-
Binary boyutu ve
comptime- Bun yazısı, binary boyutunu azaltmaya yönelik çeşitli mühendislik çalışmalarını Rust ile yeniden yazımın gerekçesi gibi sunuyor; Kelley ise bu çalışmaların yeniden yazımın kendisiyle ilgisiz olduğunu düşünüyor
- Bunlar, en başından Zig kod tabanında yapılması gereken mühendislik çalışmalarına daha yakın
- ZSF yıllarca Bun’ın
comptimeaşırı kullanımına karşı uyarıda bulundu;comptime/inlinekullanımını ve derleme sürelerini denetleyebilmek için time report özelliğini de geliştirdi
-
Derleme hızı
- Kelley, Bun yazısının derleme hızından bahsetmediğine dikkat çekiyor
- Zig compiler projesi yaklaşık 600.000 satır ve yeniden yazım öncesi Bun ile benzer ölçekte
- Kelley’nin ölçümünde temiz cache ile sıfırdan build etmek 16 saniye, incremental compilation etkinleştirildikten sonra sonraki her düzenleme 90 ms sürüyor
- Rust ile yeniden yazımdan sonra Bun’ın karşılık gelen ölçümlerinin ne olduğunu soruyor
Kelley’nin sonucu
- Kelley’ye göre temel mesele programlama dili özellikleri değil, ilişkinin çöküşü
- ZSF, Bun’dan aldığı bağışlar için içtenlikle minnettar ve bu parayı Zig katkıcılarını ödüllendirmek için kullandı
- Kelley, Jarred’ı kişisel olarak kötü niyetle eleştirmediğinin altını çiziyor
- Jarred’ın kendisinden farklı zevkleri ve yaşam hedefleri var; ancak istediği hayatı başarıyla kurduğunu düşünüyor
- Jarred’ın mutlu ve başarılı olduğunu kabul ediyor ve ona karşı kötü niyet taşımadığını söylüyor
- Yine de Kelley, ZSF ile Bun’ın ticari çıkarlarının artık iç içe geçmemesinden memnun
- Rust ile yeniden yazımın iyi mi kötü mü olduğuna dair, dil seçimi ölçütleri üzerinden yürüyen kamusal tartışma sona erdiğinde iki taraf arasındaki etkileşimin de biteceğini düşünüyor
2 yorum
Yazıyı okuyunca ne
zigne debunkullanmak istiyorum.Hacker News yorumları
Andrew’un kodunu okurken gerçekten çok şey öğrendim ve kendisinin de yazdığı gibi, Zig olmasaydı Bun da olmazdı
Yazıdaki “Zig kodunu fuzz ettiklerini iddia ediyorlar ama görüşmede Bun ekibinin tamamı hiçbir şeyi fuzz etmediklerini söyledi. Bu apaçık bir çarpıtma gibi görünüyor” kısmına karşılık, bir Fuzzilli entegrasyon PR’ı var: https://github.com/oven-sh/bun/pull/24826
Fuzzilli’nin Bun’un Zig kodunda bulduğu sorunları düzelten merge edilmiş PR’lar da var: https://github.com/oven-sh/bun/pull/28926, https://github.com/oven-sh/bun/pull/28934, https://github.com/oven-sh/bun/pull/29255, https://github.com/oven-sh/bun/pull/29210, https://github.com/oven-sh/bun/pull/29199
“Fuzzilli” diye aratınca daha fazla PR çıkıyor: https://github.com/search?q=repo%3Aoven-sh%2Fbun+is%3Apr+Fuz...
zig build test --fuzz, yani Zig’in yerleşik fuzzer’ıydı; onun kapsamındaki araç buyduİkisinden de fanatikçe yana değilim; sadece tüm konuşmanın daha iyiye gitmek yerine kötüleşiyor gibi görünmesi dikkatimi çekiyor
Sadece doğrulama sorusu sorduğum için eksi oy almak epey düşündürücü. Belki de cevap basittir, mesela “yakın zamana kadar fuzzer kullanmıyorduk, o yüzden ikiniz de haklısınız” gibi; bilmiyorum diye soruyorum
Bu yazı Zig için profesyonellikten uzak ve utanç verici
Jarred hakkında pek bir şey bilmiyorum ama dün okuduğum yazısı Zig’e karşı minnettar bir tondaydı ve şimdi görüyorum ki Zig’e hatırı sayılır miktarda da bağış yapmış
Bu yazının tamamı, başka bir ürün seçtiği için ona açıkça ve kişisel düzeyde saldırıyor
Andrew bunun Zig’i aklayacağını düşünüyorsa tuhaf; pratikte sadece onu çocukça gösteriyor. Ya da belki de sadece Jarred’a saldırmak istiyordur, bilmiyorum
Herkes yürüyen bir marka mı olmak zorunda; sürekli sözlerini filtreleyip diken üstünde mi durmalı, “profesyonel” görünmek için kurumsal ifadelerin arkasına mı saklanmalı?
Dünyanın şu anda daha az dürüst söyleme değil daha çok dürüst söyleme ihtiyacı var ve çevrimiçi etkileşimler giderek daha az samimi hale geliyor gibi
Zig fiilen tek kişilik bir projeye yakın ve o tek kişi giderek daha istikrarsız kararlar alıyor
Elbette bu onun projesi ve hakkı ama değeri milyarlarca dolara yaklaşan bir şirketseniz böyle bir tedarik zinciri riski almak istemezsiniz
Anthropic açısından bakınca, Zig ekosistemine daha fazla yatırım yapmak yerine, pek de BDFL olmayan kişinin çizgiyi aşma riskinin görünür hale geldiği anda işi kökünden kesmek daha mantıklı
Buna karşılık Zig’in test kapsamı, benimsenme düzeyi ve geliştirme süresi düşünülünce utandıracak kadar düşük
Zig’in yapay zekaya yaklaşımı tamamen çocukça. Büyük fayda sağlayabileceği hâlde hiçbir kullanım olasılığını değerlendirmiyor
PR spam’ini engellemeye çalışmak ayrı şey, ellerini kollarını bağlayıp içeride de en kolay ve en yüksek getirili alanlarda yapay zekayı hiç kullanmamak ayrı şey
Yapay zeka, PR spam’i içindeki gerçek bug adaylarını ayıklamak için de kullanılabilir ama hiç yardım alınmadığı için gerçek bug’lar gerekenden uzun süre ortada kalıyor
Ne yazık ki açık kaynakta bu şekilde yazmayı fazla rahat bulan çok sayıda geliştirici var ve açık kaynak faaliyetlerini bırakma nedenlerimden biri de buydu
Makul bir iş yerinde biri böyle davransa ya işten çıkarılır ya da en azından disiplin cezası alırdı
“Jarred’a yönelik kişisel bir eleştiri yok” cümlesi, neredeyse bütünü ince bir perdeyle örtülmüş kişisel eleştiri gibi görünen bir yazının sonunda söylenince epey iddialı duruyor
Birine acemi enerjisi atfedip bunu “başarısız olup öğrenen biri” gibi sahte bir olumlama ile paketlemek ya da hakkında söylenti olarak “berbat bir yönetici” dendiğini yazmak gibi
Bu, “onun kötü olduğunu söylemiyorum ama herkesin onun kötü olduğu konusunda hemfikir olduğunu bloga yazmam gerek” demeye daha yakın ve doğru olsa bile çok zevksiz görünüyor
Ben de berbat yöneticilerle çalışıyorum ama kişisel bir kin beslemiyorum
“Dedikodu ağı büyüktü ve sağlıklıydı, sulu üzümlerle doluydu ve o üzümlerin suyu hep aynı mesajı taşıyordu: Jarred berbat bir yöneticiydi”
“Jarred, LLM kullanmadan önce de zaten çöp gibi yazılar yazıyordu”
Tuhaf derecede çocukça bir yazı. Kurumsal filtreden geçmeden içini döken yazıları severim ama böyle yazılar o kişinin nasıl düşündüğünü ve nasıl hareket ettiğini de gösterir
İyi liderlikte kurumsal filtre kalksa bile ortaya çıkan şey yine profesyonel olur; bu yazı ise ondan çok daha kötü bir şeyi açığa vuruyor
Ortada güvenlik riski yoksa ve sana bağımlı kimse yoksa bu tamamen normaldir. Yöneticilik işi ise farklı
Anthropic satın alması kapanınca ZSF’nin rahat bir nefes almış olması dikkat çekiciydi. Bağış sessizce durduğunda da, hesap hazır olduğu halde ne aylık toplantıyı iptal edip ne de toplantıya geldiklerinde de şaşırmamış olmaları bundan belli. İlişki zaten bitmiş durumdaydı
Bunu birçok kez gördüm. Bir proje ya da kuruluş satın alındığında, yaptıkları “iyi şeyler” gürültülü biçimde sona ermez; sponsor onları sessizce görmezden gelmeye başlar ve sonunda sadece yok olur
İşaretleri okuyup hazırlık yapmış olmaları iyi olmuş. Bunu doğrudan acı çekerek öğrenmek zorunda kalmamak harika bir ders ve bir ya da iki büyük bağışçıya bağımlı özgür ve açık kaynak projeleri dikkatli olmalı
Bence geliştirici araçları ekosisteminde gelecekte bunu çok daha fazla göreceğiz
Bu başlığın başka yerlerinde yazının tonuna dair sert tepkiler var ama bu yazı Zig’e dair beklentimi düşürdü
Drama eğlenceli ve Andrew’nun samimiyeti belki saygı duyulacak bir şey ama ciddi projelerin ihtiyaç duyduğu profesyonellik bu değil
Sıkıcı ve ilhamsız görünse bile, bir teknoloji yığını ve onun işletilmesi konusunda insan böyle bir istikrar istiyor
Jarred net bir kayıp olmuş olabilir ama Bun, Zig kullanan çok büyük bir projeydi ve o projenin ayrılması Andrew’nun anlattığı kadar Zig için iyi bir şey değil
Dilin büyümesinden çok saflık ve ideolojiye öncelik veriyor gibi görünüyor. Ciddi bir programlama dilinde benimsenme ve kritik ölçek de önemlidir
Bu, Linus’un e-postalardaki üslubu yüzünden Linux’un ciddi bir proje olamayacağını söylemeye benziyor
Üstelik bunu doğrudan bile yazmadı; kişisel bloguna yazdı
Asıl önemli olan onun dile yaptığı katkılar değil mi?
Benimsenme ve kritik ölçek neden mutlaka önemli olsun? Daha geniş benimsenmeden vazgeçme pahasına, kendi istediği saflık ve ideolojiye uyan bir dil yapmasında ne sakınca var?
Neden her şey kullanıcı büyümesi ve görünürlük için optimize edilmek zorunda?
Öyleymiş gibi göstermeye çalışsalar bile
Bu yazı çok taze hissettirdi. Bun yazısındaki PR dilini daha cilalı bir şekilde geri püskürtme cazibesi büyük olmalıydı ama bunu yapmadı
Jarred hakkında olumsuz görünecek gerçekleri koyup kendi görüşünü dikkatle gizleyen bir yol da seçebilirdi; mesela “insanların ona berbat bir yönetici dediğini duydum, bunu ben söylemiyorum, başkaları söylüyor” gibi. Bunun yerine dümdüz dürüst olması hoşuma gitti
Yalnız o karakterin ve düşüncelerin içeriğini kabullenmek epey zor
Yazının ilk ve en büyük kısmını spekülatif ad hominem saldırılara ayırdığı için, yazarın söylediklerine güvenmek zor
Bu, Zig’in artılarını sıralamak için iyi bir fırsattı. mitchellh’nin ikna edici ve ilham verici yazıları yüzünden son zamanlarda Zig öğrenmek istiyordum ama bu yazı Zig öğrenme isteğimi azalttı
Andrew’nun Jarred ve onun çalışma tarzı ile iş tutumuna nasıl baktığına dair epey şey var ama neyin ad hominem, neyin spekülatif olup olmadığı bana çok net görünmüyor
Jarred’a yönelik kişisel saldırılar, Zig kullanılmasını savunmaya pek yardımcı oluyor gibi görünmüyor
Dile odaklanılması gerekirdi; “kokmuş yönetici” gibi ifadeler kullanılmamalıydı
Dürüst olmak gerekirse bu yazıyı okuyunca Jarred kadar Andrew’dan da uzak durmak istiyorum
Zaten son birkaç ayda topluluktaki birçok kişinin tanık olduğu bir durum
“Jarred mesleki rolünde topluluğumuzdaki birçok kişiyi uzaklaştırdı ve biz de mesafe koymak istiyoruz” demek, “Jarred özel hayatında kötü bir insandır” demek değil
Tabii bu sektörde VC’lerin iş dışındaki özel hayata ne kadar alan bıraktığı düşünülünce, neredeyse aynı anlama geliyormuş gibi algılanabilir; ama bu Andrew’nun sorunu değil
Andrew’nun üslubunu savunmuyorum. Daha geniş nörotipik bir kitleye konuşurken nöroçeşitliliğini biraz daha perdeleyebilirdi
Yine de bu onun projesi ve topluluğu bunun zaten farkında; bu da bilinen bir değişken
“Andrew, Jarred’ın karakterine suikast düzenlemeye çalışıyor” gibi ikincil bir alt anlam eklemek yerine, Andrew’nun tamamen samimi olduğunu varsayıp yeniden okumak faydalı olabilir
Açıkça kötü niyetli hissettiren bir yazısını ilk kez görmüyorum. Buna kibarca “doğrudan” denecek bir seviye değil
“Sessizlik bir seçenek değil miydi?”
“Jarred’a yönelik kişisel bir eleştiri yok” denmesine rağmen, yazının tamamı Jarred’a yönelik kişisel bir eleştiri gibi hissettirdi
Doğru olsa bile bunu bu biçimde kamuya açık şekilde paylaşmak akıllıca değil. Amaç Zig’i savunmaksa, bunu daha az kişiselleştirilmiş bir yolla da yapabilirdi
Bun’ı Zig’den Rust’a yeniden yazma işinin tamamı büyük bir pazarlama hamlesi gibi görünüyor
Anthropic AI gerçekten o kadar güçlüyse, neden hataları düzeltip mevcut Bun Zig kod tabanını yeniden tasarlayarak yalnızca mevcut hataları değil, gelecekte ortaya çıkabilecek benzer hataları da engelleyecek daha iddialı bir işi üstlenmiyor?
Anthropic’in gücüne giden de buydu
Anthropic’in Bun’ı bu tür bir gösteri olmadan da satın almak istemiş olabileceğini hayal etmek mümkün
Birkaç hafta sonra Bun, Rust yeniden yazımına başladı. Açıkça belirtilmedi ama bu iki olayın bağlantılı olabileceğini düşünüyorum
Hangisinin daha kötü olduğundan emin değilim