[Gelistirici] Çomar ve Yanlışlar

Gökçen Eraslan gokcen at pardus.org.tr
21 Ara 2010 Sal 11:53:25 EET


On Monday 20 December 2010 08:43:20 Gökmen Göksel wrote:
>  - Model dosyaları comar paketinden geliyor, modelde bir değişiklik yapmak
> ya da model üzerinde bir değişiklik yapmak için comar paketinin
> güncellenmesi gerekiyor.
> 
>  - Model dosyalarında olduğu gibi haliyle policy dosyaları da (PolicyKit
> için) comar paketinden geliyor. Aynı problem burada da var.
> 

Modellerin paketlerden değil de COMAR'dan gelme nedeni sanırım aynı işlevi 
örneğin ağ işlemleri yapan 2 alternatif paketin aynı modeli sağlayabilmesi ve 
istenen durumda, istenenin tercih edilebilmesiydi. Yani COMAR sabit bir 
API/Model tanımlar, isteyen her paket bu Modeli sağlayan bir bacak taşır. 
İsterse birden çok paket de aynı modeli sağlayacak şekilde bacak taşıyabilir. 

Mesela bir nedenden hem kendi ağ yönetim altyapımızı geliştirmeye devam ediyor 
olsaydık hem de Gnome NM kullanmak durumunda olsaydık, Gnome NM ve Pardus NM, 
COMAR'ın Ağ Yönetimi için tanımladığı Model'i sağlardı ve 2009'da 
kullandığımız kendi arayüzümüz (teorik olarak) hiç değişikliğe uğramadan, 
sistemde Gnome NM kuruluysa onunla, Pardus NM kuruluysa da onunla 
çalışabilirdi. Modellerin COMAR'dan gelme nedeni bu. Bence, _manager'ların 
COMAR kullanmaya devam edeceğine karar verirsek_, Modellerin ve policylerin bu 
şekilde COMAR'da durması, olması gereken bir davranış. Belli bir olgunluğa 
eriştiğinde artık modellerde çok fazla değişiklik olmuyor, isterseniz bakın 
model dosyalarına ne sıklıkta commit gelmiş.

>  - Çomar bacakları konu ile ilgili olduğu düşünülen paketlerden çıkıyor ki
> bu  bacaklardaki en ufak bir değişiklikte de aynı problem ortaya çıkıyor;
> Boot.Loader bacağındaki bir değişiklik için grub paketi güncellemeniz
> gerekiyor.
> 
> Önerim, paketler ile dağıtılan çomar bacakları ve comar paketi ile
> dağıtılan  model/policy dosyaları için ilgili çomar bacağını ifade eden
> başka bir paket oluşturalım (örn. backend-boot-loader.xx.pisi) ve gerekli
> uygulamalara bu paketler için bağımlılık yazalım.
> 
> Bu şekilde bir düzene geçtiğimiz taktirde, mevcut manager-* aliemizin
> başka  dağıtımlarda kullanılabilmesi için şu anda zorunlu olan çomar
> bağımlılığından da rahatlıkla kurtulabiliriz; diğer dağıtımlar için
> hazırlanacak pakette, çomar bacaklarının KAuth için uygun hale getirilmesi
> ve söz konusu manager'ın yanında dağıtılıyor olması yeterli olacaktır.

Ben de, manager'ların diğer dağıtımların kullanabileceği şekle sokulmasını 
istiyorum ama doğru çözümü bilemiyorum. Üzerine daha fazla düşünmek lazım. 
Manager'ları COMAR'dan ayırmak için, bacakları site-packages'a herhangi bir 
kitaplık olarak gönderip, DBus aktivasyon ile çalışan wrapper'ler yazıp, 
Manager'ları bu wrapper'ları kullanacak hale getirebiliriz. O zaman örneğin 
User Manager, tr.org.pardus.UserManager arayüzünün addUser method'unu 
çağırdığında doğrudan bacak işini yapar ve kullanıcıyı ekler ve bu, wrapperlar 
ile manager kodları ayrı olduğu için abstraction da sağlar, fakar COMAR'ın 
modellerinden daha ince bir abstraction sağlar. 

Bu yaklaşımı yukardaki hayali Pardus NM / Gnome NM senaryosunu çözmek için 
kullanmak daha zor olur, çünkü COMAR modeli, bacağı, o modeli implement etmeye 
_zorluyor_. Ama sadece DBus aktivasyonla çalışan ayrı betikler haline 
getirdiğimizde bir bacağın _tam olarak_ neleri sağlaması gerektiğiyle ilgili 
bir kısıtlama olmayacak. Tabi bu kısıtlamalara ve geniş abstractionlara ne 
kadar ihtiyacımız var onu bilmiyorum.

-- 
Gökçen Eraslan
-------------- sonraki bölüm --------------
A non-text attachment was scrubbed...
Name: kullanılamıyor
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://liste.pardus.org.tr/gelistirici/attachments/20101221/3671fd5f/attachment-0002.pgp>


Gelistirici mesaj listesiyle ilgili daha fazla bilgi