Dave Cutler Windows’u Anlatıyor [Video]
(youtube.com)- Dave Cutler, RSX-11, VMS, Windows NT’den Azure ve Xbox’a uzanan deneyimine dayanarak Windows NT’nin tasarım arka planını ve Microsoft’un geliştirme kültürünü değerlendiriyor
- Windows NT, en başından taşınabilir bir işletim sistemi ve birden fazla yürütme ortamı desteği hedefiyle tasarlandı; Windows 3.1’in 6 ayda 16 milyon kopya satmasıyla OS/2 yerine Windows ana ortam haline geldi
- İlk NT; i860, MIPS, x86, Alpha, PowerPC gibi çeşitli mimarileri ve HAL, nesne yöneticisi, çekirdek/sürücü yapısını ele aldı; temel yapının önemli bir kısmı Windows 11’de de hâlâ duruyor
- VMS, çıkış anında bilinen 0 hata hedefliyordu; NT geliştirme ekibi Friday WHIM ile ekip bağlılığını korudu, ancak NT, Cairo, Longhorn ve XP güvenlik müdahalelerinde takvim, kalite ve kod tabanı ayrışması büyük yük oluşturdu
- Cutler; hata düzeltmeyi, test etmeyi, kaliteyi güvenceye almayı ve gereksiz özellik eklememe disiplinini iyi bir yazılım ekibinin temel tutumları olarak görüyor
Windows NT’den Önceki İşletim Sistemi Kariyeri
- Dave Cutler, DuPont’ta gerçek zamanlı sistemler ve bilgisayar simülasyonuyla tanıştıktan sonra, problem çözme araçlarından çok bilgisayarın kendisine daha fazla ilgi duymaya başladı
- Scott Paper’ın köpük üretim sürecini GPSS 3 ile simüle eden projede kart hataları ve debugging deneyimi yaşadı
- Hataları azaltmak için Fortran programı yazdı; ardından IBM 7044 assembly de öğrenerek bilgisayarların iç işleyişine ilgisini genişletti
- DuPont’un gerçek zamanlı sistemler grubunda, Instron çekme testi verilerini otomatik analiz eden bir program yazdı
- Veri toplama programı gerçek zamanlı çalışıyor, verileri 1 milisaniye veya 100 milisaniye aralıklarla okuyordu
- Daha sonra Univac 1107’nin Exec II işletim sistemi üzerinde çalışarak işletim sistemi geliştirmeye ciddi biçimde girdi
- Her gün saat 17.00’de operatörleri çıkardıktan sonra 2 saat boyunca deneysel kod ve testler çalıştırıyordu
- Debugger’ın neredeyse olmadığı bir ortamda switch’ler ve halt instruction ile debugging yapıyordu
DEC Dönemi: RSX, VMS, Derleyiciler, PRISM
- Digital Equipment Corporation’da başlangıçta OS/45 için işe alınmıştı, ancak kısa süre sonra RSX-11C üzerinde çalışmaya başladı
- O dönemde PDP-11’in 16 bit adres alanı Cutler’a göre büyük bir kısıttı
- RSX-11C küçük bir sistemdi ve o günün ölçütleriyle bile özellikleri sınırlıydı diye değerlendiriyor
- VMS geliştirmesi, VAX donanımı ve PDP-11 uyumlu yürütme katmanı kullanılarak bootstrap edildi
- VAX’ta PDP-11 modu vardı; Application Migration Executive adlı bir katmanla RSX-11M yardımcı araçları çalıştırılıyordu
- Files-11 dosya sistemi de uyumluluğu korumak için VMS üzerinde yeniden implemente edildi
- Geliştirmenin başlarında, zamanlama ve bellek yönetimi gibi temel işler donanım emülatörü üzerinde yürütüldü
- VMS, kaliteyi güvenceye alma yöntemi olarak self-hosting benimsedi
- Proto 3 yeterince kararlı çalışmaya başlayınca geliştirme ekibi doğrudan o sistemin üzerinde çalıştı
- Sistem bug check verdiğinde birkaç kişi makinenin başına gidip debugger ile nedeni buluyor, düzeltmeden sonra yeniden boot ediyordu
- VMS’nin çıkış anında “bilinen 0 hatası” olduğunu hatırlıyor
- Bu, “hiç hata yoktu” değil; çıkış anında bilinen tüm hataları düzeltmeye çalıştıkları anlamına geliyor
- Son anda bile disk sürücüsündeki race condition’ı düzelttiler
- VMS sonrasında PL/I derleyicisi ve C derleyicisi backend’i, kod üreteci, optimizasyon ve register allocation işlerine de dahil oldu
- PL/I frontend’i Boston’daki bir şirketten satın alındı, backend ise VAX üzerinde geliştirildi
- Bazı frontend çalışmaları MIT’deki Multics üzerinde yapıldı ve veriler teyp ile taşındı
- DEC West’te Velon adlı gerçek zamanlı sistem ve MicroVAX projelerine katıldı
- Velon; user mode driver’lar, mesaj odaklı yapı, multithreading ve multiprocessor gibi fikirleri deneyen bir sistemdi
- MicroVAX 1’de tüm mikrokodu Cutler yazdı
- PRISM projesi, DEC’in RISC mimarisi girişimiydi; iptalinden ertesi gün Cutler şirketten ayrılmaya karar verdi
- PRISM’in 32 bit ve 64 bit mimari sürümleri vardı; Micah adlı iddialı bir yazılım sistemi de geliştiriliyordu
- PRISM iptal edildikten sonra bir sunucu şirketi kurmayı planladı, ancak Microsoft ile temas kurunca yönü değişti
Microsoft’a Katılış ve Windows NT Tasarımı
- Microsoft’a katılışı Bill Gates ile yaptığı konuşmadan sonra bile kesinleşmiş değildi; ancak Steve Ballmer ile Denny’s’te kahvaltı ettikten sonra karar hızla verildi
- Cutler, Microsoft’a katılmasına ikna eden kilit kişinin Ballmer olduğunu düşünüyor
- NT’nin ilk hedefi taşınabilir bir işletim sistemi ve birden fazla yürütme ortamı desteğiydi
- O dönemde hedef ortam OS/2 idi; POSIX de önemli bir adaydı
- Sistemin çekirdeğinin temel servisleri sağlaması, bunun üstüne çeşitli ortamların konması fikriyle başladı
- Windows’un NT’nin ana ortamı haline gelmesinin nedeni Windows 3.1’in başarısıydı
- Windows 3.1, 6 ayda 16 milyon kopya sattı ve Bill Gates yeni sistemin ana ortamının Windows olacağına karar verdi
- NT geliştirmesi OS/2 üzerinde de yürütülüyordu, ancak ekip hızla NT’nin kendi üzerinde self-hosting yapmak istiyordu
- NT adı “New Technology” anlamına geliyor
- i860’ın kod adı N10 ile NT arasında belirsiz bir bağlantı olmuş olabilir, ancak Cutler NT’yi New Technology olarak görüyor
- Pazarlama tarafı, “yeni teknoloji” adının satın alma konusunda tereddüt yaratabileceğini söyleyerek karşı çıktı; ancak Cutler NT adında ısrar etti
- NT’nin ilk sürümü birden fazla CPU mimarisini destekliyordu
- x86, MIPS R3000/R4000 ve Alpha’dan söz ediliyor
- PowerPC, NT 3.5 veya Daytona döneminde geldi; Cutler, PowerPC build’lerinin ve donanım rekabet gücünün iyi olmadığını değerlendiriyor
- NT’nin HAL’i aslında donanım soyutlama katmanı olmanın ötesinde, satıcı soyutlama katmanına daha yakındı
- Başlangıçta ayrı bir DLL olarak düzenlenmişti; böylece satıcıların HAL sağlayabilmesi amaçlanıyordu
- Cutler, daha sonra HAL’i işletim sisteminin bir parçası gibi build etmenin daha iyi olacağını düşünüyor
- NT çekirdeği ve HAL’de çok fazla assembly yoktu
- Performans için gerekli bazı sık kullanılan işlemler assembly veya intrinsic gerektiriyordu
- x64’te inline assembly yerine intrinsic kullanma yönünü seçtiler
NT Geliştirme Kültürü, Cairo, Longhorn, XP Güvenliği
- NT ekibi, hızla büyüyen organizasyonu bir arada tutmak için her cuma WHIM düzenliyordu
- WHIM, Weekly Integration Meeting’in kısaltmasıydı
- Başlarda yöneticiler Safeway’den bira ve cips alıp donanım laboratuvarında düzenliyordu; daha sonra daha büyük mekânlara ve catering’e genişledi
- Cutler, NT geliştirmenin insanları sürekli sömürdüğü yönündeki tasvirlerin doğru olmadığını; her hafta rahatlama fırsatı yaratmaya çalıştıklarını düşünüyor
- NT 3.5 sonrasında Windows 95 arayüzünü NT’ye getirme süreci ile Cairo projesi paralel yürüdü
- Tuckwila bir tür yedek NT 4.0 gibi tutuldu; günlük build’lerde Tuckwila istikrarlı çıkarken Cairo sık sık bozuluyordu
- Cairo özellikleri zamanla çıkarıldı; Cutler’ın hatırladığı başlıca taşınmış sonuçlar dosya sunucusu yazılımı ve Kerberos’tu
- NT 4.0 çok popüler bir sürüm olarak kaldı; Cutler, hâlâ NT 4.0 kullanan biriyle karşılaştığını söylüyor
- NT 3.1 takvimi VMS’ten daha uzun sürdü
- VMS’nin yaklaşık 20 kişilik çok yetenekli bir ekiple 2 yılda yapıldığını söylüyor
- NT’de yapılacak daha fazla iş vardı; i860’tan vazgeçilip MIPS, x86, Alpha gibi birden çok mimari eklenince kapsam büyüdü
- Longhorn ve Vista’ya giden süreçte kod tabanının ayrılması büyük bir sorun oldu
- Windows 2000’den sonra sunucu ve workstation kod tabanları ayrıldı; sunucu tarafı çok sayıda güvenlik sorununu düzeltirken tüketici tarafında build ve çalışma kararlılığı bozuldu
- XP büyük başarı yakaladı ama çok hatalıydı; ardından güvenlik sorunları büyüyünce XP hata düzeltmelerine çok fazla emek harcandı
- Cutler’ın grubu XP ile ilgili yaklaşık 5.000 güvenlik hatasını düzeltti
- AMD’nin x64 genişletmesi Microsoft içinde önemli bir dönüm noktası oldu
- AMD, 32 bit uygulamaları hızlı çalıştırabilen, daha az müdahaleci bir 64 bit genişletme fikri sundu
- Cutler, sunucu kod tabanını temel alarak 64 bit workstation ve sunucu yapmaya karar verdi; bu, şirketin baştan resmen onayladığı bir proje değildi
- AMD sistemleri gelince ilk boot’u CD’den yaptılar ve 64 bit sistem doğrudan boot edip çalıştı
- microsoft.com, 64 bit sunucuyu yaklaşık 1 hafta test ettikten sonra geçiş yaptı; 32 bit sisteme göre çok daha kararlı olduğu değerlendirildi
- Longhorn sonunda x64 kod tabanına geçti ve bu kod tabanı bugüne kadar devam ediyor
Windows’un İç Yapısı ve Bugüne Kalan Kod
- Windows 11’de de NT 3.5 döneminden kalma çok sayıda temel özellik ve yapı bulunuyor
- Çekirdek kodu, bellek yönetimi yapısı, process yapısı ve nesne yöneticisi gibi temel unsurlar sürüyor
- Orijinal kodun toplam kod içindeki oranı azalmaya devam etse de, aynı işlevi yerine getiren temel yapıların önemli bir kısmı hâlâ mevcut
- Cutler, NT’nin nesne yöneticisini iyi bir kod tabanının önemli nedenlerinden biri olarak gösteriyor
- Unix’in “her şey dosyadır” yaklaşımından farklı olarak NT’de yeni nesne tipi tanımlayıcısı oluşturup nesne yöneticisine entegre ederek yeni işletim sistemi nesneleri eklenebiliyor
- Nesneler senkronizasyon ve erişim denetimi gibi özellikler sağlayabiliyor
- handle table, performans açısından kritik bir bölüm olduğu için birkaç kez yeniden yazıldı
- handle translation gerçek bir performans sorunuydu
- Cutler, iş sisteminde yaklaşık 60 process, yüzlerce thread ve 150 bin açık handle bulunduğunu örnek veriyor
- Task Manager’ın boyutunun büyümesi, kod şişmesinin bir örneği olarak anılıyor
- İlk Task Manager 85 KB olarak derleniyordu; bugün ise 4 MB
- Şu anda CPU, ağ, disk gibi daha fazla bilgi gösteriyor, ancak Cutler bu artış kadar işlev arttığını düşünmüyor
- Grafik sürücülerini user mode’dan kernel mode’a taşıma kararı performans açısından gerekliydi, ancak ciddi büyüme sancıları yarattı
- Cutler başta kernel mode’a taşınmasına karşıydı
- User mode ve kernel mode’un senkronizasyon modelleri farklı olduğu için bu basit bir kod taşıma değildi; 16 bit veri yapıları ve primitive’ler de yük oluşturuyordu
- Sonrasında güvenilirlik çok daha iyi hale geldi, ancak bir dönem satıcı grafik sürücülerinden kaynaklanan çok sorun vardı
Azure, Xbox, xCloud
- Cutler, x64 sistemi piyasaya çıkardıktan sonra fcib sorunu yüzünden hayal kırıklığına uğrayıp Microsoft’tan ayrılacağını söyledi; Steve Ballmer’ın önerisiyle tatile çıktıktan sonra Kasım 2005’te geri döndü
- fcib, checked-in binary anlamına geliyor; kaynak yerine binary check-in eden gruplar yüzünden porting zorlaşıyordu
- Ardından Azure’un erken dönem projesine katıldı
- Ray Ozzie, çeşitli bulut tabanlı servislerde ortak altyapı bulunmaması sorununu görerek projenin başlamasını sağladı
- İlk Azure; uygulama dağıtımı, yapılandırma kontrolü, sürüm yönetimi, yeniden başlatma, faturalama ve bulut dosya sistemi gibi platform altyapısını hedefliyordu
- AWS’nin sunduğu şey altyapı odaklıydı; Microsoft’un başta platform servisleri satmaya çalıştığını açıklıyor
- Azure’un erken dönem hypervisor’ı, Connectix satın alımıyla gelen teknoloji temel alınarak oluşturuldu
- Connectix’in Virtual PC ve Virtual Server ürünleri vardı; hypervisor geliştirmesi de erken aşamada sürüyordu
- Daha sonra Xbox hypervisor’ı Azure’un Red Dog hypervisor’ından geldi
- Xbox üç VM’li bir yapıyla çalışıyor
- host system tüm cihazların sahibi ve VM’ler arası iletişimde traffic cop rolü görüyor
- presentation VM pencere yöneticisi ve görüntü sisteminden sorumlu, sürekli çalışıyor
- game VM her oyun için başlatılıp durduruluyor; oyun işletim sistemiyle birlikte paketleniyor
- Oyunun işletim sistemiyle birlikte paketlendiği yapı geriye dönük uyumluluk açısından avantajlı
- Oyun geliştiricisi, oyunu GDK’nin işletim sistemiyle birlikte paketliyor; çalıştırma sırasında ilgili VM de birlikte başlatılıyor
- İşletim sistemi değişikliklerinin eski oyunları bozması engellenebiliyor
- Ancak özelliklerin mevcut oyunlara konması gerektiğinde universal game OS gibi bir geçici çözüm gerekiyordu
- Xbox’ın pause/resume özelliği VM’i kaydetme ve geri yükleme yöntemiyle çalışıyor
- Oyun yüklemede gigabyte düzeyinde veri yer aldığı için bu süreç uzun sürüyor
- pause/resume, VM durumunu kaydedip daha sonra geri yükleyen bir özellik
- Güncel çalışma olarak xCloud konsollarının boşta kalma süresini kullanan Linux VM’i ve grafik stack’i anılıyor
- xCloud, Xbox konsollarını raflara yeniden paketleyip veri merkezlerine koyarak uzaktan erişim sağlayan bir yapı
- Konsol single tenant olduğu için aynı anda bir kişi kullanıyor ve boşta kalma süresi oluşuyor
- Microsoft’a özel machine learning workload’larını kullanılmayan zamanlarda çalıştırma planı için Linux VM, Xbox hypervisor’ı ve grafik stack’i üzerinde çalışılıyor
Kalite, Ekip Yönetimi, Geliştirme Felsefesi
- Cutler, “başarılı insanlar başarısız insanların yapmayı reddettiği şeyleri yapar” sözünü yazılım ekiplerine de uyguluyor
- Kodu yazdım diye test etmeme, takvimde süre varken saat 17.00’de çıkma, kendi hatasını düzeltmek istememe tutumlarını sorunlu görüyor
- Gerekli işi bizzat yapıp başarıyı mümkün kılan tutumu önemli buluyor
- “Thinker-doer” tipine yüksek değer veriyor
- Brooks’tan alıntıyla, yalnızca düşünen insanın çok olduğunu ama gerçekten uygulayanın az, ikisini birden yapanın daha da az olduğunu söylüyor
- Mimarların da hedefleri ve kısıtları karşılayacak gerçek sonuçlar üretmesi gerektiğini düşünüyor
- “Koymazsan çıkarman da gerekmez” ifadesini University of Washington’daki laboratuvarın duvarına yazdırmak istemişti
- Bunu, gereksiz özellik eklememe disiplinini vurgulamak için kullanıyor
- İlk geliştirme ortamlarında debugging araçları yetersiz olduğundan, baştan hataları azaltma tutumu önemliydi
- Geçmişte logic analyzer veya oscilloscope bile kullanmak gereken durumlar oluyordu
- Bugünün araçlarında küçük hataları azaltan çok sayıda özellik var, ancak kalite üzerindeki baskının eskisinden farklı olduğunu düşünüyor
- Multitasking mümkün olsa da en yüksek üretkenliğin tek işe odaklanmaktan geldiğini düşünüyor
- Çünkü context switch zaman alıyor
- Yine de başka birinin takıldığı soruna yardım etmek veya hata düzeltmek gibi iş geçişleri yaptığını açıklıyor
1 yorum
Hacker News yorumları
Röportajı yapan Dave Plummer da başlı başına çok ilginç biri. Özellikle https://www.youtube.com/watch?v=JlZe2JwrJqM ve https://www.youtube.com/watch?v=b0zxIfJJLAY gibi retro kodlama videoları hoşuma gitmişti.
Videolar eğlenceli; arka plan müziği ve RGB aydınlatma da Noel havası veriyor. Microsoft'u da benim alışık olduğum imajdan tamamen farklı göstermişti; Redmond'un tuhaflıklarını kabul ederken bir yandan da işinden, çalışma arkadaşlarından ve Microsoft'tan sıcak bir dille söz ediyor.
Ancak bu kanalı izleyince YouTube algoritması bir şekilde tetikleniyor ve öneri akışı ADHD videolarıyla dolup taşıyor. Muhtemelen otizm ve ADHD ile ilgili videolar yüzünden; ama benim yalnızca kodlama ve Microsoft tarihi videolarını izlediğimi YouTube'un anlayacak kadar akıllı olması gerekmez mi diye düşünüyorum.
Yine de bunu söylemek istemem ama Microsoft/Windows dışındaki konularda söylediklerini ciddi bir süzgeçten geçirmek gerekiyor. Özellikle aşağıdaki yorumdan [1] sonra daha da öyle.
Son dönemde reklam engelleyiciyi kapatmaya zorlamaları da göz açıcıydı. YouTube reklamları gerçekten berbat; gerçek insanların bunlara tepki verdiğini düşünmek bile utandırıcı. YouTube iyi bir kullanıcı deneyimi sunuyormuş gibi yapmaktan bile vazgeçmiş görünüyor.
Yine de bu Dave Cutler röportajı gibi harika şeyleri görmek için çamurun içinde biraz eşelenmeye değer.
Şaka değil; “yarısı” ifadesi de oldukça doğru. Bir şeyler bozulmuş ya da YouTube öneri motoruna büyük dil modeli bağlamış gibi.
İyi kurgulanmış bir videodansa doğaçlama konuştuğu hâlini izlemek daha hoşuma gitti.
O tek videodan sonra önerilerim kanser hikâyeleri, ölmek üzere olan insanlar ve türlü türlü hastalık anlatılarıyla doldu. O video, o kişinin normal içerikleriyle de hiç ilgili değildi; bu tür öneri videolarından hiçbirini izlemediğim hâlde sürekli önüme gelmeye devam ettiler.
Bu videoyu henüz izlemedim ama birkaç yıl önce Showstopper[1]’ı okuduğum için merakla bekliyorum
20’li yaşlarımın başında, sürekli çalışmam gerektiğini düşündüğüm dönemde özellikle aklımda kalan şey, Dave’in tatillerini her seferinde zamanında, tartışmasız şekilde mutlaka kullanmasıydı
Microsoft’u sevmiyor olabilirsiniz ama 24 saat boyunca öğütülmeyen, son derece yetkin ve liyakatli bir insanı ilk kez gerçekten gördüğüm örnek bu olmuş olabilir
Böyle yazmak bile hâlâ tuhaf geliyor ama bu, “ne kadar çok sıkıntı çekersen o kadar erdemlidir” tarzı kırsal ve perakende kültüründen gelen bir düşünce biçimiydi
Bugün bile düzgün dinlenmek zor; X ya da Y’nin daha önemli olduğu gerekçesiyle ertelemek kolay. Yine de Dave’in bakış açısını hatırlamak, dinlenmek ile X’i iyi yapmak arasında bir seçim yapmak zorunda olmadığını gösteren iyi bir reminder oluyor
[1]: https://www.amazon.com/Show-Stopper-Breakneck-Generation-Mic...
“Şabat gününü kutsal sayarak anımsa… Altı gün çalışacak, bütün işlerini yapacaksın; ama yedinci gün Tanrın RAB’bin Şabat günüdür…”
https://en.wikipedia.org/wiki/Protestant_work_ethic
https://www.biblegateway.com/passage/?search=Exodus%2020&ver...
Çalışan “burnunu bileği taşına dayayıp” “belini kırarcasına” çalıştıkça şirketin kârı artar ama daha fazla maaş ödemek gerekmez. Sağlığı çalışamayacak kadar bozulduğunda da yerine başkasını koyarsın, olur biter
Gece geç saatte yazdığım için kaba olduysa kusura bakmayın ama buradakilerin bunu zaten sezgisel olarak bildiğini düşünüyorum
Sonra tükenmişlik yaşadım ve artık dinlenmenin, ayrıca gerçek acil durumlar dışında 8 saatlik iş gününe bağlı kalmanın yalnızca kişisel bir sorumluluk değil, profesyonel bir sorumluluk da olduğunu düşünüyorum. Tükenmişlik riskini azaltıyor; tükenmişlik de kelimenin tam anlamıyla herkes için kötü
WinNT 3.1 geliştirmesinin sonlarına doğru birinin mavi ekran gösteren bir ekran koruyucu yaptığına dair bir yazı okumuştum. Belki Usenet’teydi
O zamana kadar hiç ekran koruyucu yapmamıştım ama Microsoft’un dahili ağ sürücüsü hatası yüzünden WinNT geliştirme makineme güvenilir şekilde mavi ekran verdirebiliyordum
Bu yüzden Windows ekran koruyucu yazma belgelerini okudum, mavi ekranımda görünen değerleri not ettim ve ilk ve son Windows ekran koruyucumu kabaca yaptım
Eğlence olsun diye Windows NT grubuna yaptığım şeyi haber veren bir e-posta gönderdim ve birkaç hafta sonra NT build grubu Dave Cutler’a bir şaka yapmaya karar verdi
Mavi ekran ekran koruyucumu build sunucularından birine kurdular, fareyi ve klavyeyi de çıkarıp beklediler
Dave Cutler en son NT build durumuna bakmaya geldi, monitörü açtı ve mavi ekranı gördü. Fareyi oynattı ama hiçbir tepki yoktu; klavyeye bastı, yine hiçbir tepki yoktu
Sonra beklenmedik bir şey oldu. Elini uzatıp build sunucusunun güç düğmesine bastı ve yeniden başlattı. HAYIIIIIIIIIIIIIIIIIIIIIR
O şakanın yankılarını ya da sonuçlarını hiç duymadım. Büyük güç büyük sorumluluk getirir
Ben de onu kurmuştum; yakınımda oturan birkaç iş arkadaşı da aynısını kurmuştu
CTO sabah erken bir toplantı için uğradığında tüm ekranlarda bunu görünce, virüs yayılımı ya da yazılım hatası sanıp hafif paniğe kapılmıştı
Birkaç hafta önce birinin önerdiği “Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft” kitabını burada da öneririm
Hâlâ okuyorum ama gerçekten çok eğlenceli; keşke ben de o tarihin bir parçası olsaydım diye düşünüyorum. Özellikle de tamamen yeni bir işletim sistemini dogfooding etmeleri kısmı. Ne var ki benim dönemimden birkaç yıl önceydi
O kitap sayesinde gerçekte olduğumdan çok daha bilgiliymişim gibi konuştum ve birkaç gün öncesine kıyasla o alanın tamamı için çok daha heyecanlıydım
Teklif aldım ama sonunda o işi kabul etmedim
Bununla ilgili şu da var: https://blog.codinghorror.com/showstopper/
İlginç bulduğum kısım, Xbox hipervizörünün masaüstü tarafında yapılmış olmaması, Azure tabanlı olmasıydı; ayrıca Xbox oyunlarının cihaz üzerindeki tek bir işletim sistemine dayanmak yerine işletim sistemiyle birlikte paketlenmesi ve bu yönüyle konteynerlere biraz daha yakın olmasıydı.
Dave, boştaki Xbox Cloud Gaming cihazlarında makine öğrenimi işleri çalıştırmayı sağlamak üzerinde de çalıştığını söyledi. Azure ile Xbox arasında böyle bir mimari bağ olduğunu hiç düşünmemiştim.
Örneğin oyun çalıştırılabilir dosyaları aslında oyun diskinde şifreli, çalışan gerçek ikili dosyayı dump etmek bile neredeyse imkânsız. RAM de şifreli.
Ayrıca modern TPM’lerin CPU içine alınmasının nedenlerinden biri, insanların Xbox’ta yaptığı gibi TPM veri yolunu sniff etmesini engellemekti.
Windows çekirdek ekibinde çalıştım; DC hakkında en sevdiğim hikâye, onun Itanium mimarisinden o kadar nefret etmesi ki fiilen x64’ün gerçekleşmesini sağlaması.
AMD ile birlikte çalışarak, köşe ofisinde sürekli kod yazarak bu işi fiilen ilerletti.
Fikir şuydu: “Birden fazla, bazen değişken bit uzunluğundaki komutu tek bir word içinde paketleyip, en iyi komut paketini bulma işini derleyici yazarına bırakırsanız uygulama basitleşir ve daha hızlı olabilir.” Ama derleyici o en iyi paketi bulamazsa, x86 gibi geleneksel tasarımlardan daha yavaş olur.
Intel içinde çok üst düzey birilerinin bu fikri gerçekten sevmiş olması gerek. Büyük bir mikroişlemci üreticisi olarak Intel’in tarihi boyunca bunu üç kez denediler ve üç kez başarısız oldular.
O dönemde AMD64, “aynısının daha fazlası” olduğu için iyi bir fikir gibi görülmüyordu. Yine de RISC devrimini fiilen öldüren ıvır zıvırı temizlemeye Dave’in katkıda bulunması iyi işti.
Umarım bir gün ben de boş zamanımda o kadar etkileyici bir şey ortaya çıkarabilirim.
Ne yazık ki Microsoft açısından o ganimeti x86-64 üzerindeki Linux aldı.
Yazılım mühendisliği kariyerimdeki en belirleyici anlardan biri, 6-7 yıl önce sızdırılmış NT kaynak kodunu okurken Showstopper[1]’ı da beraberinde okumamdı.
NT sızıntısını özellikle büyüleyici kılan şey, yazar geçmişinin tamamını içermesi ve Dave Cutler’ın tam olarak hangi dosyalar üzerinde çalıştığını görebilmenizdi. Kitap, çekirdek modüllerinde sayfalanabilir bölümlerin nasıl ortaya çıktığı gibi konuları da ayrıntılı işliyor; bu da başlı başına ilginç.
Kitapta Cutler’ın gelip belirli assembly rutinlerini elden geçirdiği bir sahne var; gerçek kaynak kodunda o rutinin tam olarak ne olduğunu görebiliyorsunuz.
Cutler’ın kodu gerçekten güzel C koduydu ve eminim hâlâ öyledir. NT tarzı C kodu yazma biçimimi büyük ölçüde etkiledi.
[1]: https://www.amazon.com/Show-Stopper-Breakneck-Generation-Mic...
Computer History Museum’daki David Cutler sözlü tarih röportajı da çok iyi.
Part 1: https://youtu.be/29RkHH-psrY
Part 2: https://youtu.be/SVgSLud50ss
Yeni röportajdan bazı parçaları izledim ama şu ana kadar yeni bir şey duyup duymadığımdan emin değilim.
İki Dave’in söylediklerine bakınca, tamamlayıp yayımlamaya muazzam özen gösteriliyor ama uzun vadeli plan ya da gerçek bir güvenlik stratejisi hakkında neredeyse hiç konuşulmuyor.
Hepsi ticari baskı altında kıyma makinesinden sosis çıkarmak ve başarısızlıkları kabul edilebilir bir seviyeye indirmekle ilgili.
Sektör genelinde durumun iyileşmemesi ve doğru yöne dönmemesi şaşırtıcı değil. Bir gün capability tabanlı güvenliğe ulaşacağımızı sanıyordum, ama artık onun neredeyse değersiz kuzeni olan uygulama izin bayraklarına sonsuza dek hapsolacakmışız gibi geliyor.
Gelecek konusunda endişeliyim.
VP’den SVP’ye, SVP’den CEO’ya terfiyi haklı gösterecek kadar iyi birkaç çeyrek ya da birkaç yıl yeterli. Önceki rolünde yaptığı miyop tercihler yüzünden, 3 yıl sonra yeni bir role geçmiş kişiyi suçlayıp cezalandıran olmuyor.
Bu, Cutler’ın böyle bir yönetici olduğu anlamına gelmiyor. Ama yukarıdan gelen sürüm çıkarma baskısını ve gelir akışını sürdürme baskısını açıkça hissetti. Röportajın başlarında söylediği gibi, hatalı yazılım göndermekten gerçekten nefret ediyor; sektördeki yazılım mühendislerinin kalitesinden büyük hayal kırıklığı duyuyor ve program/proje yöneticilerinin tüm hataları nadir görülen köşe durumlarıymış gibi ele almasından da çok rahatsız. Üçüne de katılıyorum.
Bildirdiğim hataların çoğu da “köşe durumu” muamelesi görüyor; oysa ben o soruna her gün takılıyorum ve veritabanında birden fazla yinelenen kayıt oluyor ya da benim hatam daha eski bir bildirimin kopyası diye yeniden işaretleniyor.
Bu sektörde onlarca yılımı, tamamını Big Tech’te geçirerek gördüm: mühendisler ve birinci kademe yöneticiler sürümden önce hataların düzeltilmesi ve daha sık hata düzeltme güncellemeleri için bastırsa da, sonunda aynı tür baskılara boyun eğmeyen bir şirkete hâlâ rastlamadım.
Büyük bir satış argümanıydı ama çoğu kullanıcı için pek karşılık bulmuyordu. Gerçekten de birçok kişi “buna neden ihtiyacım var?” diye hissediyordu ve bu da onu “sıradan kullanıcı” için bir işletim sistemi değilmiş gibi gösteriyordu.
1990’ların başındaki güvenlik anlayışı—yani güvenliği neyin oluşturduğu ve bunun kim için ne kadar ilgili olduğu—bugünün beklentileriyle ya da güncel seviyelerle örtüşmüyor.
Bunu doğru yapmak biraz zaman alabilir. Bu arada yarım pişmiş, mevcut durumu güçlendiren gerici ve tek runtime tabanlı bir alternatifin kazanmamasını umuyorum.
[0]: https://github.com/bytecodealliance/wasmtime/blob/main/docs/...
Bu, yazılımın bize “katkı” olarak sunduğu en büyük ekonomik ürün olabilir. “Parayı alacağız ama hiçbir şey vaat etmiyoruz, enayi!” türünden bağlayıcı bir sözleşme yani.
Buna karşılık piyasaya ikinci çıkarsanız cezalandırılıyorsunuz.
Bunların hepsini dinlemeyi sabırsızlıkla bekliyorum.
O kişiye ya da çalıştığı şirkete dair hislerden bağımsız olarak, Cutler OpenVMS ve Windows NT üzerindeki çalışmalarıyla çok etkili bir yazılım mühendisiydi. Bell Labs insanları, Stallman, Linus, Stroustrup gibi isimler kadar sık konuşulmadığını düşünüyorum.