GTK+ ile ilgili temel bilgiler, Bölüm 3: GTK+ nasıl yayılır?
Örnek GTK+ uygulamalarına ve hazır geliştirme araçlarına bakış
Düzey: Başlangıç
Maciej Katafiasz
(ibmdw@mathrick.org),
Öğrenci, Bilgisayar Bilimleri
07 Mart 2006
GTK+ ile ilgili temel bilgiler" adlı bu dizinin önceki iki bölümünde GTK+'nın ne olduğu ve ne için kullanıldığı açıklandı. Dizinin son bölümü olan bu makale ise ürününüzü kullanıcıya sunmak için gereksinim duyduğunuz her şeyi kapsar. Diğer bir deyişle, bu makalede bir GTK+ uygulamasını nasıl yayacağınızı öğrenirsiniz.
Benzersiz olmak genellikle iyi bir özelliktir, ancak kitaplıklar söz konusu olduğunda değil. Yazılım söz konusu olduğunda daha geniş kullanım, daha fazla inceleme, raporlanan (ve düzeltilen) daha fazla hata ve farklı örneklerin ve olağandışı durumların test edilmesi için daha fazla olanak anlamına gelir. Bütün bunlar genellikle daha iyi ve kullanımı daha kolay kitaplıkların oluşturulmasını sağlar. Bu bakımdan GTK+ da önemli ve geniş kullanıma sahip yazılım paketlerinden biridir. GTK+'nın üzerinde çalıştığı farklı platformlar hakkında aşağıdaki bilgilere dikkat edin:
- UNIX®
- UNIX, GTK+'nın üzerinde yazıldığı orijinal platformdur ve GTK+ (rakip Qt araç takımıyla birlikte) bir UNIX standardıdır. Kelimenin tam anlamıyla binlerce GTK+ uygulaması yazılmıştır ve bunlar UNIX (ve UNIX benzeri) sistemler üzerinde çalışmaktadır. Bağımsız uygulamaların yanı sıra, GTK+ iki büyük masaüstü ortamını (GNOME ve XFce) da barındırarak eksiksiz bir kullanıcı deneyimi sunmayı hedeflemektedir. Bu zenginlik her bir gelişmenin yeni kazanılan yeteneklerle yeni projeleri desteklediği kendi kendini sürdüren ekosistemler yaratır. Bu gelişimin birçok sonucu katlanarak GTK+'nın kendisini oluşturmuştur; örneğin, libgnomeui'nin büyük bölümleri artık asıl GTK+ içinde bulunabilir.
- Microsoft® Windows®
- GTK+'nın üzerinde çalıştığı platform kümesine daha sonra Win32 bağlantı noktası (port) eklenmiştir, ancak artık Win32 kendi başına birinci sınıf bir üyedir. Birçok küçük ve orta büyüklükteki GTK+ uygulaması Win32 üzerinde hemen derlenip çalışmaya başlar (elbette esasen UNIX'e özgü herhangi bir şey yapmamaları koşuluyla) ve daha büyük uygulamalar başarıyla barındırılabilir. Orijinal GNU Image Manipulation Program (GIMP) burada en iyi (ve kronolojik olarak ilk) örnektir, ancak tek örnek de değildir. Örneğin, mükemmel bir ürün olan Gnumeric hesap tablosu V1.4 yayın düzeyinden bu yana bir Windows bağlantı noktasını desteklemektedir.
- Mac OS X
- Apple'ın en son işletim sisteminin temelinde UNIX bulunmaktadır; bu nedenle, GTK+ uygulamalarının Mac üzerinde çalışması zor değildir. Aslında, GIMP gibi bazı uygulamalar, Mac OS X'in benzersiz kullanıcı arabirimi (UI) kurallarına daha iyi uyacak şekilde özel olarak değiştirilmiştir.
İsteseniz de istemeseniz de, yazılım geliştirme, yalnızca kod satırları yazmaktan çok daha fazlasını gerektirir. Başarılı bir ürün yaratmak için, önce geliştiricilerinizin çalışmalarına olanak verecek bir üretim hattı oluşturmanız gerekir.
Bu üretim hattının en önemli kısmı elbette programcıdır. Bir kitaplığın kullanımı zorsa, garip gereksinimleri varsa ya da diğer bileşenlerle uyum sağlaması zorsa, ürününüz için iyi bir temel olmaz. Neyse ki GTK+'da bu sorunların hiçbiri yoktur. Uygulama programı arabirimi (API) tutarlıdır (geriye doğru uyumluluk gereği ara sıra ortaya çıkan uzlaşmaları saymazsanız) ve kolayca kullanılıp hatırlanacak şekilde tasarlanmıştır. Başka kitaplıklarla çatışmaları önlemek için gerekli özen gösterilir: Ad boşlukları düzgün bir şekilde ayarlanır (belirli programlama dili için mevcut mekanizmalar kullanılarak) ve bağlantı sağlanırken kitaplığın güvenli ve hızlı olması için dışa aktarılan simgelerin sayısı minimumda tutulur.
|
Derleme, geliştirme sırasında binlerce kez yapacağınız bir
işlem olduğundan,
doğal olarak sizi bu işlemi el ile gerçekleştirmekten
kurtaracak otomatik bir oluşturma sistemi
kullanmak isteyeceksiniz. Ve bu oluşturma sisteminin tüm
yazılım oluşturma
sürecinizi ele alması gerektiği için,
parçaların birbirleriyle uyum içinde
olmasını sağlamanız gerekir. Bu konuda GTK+ gerçekten
başarılıdır. GTK+'nın gerçek
anlamıyla tek bir bütünleşme noktası vardır: pkg-config
komutu. Bu
komut, GTK+'nın var olup olmadığını ve doğru sürümde
olup olmadığını denetlemenizi
ve derleyicilerin kitaplıklarını bulabilmeleri için,
tüm o anlamsızca uzun ve sıkıcı
seçenek satırlarını bölmenizi sağlar.
GTK+ ayrıca hiçbir özel gereksinime sahip değildir ve kullanmak için yapmanız gereken tek şey bir üstbilgi dosyası eklemektir. Herhangi bir önişlemci ya da özel derleyici gerektirmediği gibi, beklenmedik etkileri olabilecek başka hiçbir şey de gerektirmez.
GTK+'nın kendisi GNU Autotool araçlarını kullanır
ve GTK+'nın tek bir çağrıyla
saptanıp otomatik olarak uygun bir şekilde kurulmasına olanak veren
hazır Autoconf ve
Automake (GNOME projesi için yazılmıştır) makroları
içerir.
Farklı bir oluşturma sistemi kullansanız da, GTK+'yı kolayca bununla
bütünleştirebilirsiniz. Gereksiniminiz olan tek şey
iyi tanımlanmış bir
pkg-config
çağrısıdır. Ya da
dizinlere dayalı bir sistem
kullanıyorsanız (Microsoft Visual Studio gibi), oluşturma yolunuza
birkaç dizin
eklemeniz yeterli olacaktır.
Tamamlanmış uygulamanızın kullanıcılara sunulması
Tamamlanan ürünlerin kullanıcılara sunulması büyük oranda platforma özeldir ve bu nedenle de uygulamanızı GTK+ ile nasıl bütünleştirdiğiniz platforma göre farklılık gösterir. UNIX platformlarında ve özellikle de Linux®'ta, GTK+ bir işletim sistemi sağlayıcısı tarafından dağıtılan bir sistem kitaplığı olarak görülebilir. Bunu istemezseniz, Autopackage projesi (bkz. Kaynaklar), gerekli kitaplıkları otomatik olarak kuran paketler yaratmanızı sağlayacak bir çözüm olabilir.
Windows üzerinde birçok yükleyici sistemi vardır. Örneğin, standart Windows InstallShield ve Nullsoft'un ürünü NSIS, GTK+ da dahil, çeşitli yazılım ürünlerini sağlamak için yaygın olarak kullanılan ürünlerdir. Kitaplığın tüm ikili moddaki dağıtımlarında standart kayıt anahtarları ve yapılandırma verileri kullanılır. Bu, birden çok uygulamanın aynı paylaşılan kopyayı kullanmasına olanak verir ve ayrıca başka yükleyici sistemler kullanmayı seçerseniz uygulamanızı güvenli bir şekilde paketlemenizi sağlar.
Platformlar arası kullanılabilirlik
Hedef sisteminize bağlı olarak, kullanılabilirlik (ve bunun sonucu olarak yaymaya ilişkin beklentiler) farklılık gösterir:
- Bir Linux dağıtımı için, GTK+ olanağının olağan dağıtım kanallarından edinilebileceğini varsayabilirsiniz. Çoğu dağıtım, GTK+ olanağının yeni sürümlerini hemen devreye alacak kadar hızlıdır. Belirli bir dağıtımın son yayın düzeyinde, en azından son iki sürümün var olabileceğine güvenebilirsiniz. Ancak tüm kullanıcılarınızın Linux sürümlerinin güncel olmasını güvence altına alamayacağınız için, uygulamanızın birlikte çalışabileceği en eski Linux sürümünü hedeflemelisiniz.
- Windows kullanan bilgisayarlarda, GTK+ kesinlikle bir üçüncü taraf bileşenidir. Diğer yandan, farklı yükleme paketlerinin tek tip düzenleri sayesinde, mevcut olan ya da kendiniz yükleyeceğiniz bir GTK+ yüklemesine güvenebilirsiniz. GTK+ çalıştırma zamanı dosyalarının kurulması, kurulum sürecinize dahil olduğu için, hedeflediğiniz sürümleri seçebilir ve mümkünse eski sürümlerle devam edebilirsiniz. GTK+ ekibi, GTK+ olanağını geriye doğru uyumlu halde tutmaya büyük önem vermektedir. Ancak tüm hataları saptamak da imkansızdır. Genellikle, daha eski sürümlerle çalışmak, uygulamaların kolay kurulmasını sağlamak için daha elverişlidir.
- Ayrıca, Mac OS X için, GTK+ tamamen yabancı bir pakettir. Kullanıcılarınızı bağımlılık engellerinden kurtarabilmek için kendine yeten bir uygulama paketi yaratın. Böyle bir paket örneği için Gimp.app uygulamasının nasıl oluşturulduğuna bakın (bkz. Kaynaklar).
GTK+, Mac OS X için iki farklı biçimde gönderilir. Bugüne kadarki tüm sürümlerde GTK+ olanağını Apple sisteminin X11-to-OS X köprüsü ile birlikte kullanmanız gereklidir. Ancak son geliştirilen sürümde, Mac OS X pencereleme sistemine yeni bir yerel bağlantı noktası eklenmiştir. Böylece gelecekte bu bağlantı noktasına, bugünkü Win32 bağlantı noktasındakine benzer bir bütünleşme düzeyi sağlamak mümkün olacaktır.
Ayrıca, GTK+ için uygulama ikili arabirimi (ABI; application binary interface) uyumluluğunun tam olarak ne anlama geldiğini bilmeniz gerekmektedir. Kitaplık geliştiricileri, GTK+ olanağını geriye yönelik uyumlu tutmak için çalışmaktadırlar ancak bunun sizin uygulamanız için anlamı ileriye yönelik uyumluluktur, yani sizin uygulamanız GTK+ büyütmeleri ile çalışacaktır. Örneğin kaynak kodunuz yalnızca 2.2 API kullanıyorsa ve V2.6 ile derlerseniz bile, ortaya çıkacak ikili sistem GTK+ V2.2 ile çalışmaz. Bunun nedeni, derleme sırasında, sonraki sürümlerden gelen ABI eklemelerinin başvuru oluştururken eski sürümde kurulmuş sistemlerde çalıştırma zamanı hatası oluşturmasıdır.
Bu örnekte 2.2 sonrası bir sistemde uyumlu ikili sistemler yaratmanın yolu gerçek bir GTK+ V2.2 dağıtımı kurmak ve paketinizi bu üstbilgilerle derlemektir. Bu yol, uygulama geliştirici için en kolayı olmasa da, tek güvenli yoldur.
Bu soruna, derleme sırasında üstbilgi sürümleri arasında geçiş yapmak üzere belirtilmiş sürüm parametreleri tanımlamak gibi alternatif yaklaşımlar da geliştirilmiştir. Örneğin bu teknik Windows yazılım geliştirme takımı (SDK) içinde kullanılmıştır. Ancak bu yöntemin, sonuçta ortaya çıkan üstbilgilerin anlaşılmasını ve kullanılmasını zorlaştırmak ve bazen sürpriz etkiler yaratmak gibi bazı sakıncaları da vardır. Bu nedenle GTK+ geliştiricileri, bu derleme yöntemini desteklememeye karar vermişlerdir.
Linux platformunu kullanıyorsanız, eski GTK+ üstbilgilerini Autopackage projesinden, yaygın olarak dağıtılabilen ikili kodların oluşturulmasını basitleştiren diğer araçlarla birlikte, kolaylık sağlamak üzere önceden paketlenmiş şekilde edinebilirsiniz. Ek bilgi için Kaynaklar başlıklı kısma bakın.
GTK+ olanağının gereksinimlerinize göre uyarlanması
Çoğunlukla, GTK+ olanağının varsayılan yetenekleri sizi tatmin etmeyecektir. Bu durumun iki nedeni olabilir: Ya temel kitaplıkta bulunmayan ek özellikler istiyorsunuzdur ya da kitaplığın işlevlerini gereksinimlerinize daha uygun hale gelecek şekilde değiştirmek istiyorsunuzdur.
İlk durum, gayet açıktır. İstenen işlevleri sunan bir dış kitaplık bulmanız gerekmektedir. Bir kitaplık sağlayıcısı aramaya başlayacağınız çeşitli yerler vardır. Sıkça rastlanan şekilde, GNOME gibi büyük projelerde muhtemelen sizin gereksinimlerinize benzer gereksinimler doğmuştur. Bu nedenle, GNOME, bünyesinde bir tür kum havuzu gibi işlev gören çeşitli birimler barındırır. Bu birimler içindeki özellikler henüz GTK+ olanağıyla bütünleştirilecek kadar olgunlaşmamışlardır ancak çalışmakta ve işe yaramaktadırlar. GNOME CVS içindeki bu tür birimlerden en önemlisi libegg'dir. Ayrıca SourceForge.net ve freshmeat (bkz. Kaynaklar) gibi barındırma hizmetleri sağlayan birçok siteye de bakabilirsiniz.
Diğer bir neden de, GTK+'nın kendisinin bazı yönlerini değiştirmek istediğinizde ortaya çıkar. Örneğin, GTK+'yı bazı yerleşik mimarilerde çalıştırmanız ya da bazı özel etkileşim türleri için destek eklemeniz gerekebilir. Gereksinimlerinize (ve olanaklarınıza) göre çeşitli yaklaşımlar bulunmaktadır.
En basit durumda, bir e-posta listesine üye olup sizin yapmak istediğinizi daha önce birinin yapmış olup olmadığını öğrenebilirsiniz. Değişiklikleriniz genel ilgi kapsamında ve yeterli kaliteye sahipse, GTK+ ana dağıtımına bütünleştirilme olasılıkları yüksek olacaktır.
Ancak projeniz daha karmaşıksa, toplulukla iletişim kurup temel noktaları tanımlayacak uzmanlaşmış bir danışmanlık şirketi kullanmayı düşünebilirsiniz. Bu yaklaşım, yakın zamanda yeni geliştirdiği bir telefon serisinde GTK+ temeli kullanmaya karar veren Nokia tarafından benimsenmişti. Sonuç, toplulukta sıcak karşılanan maemo platformu oldu. Ortakların ve yöntemlerin dikkatli seçimi, her iki tarafa da yarar sağlamaktadır: Şirket yeni bir oyuncağı denemeye istekli birçok tecrübeli geliştirici bulur, topluluk da geliştirilen yeni kullanım alanı ve bu geliştirmenin sağladığı ilerlemeler üzerinden GTK+ olanağının sunmak zorunda olduğu olanakları genişletir.
|
GTK+ ile ilgili maceranızda her zaman bu ürün etrafında yer alan topluluk ilk destek kaynağınız olacaktır. Bu nedenle, doğru başlangıç noktalarını bilmeniz önemlidir. Bu tür bir bilgi size büyük zaman kazandıracak ve olası yanlış anlamaları önleyecektir.
GTK+ ile ilgili gelişmeler özellikle üç e-posta listesi etrafında toplanır:
- gtk-list
- Bu genel liste, yalnızca programlama ile ilgili değil, GTK+ ile ilgili her tür soruyu yanıtlar. Örneğin, burada lisanslamayla ilgili sorular sorabilirsiniz. Ayrıca bu, iş teklifleri de gönderilebilen tek listedir.
- gtk-app-devel-list
- Bu liste, GTK+ uygulamalarının gerçek anlamda geliştirilmesi konusuna odaklanır. Ayrıca her tür programlama sorularınızla ilgili olarak da bu listeyi kullanmalısınız. Nereye soracağınızı bilmediğiniz soruları bu listeye gönderebilirsiniz.
- gtk-devel-list
- Bu liste, GTK+'nın kendisiyle (uygulamalarla değil) ilgili çalışan geliştiricilere ayrılmıştır. Gelecek sürümlerin düzgün bir şekilde geliştirilmesi için etkin iletişim büyük önem taşıdığından ilgisiz soruların listeden uzak tutulması da önemlidir. Örneğin, bu listede GtkTreeView'un kullanımıyla ilgili bir soru sormak uygun değildir. Ancak, bir hata ya da değerli bir geliştirme olabilecek bir nokta hakkında sorulacak sorular kesinlikle yerinde olacak hatta memnuniyetle karşılanacaktır.
GTK+ geliştiricileri düzenli olarak üç listeyi de okurlar; bu nedenle, gönderdiğiniz e-postanın dikkate alınmayacağından endişelenmenize gerek yoktur.
Bilmeniz gereken diğer bir site de, GNOME'un hata izleme
sistemi olan ve
GTK+'nın hata veritabanını da barındıran Bugzilla'dır. Yanlış bir
işleyişten
şüphelendiğiniz her durumda önceden raporlanıp
raporlanmadığını görmek için
Bugzilla'ya başvurabilirsiniz. GTK+'nın daha da iyileştirilmesi
için siz de
gördüğünüz sorunları rapor
edebilirsiniz. Yeterli ayrıntıyı sağladığınız sürece,
emin olmadığınız bir konuyu kaydetmekten korkmayın. Olabilecek en
kötü şey,
raporladığınız hatanın NOTABUG
(BİR HATA
DEĞİL) çözümüyle
kapanmasıdır.
Bu kaynakların yanı sıra, birçok IRC (Internet
Relay Chat) kanalından da gerçek
zamanlı destek alabilirsiniz. Kullanabileceğiniz başlıca IRC sunucusu
GIMP.net'tir. #gtk+
ve
#gnome
kanallarında genellikle size yardımcı
olacak birileri bulunur. Ancak sabırlı olun: "genellikle"
sözcüğü her zaman "5 dakika
içinde" anlamına gelmez.
Toplulukla bağlantı kurduğunuzda, bu topluluk içinde çok sayıda harika insan olduğunu göreceksiniz ve bu topluluğa katılıp belki bildiğiniz konularda başkalarına yardımcı olmak da eğlenceli olabilir. Yalnızca sesinizi hemen duyuramayabileceğinizi, ancak her şeyin iyi gideceğini unutmayın.
GTK+, sürekli olarak geliştiriciler için yararlılığını artırmaya çalışmaktadır ve her yeni sürüm onların hayatlarını kolaylaştırmak için tasarlanmış ek özellikler sunar. Bu nedenle, GTK+, freedesktop projesiyle (bkz. Kaynaklar) tanımlananlar gibi bazı birlikte çalışabilirlik standartları uygular.
Ancak özellikle göze çarpan bir proje, ISV'lere (Independent Software Vendors; Bağımsız Yazılım Satıcıları) yardımcı olmak ve doğru araçlar bulma sürecini daha basit bir hale getirmek için tasarlanmıştır. Bu çalışma Project Ridley (Ridley Projesi) olarak bilinir ve önceden bağımsız olan birçok kitaplık ve eklentinin kullanımı kolay, tutarlı tek bir platformda bütünleştirilmesinden oluşur. Örneğin, şu anda mevcut olan GNOME kitaplıklarının çoğu, avantajlarını GTK+'nın üzerinde çalıştığı tüm platformlara taşıyacak şekilde bütünleştirilecektir. Diğerlerinin yanı sıra, bu dizinin 2. bölümünde tanıştığınız libglade'in GTK+ platformuna eklenmesi planlanmaktadır. Project Ridley tamamlandıktan sonra, sonuçta ortaya çıkan platform GTK+ V3.0 olarak adlandırılacaktır (ancak mevcut 2.x yayın düzeyleriyle uyumluluğu devam edecektir).
"GTK+ ile ilgili temel bilgiler" dizisinin bu son makalesinde, başarılı yazılım ürünleri yaratmanın birçok farklı yönünü gördünüz. GTK+'nın farklı platformlarda nasıl desteklendiğini, GTK+ uygulamalarınızı en iyi şekilde nasıl sunabileceğinizi ve GTK+'yı gereksinimlerinize daha uygun hale nasıl getireceğinizi öğrendiniz. Son olarak, ileride piyasaya çıkacak sürümlerle ilgili fikir edindiniz ve GTK+ ile büyük maceranıza nereden başlayacağınıza ilişkin bilgiler aldınız.
E-posta listelerinden birinde ya da belki de bir IRC kanalında yakında sizinle karşılaşmayı umuyorum. Her iki durumda da, sizi GTK+'nın mükemmel dünyasıyla tanıştırmaktan mutluluk duyacağım.
Bilgi Edinme
- developerWorks
"GTK+
ile ilgili temel bilgiler" dizisinin tüm
makalelerini okuyabilirsiniz.
- GTK.org,
GTK+ projesinin ana sayfasıdır.
- GNOME
Bugzilla, GNOME ve GTK+ için
hata izleme sistemidir.
- freedesktop,
özel olarak açık kaynak
masaüstleri ile ilgilenen bir birlikte
çalışabilirlik projesidir.
- ProjectRidley,
GTK+'yı bir
programlama platformu olarak yeni bir düzeye getirme konusuna
odaklanır.
- developerWorks
teknik etkinlikler ve Web yayınları sayesinde güncel
bilgiler edinin.
- Açık kaynak teknolojileri konusunda kendinizi
geliştirmenize ve bunları IBM
ürünleriyle kullanmanıza yardımcı olacak kapsamlı
nasıl yapılır bilgileri, araçlar
ve proje güncellemeleri developerWorks
Open
source zone (Açık
kaynak bölgesi) sayfasını ziyaret edebilirsiniz.
Ürün ve teknoloji edinme
- Linux için bir çapraz dağıtım paketi
çözümü olan
autopackage
hakkında bilgi edinebilirsiniz.
- GTK+'yı MAC OS X işletim sistemleri için
örnek bir uygulama paketi içeren
Gimp.app
dosyasını bilgisayarınıza
yükleyebilirsiniz.
- SourceForge,
birçok GTK+
uygulaması ve kitaplığı için serbest bir barındırma
sitesidir.
- Çoğu GTK+ ile ilgili olan çeşitli
projelerin bulunduğu freshmeat
sitesine
bakabilirsiniz.
- Bilgisayarınıza yükleyebileceğiniz ya da DVD'sini
edinebileceğiniz
IBM
deneme
yazılımı ile yeni açık kaynak geliştirme
projenizde değişiklik yapabilirsiniz.
Tartışma
- GTK+ ile ilgili bir genel tartışma konuları listesi
içeren
gtk-list'e
bakabilirsiniz.
- GTK+ uygulamalarına ilişkin ana programlama forumu olan
gtk-app-devel-list'e
de bakabilirsiniz.
- gtk-devel-list
tartışma listesi tamamen GTK+'nin geliştirilmesiyle ilgili tartışma
konularını
içerir.
- developerWorks web günlüklerine katılarak developerWorks topluluğuna erişebilirsiniz.
Maciej Katafiasz, bilgisayar bilimlerinde yüksek lisans öğrencisidir ve liseden bu yana açık kaynak teknolojilerini kullanmaktadır. 1.0 sürümünden bu yana GNOME masaüstünün kullanıcısı olan Katafiasz, sürüm 2.0 yayınlandıktan sonra bu sürümü çok sevmiş ve en sevdiği masaüstüne uygulamalar geliştirebilmek için GTK+ ürününü öğrenmiştir. |