[Gelistirici] Kurumsal2 Depo Politikası (was Re: MySQL 5.5)

Serdar Dalgıç serdar at pardus.org.tr
14 Oca 2011 Cum 01:47:58 EET


13 Ocak 2011 Perşembe günü (saat 23:23:49) Ekin Meroğlu şunları yazmıştı:
> 
> <sildim>
>
> ... Test
> edilmesi için gerekli süreçleri yaratmadan, önlemleri almadan ne kadar
> evet dersek diyelim bu tip bir güncellemeyi depoya almayalım.
> 

ya da alacağımız depo "stable" depo olmasın. 

Depo ayrımının gerekliliğine ben de katılıyorum. Düşündüklerimi yazıya dökeyim 
dedim, biraz uzun oldu ama analitik oldu, gözünüzü korkutmasın ;) 

Erdem'in dediği gibi, "hemen, şimdi" olmasa da en kısa zamanda devel / stable 
ayrımını yapalım. Devel'i stable'a kopyalayıp başlatalım süreci.

* Stable kararlı tutulur.

* devel'deki paketlerin stable'a aktarılması Bugzilla üzerinden hata açılarak 
sağlanır.  Paketin kararlı olduğunu iddia etmek için belirli çıktılara 
bakabiliriz. İlk aklıma gelenler şunlar: 

Desteklediğimiz iki mimariyi de göz önünde bulundurarak.
- revdep-rebuild çıktısı
- checkelf çıktısı
- varsa paketin içinden çıkan testlerin çalıştırılması.
- varsa paketçinin yazdığı/kullandığı testler.
- test takımının paketin testi için yazdığı belgelerdeki testler.
- paketin üzerindeki hatalar, paket test edilirken karşılaşılan hatalar.

Stable'a paketin aktarılması için gözden geçirme yapacaklar da 

1 - paketin bileşeninin sorumlusu ya da üst bileşen sorumlularından biri (bu 
paketçinin kendisi de olabilir)

2 - Paketi test eden diğer geliştiriciler (en az bir, ama ne kadar çok 
kararlılığı onaylayan yorum gelirse güzel olur)

3 - Test Ekibinden bir kişi (ideal dünyada bu ŞART olmalı, ama Semen tek 
başına bütün stable'a alınacak paketlerin testlerine yetişemeyeceği için 
(Semen'den başka da test ekibi üyesi yok bildiğim kadarıyla) OPSİYONEL 
diyebiliriz)

4 - Bu verileri gözden geçirip paketin alınmasına OK verecek olan sürüm 
yönetici(si/lerinden biri)

Bu noktada test işini önemsemediğim zannedilmesin, tam tersine paketçilerin 
`self package testing` pratiklerini arttırmak, başta Semen olmak üzere testle 
ilgilenen arkadaşların üzerindeki yükü bir nebze hafifletmek amacıyla bunları 
yazdım.

Ayrıca bu yöntemle paket know-how'ının paylaşılması da sağlanacak. 
Geliştiriciler bakımını üstlenmedikleri paketlerdeki değişiklikler hakkında 
daha çok bilgi sahibi olacaklar. 

******
Peki devel/stable ayrımı hem kaynak, hem ikili depolarda mı olacak? Yoksa 
sadece ikili depolarda mı olacak? Her iki seçenek de aşağıda:
******

AYRI KAYNAK DEPO:
---------------------------
İki mimari iki farklı depo, 4 buildfarm demek, bu da çok fazla iş gücü 
anlamına geliyor, fiziksel imkanların da olgunlaşması lazım. (Bildiğim 
kadarıyla "hemen yarın 4 buildfarm'ı ayağa kaldırıyoruz" durumunda değiliz) 
Avantajları:

1 -) Her iki deponun farklı distribution.xml'leri olacak, obsolete paketler 
açısından herhangi bir karışıklık olmayacak. 
(Sorunlu durum örneği: X paketini replace eden Y paketi stable'a girmedi, ama 
devel'de. Tek kaynak olsaydı distribution.xml'de X obsolete işaretlenirse Y 
devel'den stable'a geçene kadar stable'da X paketi olamayacak. Workaround: 
Replaces'ları obsolete işaretlemeyiz, o zaman da dist-upgrade'lerde başımızı 
ağrıyor.)

2 -) Stable'da bir pakete güvenlik güncellemesi geldi diyelim. O güvenlik 
sadece stable'da yapılabilecek, devel'deki yeterli miktarda test edilmemiş bir 
paketi stable'a almaya gerek kalmayabilecek. 

Örnek senaryo: X paketi version 1.0.0 stable depoda olsun. Devel'deki sürümü 
de 1.1.0. X paketinin 1.0.0 sürümünü etkileyen bir güvenlik açığının 
güncellemesi sadece stable'a uygulanabilecek. 
Pardus 2009'dayken devel'deki 1.1.0 paketinin üzerine yamayı ekleyip 1.1.0 
paketini de stable'a almak zorunda kalıyorduk.

TEK KAYNAK DEPO:
---------------------------
Bakımı daha kolay, 

* Devel ikili deposundan stable ikili deposuna paketler kopyalanacak, 
pardus-2009-test -> pardus-2009 'da olduğu gibi.

1 -) İkili depoların index'i çıkartılırken ayrı distribution.xml'ler kullanmak 
zorunda olacağız. Pardus 2009'daki gibi "not gone to binary stable yet, please 
don't remove this mark" gibi bir işaretçi kullanıp stable'da ve devel'de 
kullanılacak distribution.xml'leri çok dikkatli oluşturmamız lazım. (sürüm 
yöneticileri için PITR.)

2 -) Güvenlik güncellemesi sorunsalı, üstte anlattığım senaryodan muzdârip 
olacağız. "Test takımına güvenimiz tam" :) diyip Pardus 2009'daki davranışı 
sürdürür müyüz, bilmiyorum.
---------------------------
Aklıma gelenleri özetlemeye çalıştım. Atladığım eksik bir şeyler ya da yanlış 
yorumladığım bir kısım varsa; eklemek istediğiniz, yorumunuz, önerileriniz 
varsa buyrun.

Bu tarz sınırlar çizmediğimiz sürece "..Test edilmesi için gerekli süreçleri 
yaratmadan, önlemleri almadan.." gibi cümlelerimiz hep havada kalacaktır.

-- 
- Serdar Dalgic
TUBITAK/UEKAE - Pardus GNU/Linux
http://www.pardus.org.tr/eng



Gelistirici mesaj listesiyle ilgili daha fazla bilgi