[Gelistirici] kararli depoya paket gecis sureci
Ozan Çağlayan
ozan at pardus.org.tr
5 Ara 2008 Cum 09:41:28 EET
Doruk Fisek wrote On 04-12-2008 18:05:
> On hazirlik :
> 1) Bakıcısız tüm paketler işaretlenir.
> 2) Her bilesen icin birer bilesen sorumlusu secilir.
> 3) Sadece güvenlik güncellemelerinin yapılacağı bir kaynak depo
> olusturulur. Guvenlik depo sorumlusunun, guvenlik takımından biri
> olması mantıklı olur sanırım.
> 4) Tercihen ayri bir guvenlik deposu derleme ciftligi olur. Burada
> yapilan tum degisiklikler guvenlik deposundaki paketlere gore
> derlenerek sisteme kurulur. "Kırılma" riski en aza indirilir.
>
Sadece güvenlik güncellemelerinin yapılacağı bir depo demek, bir
dağıtımı geride birakıp diğerini geliştirmeye tekabül ediyor. Örneğin
Ubuntu yeni sürümü çıkardığı anda, o sürüm güvenlik ve bugfix dışında
güncelleme kabul etmiyor ve asıl bleeding edge geliştirme yeni depoda
devam ediyor.
200x çıktığı T anında, 200x'in güvenlik güncellemeleri dışında bir şey
kabul etmemesi onu benim bakış açımda ayrı bir sürüm haline getiriyor.
Olay sadece kararlılıksa,
1. 2007 sürümünde kalır,
2. 2008'e geçer ama sadece güvenlik güncellemelerini yapar.
2.seçenekle senin önerdiğinin arasında bir fark bulamadım ben. PiSi de,
paket yöneticisi de bu özelliği sağlıyor zaten. Adama yeni bir depo
ekletmek yerine paket yöneticisi ayarlarından "Sadece güvenlik
güncellemelerini yap" seçtirmek bu işi halletmiyor mu?
Ayrıca 2000 civarı kaynak paketin bir kısmı dağıtım çıktıktan sonra, bir
kısmı önce, kimi paldır küldür kimi özenle 2008'e merge edildi. 2008'in
çıkmasının üzerinden 6 ay geçti geçecek, hala şu ana kadar(sandbox
sızmaları yüzünden) aslında hiç çalışır durumda olmamış paketler
yakalıyoruz depoda. Sadece güvenlik güncellemeleri yapıyoruz bu depoda
diyeceksek, o depodaki 2000 küsür paketin tam takır çalıştığını taahhüt
etmemiz gerekiyor. İdeal dünyada etmeyi hepimiz isteriz o ayrı mesele.
> Sürekli düzenek :
> 1) Tüm geliştiriciler surum (2007, 2008, vb) kaynak svn depolarına
> erişip değişiklik yapabilir. Surum-guvenlik kaynak depolarına sadece
> güvenlik takımı insanları yazabilir.
>
Tüm geliştiricilerin sürüm kaynak svn depolarına erişip değişiklik
yapmalarını doğru bulmuyorum. Sürüm kaynak svn deposunda değişiklik
yapıldığı anda o paket farm'da bir sonraki çalışmada derlenecek paketler
arasına giriyor. Arada hiçbir kontrol mekanizması yok. Eğer bu
bahsettiğin adım, Merge işlemini ortadan kaldırmayı hedefliyorsa
gerçekten çok büyük sorunlarımız olur. Hiçbirimiz mükemmel değiliz, hata
yapıyoruz. Senin düzeneğinde bu depolar kararsız(normal) depoya işaret
edeceğinden çok fazla problem olmayabilir gibi gelse de kararsız ile
kullanılamaz'ı ayırt etmek lazım. Yepisyeni review'dan ilk paketini
geçirmiş birinden depolar arası merge'ü sorunsuz yapabilmesini beklemek
mi onlar için daha korkutucu yoksa bir mail atmak mı siz düşünün.
Ha merge yükü 2 kişiye biniyor o yüzden yıkalım bu duvarları diyorsan, o
ekipe birileri daha eklenebilir belki, bilemem.. Ama bence bu süreçte en
iyi işleyen taraflardan biri Merge süreci.
> 2) Her bileşenin sorumlusu, kendi bileşeninde yer alan paketlerde
> yapılan değişiklikleri takip eder. Gerekiyorsa müdahale eder, ilgili
> geliştiriciyi uyarır.
>
+1.
> 3) Her bileşenin sorumlusu, derleme çiftliğinde kendi bileşeninin
> paketlerini derletir[1] (ve test deposuna aktarılmasını sağlamış olur).
>
Bunun getirilerini aşağılarda tartıştınız ancak bana çok gerekli gibi
gelmedi.
> 4) Güvenlik deposunun paketlerinin derlenmesi ve depoya aktarılması
> güvenlik depo sorumlusu tarafından yapılır.
>
Güvenlik deposuna dair fikirlerimi belirttim yukarıda.
> 4) Güvenlik güncellemeleri test takımı tarafından hemen ve öncelikli
> olarak teste alınırlar. Hem surum-guvenlik hem de surum depolarına göre
> ayrı ayrı test edilirler.
>
Güvenlik güncellemelerinin, ister senin 2'li depo düzeneğinde, ister şu
anki tek kararlı depo düzeneğinde test edilmesinde ben bir fayda
görmüyorum. Güvenlik güncellemesi bir yazılıma yeni özellik katmıyor adı
üstünde, neyini test ediyoruz? Buffer overflow var diyor örneğin
advisory'de, oturup gerçekten overflow var mı ve açığı kapatmış diye mi
kontrol edeceğiz?
Güvenlik güncellemesi ortaya çıktığı anda yapılması gereken şey şu olmalı:
1. Yamayı pakete dahil et, derle, uygulamayı çalıştır, şöyle bir göz at,
2. Merge isteği yap, security olarak işaretlemeyi unutma,
3. Hemen merge edil, tek paket bile olsa, farm'a derlet ve gece 3
rsync'ini beklemeden depoya yansıt.
Tabi ki bu plan esnetilebilir örneğin rsync noktasında ya da geleceğini
bildiğimiz bir diğer güncelleme bir süre beklenilebilir. Ben en sert
planı yazdım.
Ha diyelim ki, öyle bir güvenlik güncellemesi yaptılar ki, açığı
düzeltirken, başka bir yerde yeni bir açık ortaya çıkardı ya da daha da
az olasılıkla olsa da yazılımın bir işlevini kırdı. Kusura bakmayın bu
noktada da, "bu güncelleme programı kırdı, almayalım" deme şansımız
olduğunu düşünmüyorum, o güncelleme yansıtılır, upstream durumu zaten
farkedince yeni güvenlik güncellemesi yayınlar, o da alınır..
> 5) system.base bileşenindeki paketlerin testi yapılırken, "emniyet
> mandalı" nedeniyle sadece system.base guncellenmesi durumu da farkli
> guncelleme safhalarindaki Pardus sistem kombinasyonları ile test
> edilmelidir [2].
>
Bu aşağıda, 2'de dediğin bir şekilde soruna yol açmamalı. Ben
hatırlamıyorum örneğini, (belki firefox sorunundaki glib
güncellemesinden bahsediyor olabilirsin, ama orada sorun çok daha dallı
budaklı bir şeydi).
system.base güncellemelerinde zaten daha yavaş ve tutarlıyız,
gerekmedikçe güncelleme çok fazla yapılmıyor.
> 6) CD içinde gelen paketler [3], ozel olarak gelistiricisi o paketle
> ilgili kendisinden onay alinmasini istemiyorsa, test deposuna girdikten
> 7 gun sonra test takimi araciligiyla test surecine alinir [4]. Bu
> surecten gecen paketler ilk toplu güncellemede kararli depoya aktarilir.
>
Anlamadığım 7 gün test deposunda bekledikten sonra bir de test takımı
aracılığıyla test sürecine mi alınacak? Eğer evetse neden?
Bu test konusunda şunu düşünüyorum. Baştan beri test deposu hep şu
şekilde kullanıldı:
- Bump et, merge iste, testte dursun.
Böyle bir düşünce yanlış diye düşünüyorum. Orası da insanlara sunulan
ikili bir depo. Adı da kararsız değil, test. Önce paketçisi bir süre
test etmeden, kullanmadan, "test deposuna girsin de orada millet
kullanıp sorunu varsa söyler nasıl olsa" diye düşünmemeli. Paket
devel'deyken kuran kullanan paket sahibi/bileşen sorumlusu bir sorun
yakalayamazsa, test deposu daha ince sorunların yakalanabileceği bir üst
katman olmalı.
Paketlerin burada bir X gün geçirip sonra bir de Y gün test sürecinde
geçirip üzerine Z gün sonraki toplu güncellemeyle kararlı depoya
girmesini yavaş bir süreç olarak görüyorum.
Geliştiricilerin daha dikkatli olmalı:
- Diğer dağıtımlara bakmalı, yeni sürüm başka bir yazılımın yeni bir
sürümünü özellikle istiyor mu?,
- Yamalar neler? Bu yamayı almalı mıyım, işe yarar gibi mi duruyor,
yoksa anlamsız mı?
- Bu kütüphanenin yeni sürümü, ona bağlı olan diğer yazılımları kırar mı?
Paketçisinin merge isteyip sallamadığı bu sorunları, Serbülent
revdep-rebuild yapınca yakalıyor. Böyle olmamalı.
> 7) Test sürecinde yakalanan hatalar için Uluzilla'da bir hata raporu
> açılır ve paketi güncelleyen geliştiriciye atanır. Hata çözüldükten
> sonra süreç yeni paketle tekrar başlar (don't pass go, don't collect
> 200 gayme).
>
> 8) CD içinde gelmeyen paketler test deposunda haklarında bir hata
> raporu açılmadan 7 gün zaman geçirirlerse [5] ilk toplu güncellemede
> kararlı depoya aktarılırlar.
>
Test ile ilgili fikirlerim yukarıda.
Benim süreç içinde en rahatsız olduğum şey, depoda N aydır çalışmaz bir
şekilde duran bir paket hakkında hata girilip de "bu paket çalışmıyor"
denildiğinde, düzeltilen paketin testte vakit geçirmesi. Paket zaten
çalışmıyor, kesinlikle test edilmesine gerek yok ve test edilmesinde
fayda yok, merge istediğim anda depoya alınması en akıllıcası.
Ya da mesela geçen gün firefox'a son anda ufak bir düzeltme girdi,
kesinlikle zararsız ve kozmetik bir şey. Bu tarz şeylerin de test
deposunda beklemesindense paketçisinin taahhüdünde doğrudan merge
edilmesi(ya da hadi 1-2 gün testte dursun diyelim) daha doğru olur.
Artık urgency=(low, medium, high, bugfix) tarzı bir şey mi yazıp bunu
belli ederiz merge mailinde, başka bir şey mi bilemiyorum.
Selamlar,
--
Ozan Çağlayan
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi