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)