Debian neden bugünkü haliyle böyle?
(blog.liw.fi)- Debian’ın kendine özgü uygulamaları, 30 yıllık büyük ölçekli genel amaçlı bir işletim sisteminin kaliteyi, güvenliği ve özgür yazılım ilkelerini uzun süre korumak için biriktirdiği tercihlerden doğar
- Belirli bir kullanım amacına yönelik bir dağıtım değil, çoğu insan ve amaç için uygun bir genel amaçlı dağıtım olmayı hedefler; paketlerin dahil edilip edilmeyeceğinde temel ölçütler özgür yazılım niteliği ve bakım kalitesidir
- Anayasa, Toplumsal Sözleşme ve DFSG, erken dönemdeki gevşek işleyişin sınırlarını göstermesinin ardından ortaya çıkan araçlardır; demokratik karar alma ve sınırlı lider yetkisini kurumsallaştırır
- Kendi kendine yeterli derleme ve gömülü kütüphanelerden kaçınma, dış depolara ya da yinelenen bağımlılıklara bağımlı kalmadan acil güvenlik düzeltmeleri, yeniden derleme ve yeni mimarilere taşıma yapılabilmesini sağlayan bir bakım stratejisidir
- Üyelik incelemesi, sürüm kod adları ve yavaş değişim hızı; binlerce paketi ve on milyonlarca kurulu sistemi olan bir projenin güveni, yansılama maliyetini ve uzlaşı maliyetini yönetme biçimidir
Debian’ın hedeflediği işletim sistemi
- Debian, yüksek kaliteli, güvenli ve genel amaçlı bir işletim sistemini hedefler; yaygın olarak kullanılan bilgisayarların çoğunda çalışan, yalnızca özgür ve açık kaynaklı yazılımlardan oluşmasını ister
- Genel amaçlı işletim sistemi hedefi, Debian’ın çoğu insan için çoğu amaçta uygun olması gerektiği anlamına gelir
- Her duruma uyamaz, ama yönelmek için anlamlı bir hedeftir
- Masaüstü, sunucu, oyun ya da bilimsel araştırma gibi belirli amaçlara odaklanan dağıtımlardan farklı kararlar doğurur
- Bir yazılımın paketlenip paketlenmeyeceği, kullanım amacından çok şu ölçütlere bağlıdır
- Yazılımın özgür yazılım olup olmadığı
- Debian’ın onu yüksek kaliteli bir paket olarak sürdürebilip sürdüremeyeceği
Anayasa ve yönetişim
- Debian, açıkça demokratik bir açık kaynak organizasyonuna oldukça yakındır
- Karar alma süreçleri iyi tanımlanmıştır
- Her yıl Debian Project Leader seçilir
- Proje liderinin yetkileri sıkı biçimde sınırlıdır; normalde liderlikle ilişkilendirilen birçok yetki açıkça başkalarına devredilmiştir
- İlk Debian Project Leader’lar, kendileri çekilene kadar fiilen tam yetkili diktatörlere yakındı
- Bir proje lideri sınırı aştıktan sonra tepkiyle görevden ayrıldı ve bunun sonucunda demokrasi getirildi
- Debian, resmi Anayasa ile proje kurallarını tanımlar
- Bugünkü kural sistemi, erken tarihte daha az kuralın ve daha az bürokrasinin Debian’da iyi işlemediği deneyiminden doğmuştur
Toplumsal Sözleşme ve Debian Free Software Guidelines
- 1990’ların ortasında “open source” terimi henüz ortaya çıkmamıştı; “free software” ise Free Software Foundation tarafından tanımlanmış olsa da yoruma açıktı
- Debian, daha net kurallar istediği için Debian Free Software Guidelines (DFSG) hazırladı ve bunu Toplumsal Sözleşme’nin bir parçası yaptı
- Toplumsal Sözleşme, Debian’ın kendisi ve dünya karşısında ne olduğu ve ne yapacağına dair söz veren temel belgedir
- DFSG bunun bir parçasıdır
- Debian Anayasası, Toplumsal Sözleşme’yi kasıtlı olarak değiştirilmesi zor hale getirir
- Daha ayrıntılı kurallar, Debian’ın neyi kabul edeceğini daha açık hale getirir ve ilgili tartışmaları sadeleştirir
- DFSG daha sonra Open Source Definition için temel oldu
Kendi kendine yeterli derleme ilkesi
- Debian, kendi kendine yeterli (self-contained) ilkesinde ısrar eder
- Debian’ın paketlediği her şey yalnızca Debian içindeki bağımlılıkları kullanarak derlenmelidir
- Debian içindeki her şey Debian tarafından doğrudan derlenmelidir
- Bu ilke çok fazla ek iş çıkarabilir
- Güncel programlama dili araçları, derleme sırasında çevrimiçi depolardan bağımlılık indirmeyi varsayma eğilimindedir
- Debian’da buna izin verilmez
- Temel neden, dış bağımlılıkların sonradan ortadan kaybolabilmesidir
- Debian, üçüncü taraf paket depolarını kontrol etmez
- Bir paket ya da tüm depo kaybolursa Debian ilgili paketi yeniden derleyemeyebilir
- Yeni derleyici yükseltmeleri, güvenlik sorunlarının düzeltilmesi, yeni mimarilere taşıma ve hata düzeltmelerinin yansıtılması için yeniden derleme gerekir
- Sistem kendi kendine yeterli değilse, acil bir güvenlik düzeltmesi anında on binlerce paketin ve tüm bağımlılıklarının erişilebilir olması gerekir; bu yüzden Debian tüm bağımlılıkları paketlemeyi seçer
Gömülü kütüphanelerden kaçınma nedeni
- Debian, paketlenen yazılımın içinde gelen kütüphane kopyalarını veya diğer bağımlılık kopyalarını kullanmaktan kaçınır
- Birçok upstream proje, bağımlılıkları birlikte paketlemeyi ya da vendor yöntemini daha kolay bulur
- Debian açısından bu, popüler bir kütüphanenin birden fazla kopyasının oluşması anlamına gelebilir
- O kütüphanede bir güvenlik sorunu ya da ciddi hata çıkarsa tüm kopyaları bulup düzeltmek gerekir
- Acil güvenlik sorunlarında bu, değerli zaman kaybına yol açar
- zlib örneğinde Debian, arşiv içinde gömülü onlarca zlib kopyası buldu ve Debian paketlerinin yalnızca Debian’da paketlenmiş zlib sürümünü kullanmasını sağlamak için ciddi emek harcadı
- Bu yüzden Debian, acil durum gelmeden önce paketleme aşamasında işi yapar ve Debian içindeki paketlerin Debian’da paketlenmiş kütüphane sürümlerini kullanmasını sağlar
- Upstream geliştiriciler bazen yalnızca kendi doğruladıkları gömülü sürümle uğraşmak ister; bu yaklaşım zaman zaman Debian ile sürtüşme yaratır
Üyelik inceleme süreci
- Debian, bir işletim sistemi olarak büyük, karmaşık ve yaygın kullanıldığı için üyelerine güvenmek zorundadır
- Özellikle yeni paket yükleyen kişilere duyulan güven önemlidir
- 1990’lardaki Linux’un teknik sınırlamaları nedeniyle tüm Debian paketleri kurulum sırasında tam root erişimine sahipti
- Tüm Debian geliştiricileri, Debian’ın çalıştığı herhangi bir makinede potansiyel olarak root kullanıcısı olabilir
- Debian’ın on milyonlarca makinede çalıştığı düşünülürse bu büyük bir yetkidir
- Yeni üyeler çeşitli yollarla doğrulanır
- İdeal durumda, Debian geliştirici topluluğuna yeterince uzun süredir katkı veriyor olmalı ve başkaları tarafından tanınıyor olmalıdır
- Topluluk içinde güven oluşturmalıdır
- Bu süreç, Debian’a katılmak isteyenler için, özellikle daha küçük açık kaynak projelerine alışkın olanlar açısından oldukça sinir bozucu olabilir
Sürüm kod adları
- Debian, her ana sürüme bir kod adı verir
- Bu uygulama başlangıçta Debian paket arşivinin yansılama maliyetini düşürmek için ortaya çıktı
- 1990’ların ortasında Debian 1.0 sürümüne hazırlanılırken kod adı yerine sürüm numarasıyla dizin oluşturuluyordu
- Yeni sürüm geliştirmek zaman aldığından “1.0” dizini önceden oluşturuldu
- Bir CD-ROM yayıncısı, Debian 1.0 tamamlanmadan “1.0” etiketli diskleri erken ve büyük ölçekte bastı
- Sonuç olarak Debian 1.0 CD-ROM alanlar gerçekte 1.0 olmayan bir şey aldı
- Basit çözüm, “1.0-not-released” gibi bir dizinde hazırlanıp sürüm tamamlandıktan sonra bunu “1.0” olarak yeniden adlandırmaktı
- Ancak dizin adı değişince tüm yansılar sürümü baştan indirmek zorunda kalıyordu ve o dönemde Debian’ın ölçeğinde bu pahalıydı
- O zamanki ölçek “yüzlerce paket” ve “onlarca MB” düzeyindeydi
- Daha sonra Debian arşivine pool yapısı eklendi
- Tüm sürümlerin dosyaları aynı dizin ağacında bulunur ve üstveri dosyaları hangi dosyanın hangi sürüme ait olduğunu belirtir
- Bu yapı yansılamayı kolaylaştırır
- Bugün kod adlarını bırakıp yalnızca sürüm numarası kullanmak mümkün olabilir, ancak Debian’ın bununla ilgilenip ilgilenmeyeceği bilinmez
Debian neden yavaş değişir?
- Debian çok büyük bir projedir ve büyük projeler yavaş değişir
- Çok sayıda paketi etkileyen değişiklikler, yüzlerce gönüllünün çalışmasını gerektirebilir; bu yüzden hızlı ilerlemek zordur
- Bazı işler az sayıda kişi tarafından yürütülebilir ve Debian’da bunu mümkün kılan süreçler vardır
- Örneğin GNU C compiler’ın yeni bir sürümü yüklendiğinde, diğer paketlerde gereken düzeltmeleri bulma işi genellikle az sayıda kişi tarafından yapılabilir
- Değişimin uzun sürmesinin bir nedeni de uzlaşı oluşturma gereğidir
- Uzlaşı geniş kapsamlı tartışmalar gerektirir
- Bu tartışmalar zaman alır ve yalnızca nadiren kısaltılabilir
- Debian geliştiricileri teknik kararlarda muhafazakâr olma eğilimindedir
- Çoğu zaman büyük çaplı değişiklik gerektirmeyen çözümleri tercih ederler
1 yorum
Hacker News yorumları
Self-contained ve pakete gömülü kütüphane olmaması, ekosistemin bir kısmının fazla zahmetli bulup göz ardı ettiği önemli kavramlardı
Bunun sonucunda ortaya çıkan sorunları yeniden yaşadıktan sonra ancak “yazılım tedarik zinciri” gibi terimler kullanmaya başladılar; Debian ise başından beri bu sorunlardan kaçınacak şekilde hareket ettiği için aynı acıları daha az yaşadı
Yazılımı birden fazla dağıtım ve işletim sistemi genelinde dağıtmak istiyorsanız bağımlılıkları bundle etmek makul; bir dağıtımı sürdüren taraf açısından ise güvenlik yamasını yalnızca bir kez uygulamayı sağlayan paylaşımlı kütüphaneler açıkça daha iyi
İşletim sistemi düzeyinde Nix ve Silverblue, uygulama düzeyinde ise Snaps ve Flatpak gibi akımlar ortaya çıkıyor; çözümü bilmiyorum ama Debian’ın da yakında bir şeyler yapması gerekecek gibi
Başka sürümleri kullanmak için dikkatli test yapmak ve bulunan hataları düzeltmek gerekir; Debian’ın buna yetecek kaynağı var mı bilmiyorum. Sonuçta doğrulanmamış kütüphane kombinasyonları kullanıp iyi çalışmasını ummak anlamına geliyor, ama sanırım öyle olmayacak
Uzun zamandır linux-firmware deposundan alınan herkese açık firmware’ler kaynak koddan derlenmeden yalnızca ikili olarak dağıtılıyor; arşiv içinde de benzer başka örnekler olmalı
Debian’ın her tarball’daki üretilmiş dosyaları sistematik olarak kaldırıp yeniden ürettiği de yok; özellikle AI/ML tarafında eğitim verisini bile elde edememe ihtimali yüksek ve eğitim maliyeti de karşılanması zor
https://wiki.debian.org/EmbeddedCopies
Bazı açık kaynak yazılım organizasyonları yalnızca biraz etkileyici olmakla kalmıyor; insanların iş birliği yapma biçimi olarak tipik şirket modelinden çok daha üstün olabileceklerini gösterecek kadar şaşırtıcılar
Debian’ı çok uzun süredir kullanıyorum ama organizasyonu hakkında pek bilgim yoktu; bu yazı iyi bir giriş oldu
IETF de neredeyse interneti meydana getiren organizasyon, ama üyeliği bile yok ve öylece işliyor; bu tür organizasyonların pek bilinmemesi şaşırtıcı
Kurumsal dünyanın internetin çalışma biçimini ele geçirmek için IETF ile rekabet ettiği protokol savaşları da ilginç: https://en.wikipedia.org/wiki/Protocol_Wars
OSI’nin TCP gibi internetin bazı parçalarını X protokolleriyle değiştireceğini her ay duyurduğu bir dönem vardı, ama hayatta kalıp gelişen aşağı yukarı yalnızca X.509 oldu
Bu tür demokratik iş birliği organizasyonlarının geleneksel şirket modelinden gerçekten çok daha üstün olup olmadığını merak ediyorum
Ekonomik ölçek açısından bakınca IETF veya Debian’ın geliri şirketlerle kıyaslanamaz; ama katkı verenler ve yaratıcılar açısından “kim fayda sağlıyor?” sorusu ortaya çıkıyor ve katkı verenler kıt kanaat idare ediyor
IETF veya Debian tarzı modelin şirket modeliyle rekabet edip edemeyeceğini denemeye değer görünüyor; protokol savaşlarında bu bir kez gerçekten işe yaramıştı
IETF çalışma gruplarında birlikte çalışabilirlik için iş birliği yapmak isteyen çok sayıda şirket tedarikçisi mühendisi varken, ISO daha çok geleneksel yukarıdan aşağıya, devlet öncülüğündeki bir organizasyona yakın
Ubuntu’yu yaklaşık 13 yıl kullandıktan sonra bu yıl Debian’a geçtim ve oldukça hoşuma gitti
Eskiden küresel güncelleme mantığına dayalı paketleme modelinin ne olup bittiğini anlamayı zorlaştırdığını ve ara sıra sürüm çakışmaları da yarattığını düşündüğüm için teknik olarak en sağlam yöntem olmadığını sanırdım
Ama zamanla Debian’ın kararlılığını ve projenin iyi niyetini daha çok takdir etmeye başladım
Bazen projenin amacı ve hedefleri, teknik üstünlükten daha önemlidir
Kurulumdan sonra daemon’ların otomatik başlatılması gibi teknik tercihlerden memnun değilim, ama paketler ve yükseltmeler genelindeki tutarlılığın sağladığı fayda daha büyük
Apt de gerçekten harika bir paket yöneticisi
Varsayılan hâliyle bile hızlı; sistemi stable’da bırakıp yalnızca Nginx’i backports’tan yeni sürümle kullanmak gibi epey incelikli senaryoları da destekliyor
Önemsediğiniz bir iki pakette yeni özellikleri alıp geri kalanını kararlı ve sıkıcı tutabilmek iyi hissettiriyor
Başlıca sebep sıkıcı, eski ama iyi çalışan teknolojiler kullanması; ayrıca artık netplan, snapd, systemd-resolver görmek zorunda değilim
Sid’den paket almak veya libc6 yükseltmek gibi eğlenceli işler yapmadığınız sürece, her şeyi apt ile kurduysanız sürüm çakışmaları normalde görünmemeli
LIW büyük bir noktayı atlamış: Debian bir gönüllü organizasyonu, bu yüzden hiç kimse gönüllülere yapmak istemedikleri bir işi zorla yaptıramaz
Zorlanmamış insanların karar almak için gevşekçe dönen demokratik bir yapı kurduğu, dikkatli kaynak kullanımından gelen kendi kendine yeterliliğin de organizasyonun özü olduğu görülüyor
Bana göre bu çatışma “Debian nedir?” kavramını kalıcı olarak değiştirdi; bunun iyi mi kötü mü olduğu ise kimin sözünü dinlediğinize bağlı
Bu tür organizasyonlarda da başkalarının dediğini yapmazsanız elbette kapının dışına konursunuz
Bazen para derdi hiç çekmeyecek kadar büyük bir servete sahip olduğumu hayal ediyorum.
Böyle zamanlarda hangi açık kaynak projelerine bağış yapacağımı hep planlarım; Debian her zaman ilk adaylardan biri olur.
Artık tek gereken para, tabii bu arada Debian’a bağış yapmaya devam ediyorum.
Bu çok daha eğlenceli.
Debian harika olabilir ama sürücü desteği sorunu var ve bunu yalnızca isteksizce kabul ediyor gibi görünüyor.
https://www.reddit.com/r/debian/comments/paxj85/why_debian_w...
“Bazı kullanıcıların Debian Free Software Guidelines’a uymayan programlara ihtiyaç duyduğunu kabul ediyoruz. Bu tür yazılımlar için FTP arşivinde contrib ve non-free alanlarını oluşturduk.”
1-2 yıl önce birkaç makinede Debian çalıştırıyordum; bir WiFi güncellemesi gelince sistemler kullanılamaz hale geldi. Geri alma vb. seçeneklere baktıktan sonra sadece Ubuntu’ya, daha doğrusu Kubuntu’ya geçtim; düzgün çalıştı ve sorun çıkarmadı.
Debian 12, özgür yazılım saflığına önem verenlerin donanım kullanabilmek için en azından özgür olmayan sürücüler konusunda taviz verebilmesi adına özel bir non-free-firmware deposu bile oluşturdu.
Zaten kurulu bir sistemse non-free deposunu açıp linux-firmware’i ya da donanıma uygun daha spesifik firmware-* paketini kurmak sorunu çözecektir.
İlk sürüm döneminde Purdue’da Ian Murdock ile birlikte çalıştım.
O sistem yöneticisi ve geliştiriciydi, ben ise kütüphanede web tasarımcısıydım.
GNU/Linux yaklaşımına ve “konuşma özgürlüğü anlamında özgür” yazılıma gerçekten inanıyordu.
İlk itici güç paketleme ve paket yönetiminin zorluğundan geliyordu; muhtemelen en büyük katkısı da buydu.
Network-of-Workstations, yani NOW adlı P2P altyapısına benzer bir fikre de tutkuyla bağlıydı ama bu pek tutunamadı.
Projeyi devrettiği Bruce Perens, yazıda sözü edilen otoriter liderdir.
Onu severim; Linus Torvalds gibi eski ekol bir yönetim tarzı var ve çok sayıda gönüllünün bulunduğu büyük, karmaşık projelerde bu tarz işe yarıyor.
Eski Linux ve Debian günleri gerçekten çok keyifliydi; ben diğerleri kadar derine dalmamış olsam da o günleri özlüyorum.
Bugünlerde para kokusu alan çok fazla insan içeri girdi; eh, işler böyle.
Ian’ın manifestosu her şeyi açıklıyor: https://www.debian.org/doc/manuals/project-history/manifesto...
Bu konuda hiç hikâye duymadım, Google da yardımcı olmuyor.
Görevden ayrıldıktan ölümüne kadar olan süreci epey istikrarsız görünüyor.
Benden bile eski bir yazı.
Debian Toyota gibi.
Güvenilir ama sıkıcı; üstelik gönüllüler tarafından yapılıyor.
Debian politikası yüzünden bazen gerçek sürüm yerine epey kısıtlanmış bir RetroArch sürümü sunulabiliyor.
RetroArch’ta “Core Updater” adlı kendi paket yönetimi özelliği var; emülatörleri kütüphane dosyaları olarak indirip kuruyor, Debian ise bunun tüm paket yöneticisi sistemini baypas ettiği gerekçesiyle buna izin vermiyor.
Ancak Debian kaynak paketinin bağımlılıklarını kurduktan sonra özgün kaynak kodunu derlerseniz, tüm özelliklere sahip RetroArch’ı kendiniz derleyebilirsiniz.
Kodi ve RetroArch çalıştırmaya çalışırken bunu zor yoldan öğrendim ama bunun dışında harika bir işletim sistemi.
Kişisel olarak Debian’ı ilkeleri ve kararlılığı nedeniyle seviyor ve kullanıyorum
Başka dağıtım kullanıcılarından veya bazı üst projelerden, Debian’ın paketleri “değiştirdiği” yönünde şikâyetler duydum
Gerçekten böyle mi; öyleyse bunun mutlaka iyi bir nedeni vardır, açıklamasını duymak isterim
Birincisi, yazılımın Debian’ın istediği şekilde davranmasını sağlayan yamalardır: yapılandırmaları /etc/ altında saklamak, çalışırken ek indirme yapmamak ve gömülü kütüphaneler yerine sistem kütüphanelerini kullanmak gibi
İkincisi, güvenlik backport’larıdır
Debian, bir sürüm çıktığında özellikleri dondurur ve yalnızca güvenlik güncellemeleri sağlar; ancak günümüzde pek çok yazılım, güvenlik düzeltmelerini de yeni özelliklerle birlikte yeni sürümlerin içine paketliyor
Bu iki tür birleştiğinde Debian’ın 1.2’si ile “gerçek” 1.2 arasındaki fark büyür ve hata raporlarını ele almak zorlaşır
Örneğin 1.2-Debian için bir hata raporu alırsınız, ama üst proje güncellenmiş kütüphane paketiyle birlikte yalnızca “gerçek” 1.4’ü destekliyordur
Üçüncüsü ise bugünlerde büyük ölçüde ortadan kalkmış bir yöntem: Debian’ın yazılımı iyileştirebileceğine karar verip yama uyguladığı durumlar
Bu, SSH anahtarlarından rastlantısallığın kaldırılması gibi sorunlara da yol açtı: https://github.com/g0tmi1k/debian-ssh
Biri, Chrome’da olduğu gibi ayrı hata düzeltme sürümlerinin neredeyse hiç olmadığı ve hata düzeltmelerinin yeni sürüme dahil edildiği aşamalı sürüm modelidir
Diğeri ana sürüm odaklı modeldir; anlamsal sürümlemede olduğu gibi sürüm 1 ve 2 vardır, sürüm 2 çıktıktan sonra bile sürüm 1’e yalnızca hata düzeltmeleri uygulanmış 1.1 çıkar
Debian temelde yalnızca ikinci modelde iyi çalışır
API kararlılığını koruduğu için birinci modelle geliştirilen yazılımlarla uyumlu değildir
Bunu aşmak için Debian, sürüm 3’teki “düzeltmeyi” sürüm 1’e backport eder ve kendi 1.debian-2 sürümünü oluşturur
Sorun şu ki üst proje artık hiç yayımlamadığı bir davranışa ilişkin hatalar almaya başlar
Debian’ın bunu yapma özgürlüğü vardır; ancak üst projenin de Debian’ın yüklediği ek iş yükünden şikâyet etme özgürlüğü vardır
Gerekirse bu beklentilere uymayan üst projeleri yamalar; bunu doğrudan yapabilmesi de özgür yazılımın özüdür
https://www.debian.org/security/2008/dsa-1571 adresine bakabilirsiniz