Linux Çekirdek Geliştiricisi Olmak (Bölüm 1): İlk Yamanı Göndermek
Linux çekirdeğine katkıda bulunmak dışarıdan bakıldığında hepimize biraz korkutucu, hatta bazen imkansız gibi görünmüştür. Ancak bu devasa projenin bir parçası olmak ve kodunuzu dünya çapında kullanılan o ana havuza dahil etmek sandığınız kadar karmaşık değil. Linaro mühendislerinin yıllara dayanan tecrübelerinden yola çıkarak hazırladığım bu üç bölümlük seride, adım adım bir çekirdek geliştiricisine dönüşme sürecini işleyeceğiz.
Bu ilk bölümde kod yazmaktan öte, işin mutfağına giriyoruz: Ortamı hazırlamak, formatı tutturmak ve o ilk yamayı göndermek.
Hazırsan terminalini aç, başlıyoruz.
1. Adım: Kod Yazmadan Önceki Felsefe
Klavyenin başına geçip kod yazmaya başlamadan önce anlamamız gereken en önemli şey “Upstream” mantığıdır. Linux çekirdeği devasa bir projedir ve buraya gönderilen her kod parçasının belirli bir formata ve zihniyete uyması gerekir.
Yazdığın yama işte böyle ana havuza ulaşır. Maintainer’ların gözünden geçen kodlar merkeze kabul edilir.
Kendine sorman gereken ilk soru şu: “Bu yaptığım değişiklik sadece benim işime mi yarıyor, yoksa topluluğa bir faydası var mı?”
Eğer yaptığın değişiklik şunları içeriyorsa doğru yoldasın demektir:
- Gerçek bir hatayı veya güvenlik açığını düzeltiyorsa.
- Yeni bir donanımı herkesin kullanabileceği şekilde çalıştırıyorsa.
- Performansı artırıyor veya kodun karmaşıklığını azaltıyorsa.
- Artık kullanılmayan ölü kodları temizliyorsa.
Ancak yaptığın şey sadece senin bilgisayarındaki o garip kurulumu çalıştıran kirli bir çözümse veya sadece kapalı kaynak bir uygulamaya hizmet ediyorsa, bu kodu kendine saklaman daha iyidir. Upstream, herkesin ortak faydası içindir.
2. Adım: Gerekli Araçları Kuralım
Çekirdek geliştiricileri hangi editörü veya hangi e-posta istemcisini kullanacakları konusunda saatlerce tartışabilirler. Ancak son yıllarda işleri inanılmaz kolaylaştıran modern bir standart oturdu: b4.
Ubuntu üzerinde çalışıyorsan b4 aracını ve diğer bağımlılıkları kurarak başlayalım. Bu araç yamalarını hazırlamaktan göndermeye kadar tüm süreci yönetecek.
pip install --user b4
Git ayarlarını yaparken dikkat etmen gereken en kritik nokta kimliğindir. Linux topluluğunda güven esastır, bu yüzden takma isimler yerine gerçek adını ve soyadını kullanmalısın.
git config --global user.name "Adın Soyadın"
git config --global user.email "email.adresin@ornek.com"
Eğer kurumsal bir e-posta adresi kullanıyorsan ufak bir uyarı: Şirket sunucuları genelde maillerin altına “Bu mesaj gizlidir” gibi uzun yasal metinler ekler. Bu durum senin yamanı bozar ve uygulanmaz hale getirir. Böyle bir risk varsa, b4 aracının web üzerinden gönderim özelliğini kullanmak en temiz yoldur.
3. Adım: Çalışma Ortamını Hazırlamak
Çekirdek geliştirmede her konu için ayrı bir dal yani branch oluştururuz. Genelde geliştirmelerimizi hedeflediğimiz altsistemin yöneticisinin “next” dalı üzerine kurarız. Eğer spesifik bir dal bulamazsan linux-next en güvenli başlangıç noktasıdır.
Önce temelimi atalım:
git remote add next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch next master
git checkout next/master
Şimdi çalışacağımız konu için b4 ile yeni bir alan açalım. Buraya vereceğin ismin e-posta listelerinde herkes tarafından görüleceğini unutma, o yüzden şirket içi gizli kod adlarını burada kullanma.
b4 prep -n usb-duzeltmesi
4. Adım: Değişiklikleri Yaparken Altın Kurallar
Kodunu yazdın ve commit aşamasına geldin. Burada uyman gereken kurallar yazdığın kod kadar önemlidir.
Öncelikle her commit atomik olmalı. Yani tek bir commit, tek bir mantıksal işi yapmalı. Eğer commit mesajında “Bunu düzelttim VE şunu ekledim” diyorsan, onu ikiye bölmen gerekir.
Neden mi? Çünkü yarın bir gün bir şeyler bozulduğunda, geliştiriciler git bisect komutuyla hatanın kaynağını ararken senin commit’ine denk gelebilirler. Eğer sen bir commit içinde hem hata düzeltip hem yeni özellik eklediysen, hatayı ayıklamak imkansız hale gelir. Ayrıca serinin ortasındaki bir commit derlemeyi bozuyorsa, bir sonraki commit bunu düzeltse bile kabul edilmez. Her adım tek başına çalışabilir durumda olmalıdır.
Ayrıca devasa yama serileri göndermekten kaçınmalısın. 15 parçadan büyük seriler genelde yöneticilerin gözünü korkutur ve incelenmesi çok uzun sürer.
5. Adım: Yamanı Nasıl Anlatırsın?
Geldik işin en önemli kısmına: Commit mesajı. Bu mesaj senin hikayendir ve kodu neden değiştirdiğini anlatır.
Konu başlığın kısa ve emir kipinde olmalı. Format genelde şöyledir:
altsistem: değişikliğin özeti
Örneğin: arm64: dts: qcom: x1e80100: Fix USB interrupts.
Mesajın gövdesinde ise NASIL yaptığından çok NEDEN yaptığını anlatmalısın. Sorun neydi? Sen nasıl çözdün? Nasıl test ettin?.
Mesajın en altına ise şu etiketleri eklemen şarttır:
Signed-off-by: Bu, kodu benim yazdığımı ve lisansına kefil olduğumu beyan ederim demektir.Fixes: Eğer bir hatayı düzeltiyorsan, o hatayı yaratan eski commit’in kodunu buraya eklemelisin.
Çok Kritik Bir Uyarı: Sakın commit mesajını yapay zekaya yazdırma. Yöneticiler senin konuyu anlayıp anlamadığını görmek ister. Yapay zeka tarafından yazılmış, süslü ama teknik derinliği olmayan mesajlar hemen fark edilir ve güven zedeler. Kendi cümlelerinle yazdığın kısa ve öz bir açıklama, süslü bir robot metninden bin kat değerlidir.
6. Adım: Doğru Kişilere Ulaşmak ve Kontrol
Yamanı hazırladın ama kime göndereceksin? Eskiden karmaşık scriptlerle uğraşırdık, şimdi b4 bunu bizim için hallediyor. Yamanı kimin incelemesi gerektiğini otomatik bulup listeye eklemek için şu komut yeterli:
b4 prep --auto-to-cc
Göndermeden önceki son virajda kendi kalite kontrolünü yapmalısın.
- Derle:
make W=1 C=1komutuyla uyarıları da açarak derle. - Stil Kontrolü: Kodun yazım kurallarına uygun mu?
b4 prep --checkkomutu “ERROR” veya “WARNING” veriyorsa mutlaka düzelt. - Test Et: Sadece derlemek yetmez, cihazda boot ettiğinden ve başka yerleri bozmadığından emin ol.
Hazırlıktan gönderime 4 adım: b4 aracı ile yama göndermek bu kadar basit.
7. Adım: Ve Gönderiyoruz!
Her şey hazır. Derin bir nefes al. Önce bir prova yapıp kimlere mail gideceğini görelim:
b4 send --dry-run
Eğer her şey yolundaysa, artık tetiğe basabilirsin:
b4 send
Sonuç: Sabır
Tebrikler! İlk yaman şimdi e-posta listelerinde ve dünyanın dört bir yanındaki geliştiricilerin önünde. Şimdi yapman gereken şey sabırla beklemek. Cevap gelmesi birkaç saat de sürebilir, birkaç hafta da. Yöneticiler genelde çok meşguldür ve farklı saat dilimlerindedir.
Bu serinin bir sonraki bölümünde, gelen cevapları nasıl yöneteceğimizi ve kod inceleme sürecinden nasıl sağ çıkacağımızı konuşacağız. Takipte kalın!
Yorumlar