TWIX nasıl gidiyor?
Bir zamanlar, biryerlerde TWIX diye birşeyden bahsetmiştim. TWIX şu: Linux sisteminizin kontrol paneli ve “ince ayarları” yapan bir araç.
Pozitif Linux’a dair hödük ve salakça bazı tepkiler, bu ülkede işe yarar Bir şey yapmaya çalışmanın zevzekçe bir çaba olduğunu iyiden iyiye kanıtladı bana. Cuma gecesi, TWIX dosyasını tekrar açtım ve yepyeni bir proje haline getirdim. Birsürü tasarım planım da değişti.
TWIX’de artık GAMBAS ve shell scriptlerinden eser yok. GAMBAS ile yazdığım kodu, hard disklerden birinin kuytu bir köşesine atıp yeni baştan başladım. Bu sefer, PHP ile. Bunun bazı avantajları var: Sistem gereksinimleri çok az, web tabanlı uzaktan kontrol mümkün ve artık AJAX sayesinde güzel görünen akıllı arabirimler oluşturmak çok da zor değil.
Zordan başlayıp, ağdan girdim. Bir miktar kod yazdım; açıkçası şu an yazdığım kod, beni bile şaşırtan bir hızda çalışıyor. Şu an itibariyle, sistemin tüm ağ ayarlarını okuyup, belli koşullara göre ayarları sorunsuz yapabiliyorum (network kısmından bahsediyorum tabi). Şimdilik memnunum; çünkü KDE ile gelen denetim masasından ya da SUSE ile gelen YAST, ya da Mandriva tabanlı dağıtımlarla gelen DRAK’tan daha iyi çalışıyor. Öte yandan, çok ciddi bir sorun var…
Sorun şu: Linux ortamında, sayısız özel ayar olası. “Ne gibi?” derseniz çok kısa bir cevap vereyim; örneğin bir ethernet kartına birden fazla IP adresi atayabilirsiniz. (Şimdiye kadar gördüğüm kontrol panelleri bunu yapamıyor) Örnekler çok ama şu an verecek ruh halinde filan değilim; bu sorunu wizard’lar sayesinde aşacağım.Açıkçası başka pratik bir yolu da yok; zira Linux’un ağ kısmı, dipsiz ve karanlık bir kuyu. Üstüne üstlük, konfigürasyon dosyaları tam bir mezbelelik. Aşırı plansız, düzensizler. Bu konuda, KDE geliştiricilerini -kısmen- kutluyorum. KDE’nin yapılandırma dosyaları son derece kötü -hatta hiç- dokümente edilmiş olmasına rağmen, resmen askeri nizama sahip! Dolayısıyla, TWIX’in KDE ayarları modülünü yazmak, benim için tatil gibi Bir şey olacak.
Fazla detaya girmek istemiyorum, çünkü şu aşamada elimde çalışan 7 tane, tamamen sıfırdan yazdığım fonksiyon var. Bunları düzgün bir arabirimde bir araya getiremedim, çünkü tasarım konusunda hayli zayıfım. (Kendi yaptığım deneysel arabirim çok uyuz göründüğü gibi, adam gibi de çalışmıyor; ama PHP tabanlı yönetim kodları işlerini mükemmel ve hızlı yapıyorlar) Üstelik, JavaScript’e herzaman şüpheli baktığım için, AJAX güçlü olduğum bir konu değil. Keşke GFXDesign gibi üstadlar bir el atsa!
Arada birkaç “eşantiyon” PHP fonksiyonu da yazdım, bunlarda CPU bilgisi, PCI kartlar gibi bilgileri topluyorlar. Aslında bunları PhpSysInfo projesinden araklamayı düşünmüştüm; ama yazdıkları kodu anlayana kadar, yenisini yazmak daha kolay ve hızlı oldu.
Amaçlarımı, gelişmeleri ve kodu ayrı bir sayfada -muhtemelen pozitifpc.com altındaki başka bir subdomainde- hem İngilizce, hem Türkçe olarak anlatacağım zaten. Yurtdışından katılım bekliyorum; zira kod çok temiz, basit anlaşılır oldu. Yapı içinde aynısını söyleyebilirim; ama web sayfalarının tasarımı beni kasacak. Temiz bir template sistemi ve okunabilir AJAX -Javascript- kodları için, ya kendimi bu alanda bir miktar eğitmem, ya da bu becerilere sahip birini bulmam gerekecek.
Neden PHP?
Aslında Python’da daha iyiyim. (Son PHP kodunu yazdığımda, sanırım 2000′de bile değildik!) Ama Python’u sevmiyorum ve bir kontrol paneli için, yanlış bir seçim. Zibilyon tane Python modülünü, ister Debian olsun, ister Red Hat tabanlı olsun, herhangi bir dağıtım altında sorunsuz ve az yer kaplayacak şekilde kurmak haddinden fazla zor. PHP çok daha az yer kapladığı gibi, Zend ile birlikte kullanıldığında, Python’a nal toplatıyor (bunu birgün söyleyebileceğimi hayal bile edemezdim!)
Üstelik PHP bilen daha çok insan var ve düzgün, “enterprise” düzeyde modül ve fonksiyonlara sahip. Pythoncular kızmasın ama bana biraz oyuncak gibi geliyor.
Bir başka alternatif Perl idi, Perl’e çoğu insanın olduğu gibi, benim de kanım ısınmadı. Üstelik, Perl bilgim çok sınırlı. Perl’in bir sıkıntısı, dağıtımlar arasındaki kurulumunun Python’dan daha problemli olması. Örneğin, Mandriva, kendi kontrol paneli başka dağıtımlarda çalışmasın diye, uyduruk Perl paketleri hazırlamış. Mandriva Control Center’in çok kısıtlı bir kısmını, Ubuntu üzerinde, deveye hendek atlatarak (Perl’in logosu da deve,ne tesadüf!) çalıştırmayı başardım. Bu kayda değer bir başarı da değildi; üstelik Mandriva Control Center’ın çalışma hızı, devenin yürüyüş temposu civarında.
YAST da ayrı bir macera. Birileri, YAST2′yi Ubuntu üzerinde çalıştırmak için 2 sene harcamışlar ve aldıkları mesafe ürkütücü derecede az. Kısa bir denemenin ardından, YAST sevdasından da vazgeçtim. Kaldı ki ayar modülleri filan çalışsa bile, RPM ile entegre olan kısımları yeni baştan yazmak gerek; zira RPM ile kullanılabilen fonksiyonları, böyle kapsamlı bir program içinde DPKG ile çalışır hale getirmenin kısa ve kolay bir yolu yok.
PHP ile hazır gelen sayısız modül olsa da, TWIX ile bunların çoğunu kullanmayacağım. Hatta, hazır gelen bazı fonksiyonları bile kullanmayacağım. Mümkün mertebe, standart fonksiyonları kullanmanın bariz avantajları var; kodu herkes anlıyor, kaynak sıkıntısı yok, kurulum paketi küçük oluyor ve genelde daha hızlı çalışıyor. Şimdiye kadar, kaçamadığım bir tek Regular Expressions oldu; bir de KDE için XML kütüphanelerini kullanmayı planlıyorum. Amacım, Mandriva Control Center ya da SUSE’nin YAST2’si aksine, 100 MB gibi bağımlılıklar gerektirmeyen, 3-5 MB tutan, ama herşeyi yapabilen bir kontrol paneli yazmak. Web tabanlı yönetim ve embedded cihazlarda bile kullanılabilecek kadar küçük olması en büyük avantajları (tabi embedded cihazlarla çalışması için 300K’lık browser, lighthttpd ve JavaScript’in çıkarılması gibi modifikasyonlar gerekecek; şu an için iki sürümü paralel götürebilirim gibi görünüyor)
true :
Eyl 17, 07 at 9:20 pmTwix projenize devam etmeye karar vermenize sevindim
Java ve perl gibi yorumlanarak çalışan programları hiç sevmiyorum
bkz Mandriva kontrol merkezi özelliklede
paket yönetim aracı (grafik) sistemi adeta esir alıyor
sırf bu yüzden Mandriva kullanmıyorum
Özelliklede sistem yönetimi gibi önemli işleri üstlenecek programın kesinlikle
çok hızlı olması gerekir ve sisteme az yük bindirmeli.
Twix’i alfa sürümünden itibaren test edebilirim her halde Debian testing/unstable üzerinde çalışır
Barış Atasoy :
Eyl 17, 07 at 9:51 pmAslında TWIX tüm dağıtımlarda çalışabilir. Başta, Debconf ya da Drak(zart zurt) gibi uygulamaların konfigürasyon dosyalarını hallaç pamuğu gibi atmalarından biraz korkmuştum; sonra baktımki hiçbiri “ince ayar” yapacak durumda değil.
TWIX şu an zaten Debian üstünden gidiyor. Paket yönetimi kısmında sadece bilgi sağlamakla yetineceğim (en azından şu an planım bu ve “eşantiyon” diyebileceğim bir fonksiyonda yazdım; kurulu paketleri,kapladıkları yerleri, hangi dosyanın hangi pakettte olduğunu vs gösteriyor). Ha, burada biraz sorun çıkabilir gibi görünsede -örneğin Mandriva,Redhat,fedora,pclinuxos vs gibi rpm tabanlılar için- bu fonksiyonları çevirmeye bile gerek duymadan kullanabileceğiz. Aslında mantık basit; örneğin dpkg için apt-x ve dpkg’yi kullanıyorum; mesela dpkg-query -S konqueror yerine urpmi -search konqueror çevrimi olacak. Bu aslında fonksiyon olarak, query_package(’konqueror’) biçiminde çağrılacak; fonksiyon dağıtıma göre sorgulama için rpm mi, dpkg mi kullanacağına karar verecek. Son derece basit ve etkili..
Bunu elbette YAST ve MCC’ciler de düşünmüşlerdir; ama kendi kontrol panelleri başka dağıtımlarda çalışmasın diye korkunç derecede kasmışlar. Hani “kod açık,al yap” diyorlar ama yerse! Gerçek bir “özgür kontrol panele” gerçekten ihtiyaç olduğunu düşünüyorum.
true :
Eyl 18, 07 at 12:04 pmMantık çok güzel ama şunu kendime sormadan edemiyorum dünya üzerinde yüzlerce Linux dağıtımı var yüzbinlerce geliştirici var hiç biri böyle bir projeye girişmedi neden ?
(yast ve mcc saymıyorum)
Ha tamam Unix tabanından gelen geliştiriciler grafik arayüze sıcak bakmıyor olabilir peki ya diğerleri ?
Birde webmin var ama oda tam sizin düşündüklerinizi yapamıyor anladığım kadarıyla (perl ile yazılmış galiba)
Barış Atasoy :
Eyl 18, 07 at 4:49 pmBirinci sorunuzun yanıtını şöyle verebilirim: bu hiç para kazandıracak bir proje değil. Oysa kernel yazan adam, apache yazan adam çatır çatır para kazanıyor. Ona bakarsanız, Linux’un çok sayıda eksiği var. en basitinden, GIMP’in arayüzü bile senelerdir yenilenmiyor. Geliştiricilere para gelmedikçe bu heyecanlar uzun süre devam etmez. Kendi adıma bir başlangıç yaptım, birkaç kişi daha katılırsa, bundan gerçek anlamda büyük bir proje olarak bahsedebiliriz. Çünkü, KDE ve GNOME’dan bağımsız, yetenekli bir araca gerçekten çok ihtiyaç olduğunu düşünüyorum.
Birde bu kolay bir proje değil: örneğin, bir network kartının bile sayısız ayar kombinasyonu var. Şahsen karmaşık yapılandırmalarda, wizard kullanmadan kimsenin bir çözüm bulabileceğini sanmıyorum; bende bu yolu izleyeceğim zaten. Onun dışında, X’i, KDE’yi, DNS,DHCP gibi serverları iyi bilmek, üstüne de program yazabilmek gerek. Kısacası, her alanda uzman olmak gerekmesede, çok sayıda konuya hakim olabilmeniz, ya da büyük bir ekip kurabilmeniz gerek.
Evet; webmin Perl ile yazılmış ve çok çok güzel bir araç. Oldukça da eski. Ancak çok karmaşık ve hemen hemen tamamen server ortamı düşünülerek yazılmış. Ben serverlara webmin kadar müdahale etmek amacında değilim; amacım masaüstü kullanıcısına bu imkanları sağlamak ve sistem yöneticilerinin de, tek tek bilgisayarların ayarlarını uzaktan yapabilmelerini temin etmek. Üstelik, webmin en azından CD ile gelen bir dağıtımla verilemeyecek kadar yer kaplıyor (38 MB kendisi+Perl gibi bağımlılıklar,standart Perl paketlerinin dışında çok sayıda ek Perl modülüne ihtiyaç duyuyor)
UNIX tabanından gelenlerin düşünceleri beni ilgilendirmiyor. Çok güzel ve kullanışlı araçlar yazmışlar, lspci gibi. Ama bu araçlarla sıradan bir kullanıcının sisteme hakim olması mümkün değil. GUI de onların işi değil; çünkü ev-iş kullanıcısını filan değil, sistem yöneticilerini hedefliyorlar. Bu biraz arada kalmış bir alan yani.
Serkan Altuntaş :
Eyl 19, 07 at 3:18 amPHP ile yazılmasına sevindim. Ne de olsa kaynak kodunu anlayabileceğim.
Fırsatçılık yapıp Python ile bir benzerini hazırlarım diye tahmin ediyorum. Senden önce birinin aynı yolda yürümesi işi kolaylaştırıyor. Ama tabi benim ki biraz kendimi test etme / geliştirme projesi olur. İlk kaynak kodu yayını başladığı gibi girişmek istiyorum. Ama şu web servisi şeklinde sunma işine hiç girmem herhalde.