27 Kasım 2011 Pazar

Açık Kaynak Yazılımlar Nedir, Ne Değildir?

Açık kaynaklı yazılımlar, fark edelim veya etmeyelim, hayatımızda önemli bir yer tutarlar. Örneğin Internet'deki web sitelerinin önemli bir kısmı Linux işletim sistemi üzerinde Apache web sunucu yazılımını kullanmaktadırlar. Bu örnek tek başına yeterlidir aslında ya, yine de devam edelim. Android'li cep telefonu kullanıyorsanız onun işletim sistemi de açık kaynaklıdır. Bir çok web uygulaması PHP programlama dili yazılmıştır. Veritabanı olarak da MySQL kullanır. Web tarayıcı olarak Internet Explorer sevmiyorsanız ya Firefox kullanıyorsunuzdur, ya da Chrome. Örnekler çoğaltılabilir.

Birçok mit ve kafa karıştırıcı şey vardır açık kaynaklı yazılımlarla ilgili. Bedavadırlar, acaba geliştiricileri nasıl para kazanırlar? Kodları açık olduğu ve herkes gördüğü için güvensizler midir? Herkes istediği değişikliği yapabiliyorsa kaos olmaz mı? Bir takım vakti bol, hippi kılıklı tipler elde bira mı bu yazılımları geliştirirler? Kullanırken bir sorun çıksa destek alacak kimseyi nereden bulacağız? Açık kaynaklı yazılımların tek işlevi ticari yazılımları aynen taklit etmek ve dolayısıyla hep geriden gelmek midir?

Amacımız bunları açıklığa kavuşturmak. Konuya iyice dalmadan belirtmem lazım ki, bu tarz yazılımları isimlendirirken aslında beğendiğim isim özgür yazılım'dır. Bu işi ilk başlatan kişi olan Richard Stallman yazılımlarını "Free Software" diye nitelendirmiş, ve İngilizce'de özgür ve bedava kelimelerinin aynı kelime, yani "free" ile olmasından dolayı "free as in freedom, not as in beer", yani "özgürlükteki özgür gibi, biranın bedava olması gibi değil" diyerek kelimeyi açıklamıştır. Sanırım özgür kelimesi politik olarak tehlikeli olduğundan açık kaynak deyimi daha çok yayılmıştır, ben de yazımda yaygınlığından dolayı bunu kullandım.

Richard Stallman
Bilim ile Benzerlik

Bence açık kaynaklı yazılım geliştirme şekli bilime benzemektedir. Bilimin en önemli özelliği açıklığıdır. Bulgular gizli tutulmaz, makale haline getirilerek yayınlanır. Bu makaleler konusu olduğu bilimle ilgili eleştirilere (peer-review) açıktır. Diğer makalelerden alıntı yapılarak yeni makaleler yayınlanır ve bilim böylece devlerin omuzlarına tırmanmak suretiyle gelişir.

Ticari birimlerde yapılan teknoloji geliştirmelerinde ise bulgular mümkün olduğunca gizlenmeye çalışılır. Çünkü bunlar rakiplerin sahip olmadığı rekabet avantajlarıdır. Yine de birilerinin paralel olarak aynı şeyi bulması ihtimaline karşı patent alınır. Böylece başkaları aynı bulguyu ya kullanamaz, ya kısıtlı kullanabilir ya da kullanabilmek için patent sahibine belli bir para ödemek zorundadır.

Açık Kaynak vs Ticari

Ticari yazılımlar kaynak kodu olmadan derlenmiş halde dağıtılırlar. Derlenmiş yazılım çalıştırılabilir, ama kodu kapalı olduğu için tam olarak ne yaptığına bakmak imkansıza yakın derecede zordur. Bu durum yazılımın benzerini yapmayı zorlaştırarak ticari olarak avantaj sağlar. Başka bir açıdan bakarsak, söz konusu yazılımı geliştirmeyi kaynak koduna ulaşabilen şirket içi elemanların tekelindedir.

Açık kaynak yazılımlar ise kaynak kodları ulaşılabilir halde dağıtılırlar. Bunun ilk avantajı kodları her isteyenin inceleyebilmesidir. Avantaj diyoruz, çünkü ne kadar çok göz bakarsa o kadar çok koddaki hataları ve daha iyi hale getirilebilecek yerleri bulmak kolaylaşır. Bunu açık kaynak teriminin mucidi Eric Raymond açık kaynakla alakalı yazdığı "Katedral ve Pazar" isimli kitabında ifade etmiştir. Karşıt olarak, ticari yazılımda ise ister istemez göz sayısı şirket eleman sayısıyla sınırlıdır. Bilime benzetirsek, kodu açık olarak dağıtmak makale'ye denk gelirken, kodun istenen kişiler tarafından incelenebilmesi "peer-review"'a denk gelmektedir.

Dezavantaj ise, yazılım ürününü satmanın zorlaşmasıdır. Zorlaşması derken, açık kaynaklı bir yazılımı satmak imkansız değildir. Bizzat Richard Stallman'ın kurduğu GNU, özellikle ilk zamanlarda, yani 1980'lerde o zamanki disket, kaset gibi ortamlarda yazılımlarını satarak para kazanmıştır. Günümüzden örnek verirsek, Linux işletim sistemi dağıtıcı firmaları (ki sayıları pek çoktur) CD ile ürünün kopyasını satmakta ve yanında desteğini vermektedirler.

Şu teknik bilgiyi de vermek lazım; Linux projesi sadece işletim sisteminin çekirdeği ile ilgilidir. Bu çekirdeği alıp derleyip kullanabilmek her babayiğitin harcı değildir. Dağıtıcı firmalar Linux çekirdeğini alıp derlerler, ayrıca bunun yanına çok sayıda başka açık kaynak kodlu yazılımı da ekleyip kullanılabilir halde dağıtırlar. Böylece bir katmadeğer eklemiş olurlar.

Windows işletim sistemine bakarsak aslında onda da aynı yapı vardır. Bu işletim sisteminin de bir çekirdeği vardır ve yanında onlarca destek yazılımı vardır. Microsoft firması tüm bunların dağıtıcısıdır. Ama tek dağıtıcısıdr, yani başka biri gidip Windows'u dağıtamaz (ve doğal olarak, satamaz).

Her isteyenin önceden izin almaksızın dağıtıcı olabilmesinin avantajları ve dezavantajları vardır. Avantajlardan başlarsak, ilk olarak bir çok alternatif ortaya çıkar. Herkesin isteğine göre Linux işletim sistemleri mevcuttur. Böylece bir sistem oldukça cafcaflı olabileceği gibi, oldukça sade de olabilir. Örneğin masaüstü için KDE ile GNOME amansız rekabet halindedirler. Tabii masaüstü sadece bunlarla sınırlı değildir, daha birçok masaüstü vardır. Aynı şey başka uygulamalar tipleri için de geçerlidir.
Oldukça gelişmiş bir masaüstü ortamı

Dezavantaj ise, birçok alternatif olması halinde kullanıcının hangisini kullanacağı konusunda kafasının karışmasıdır. Bu az buz dezavantaj değildir, özellikle iş dünyasında. Zira iş dünyası standart ister; Linux'u düşünseler bile kafaları karışır ve biraz tuzluya gelse de "Windows'a alıştık, onu kullanıverelim" derler. İşyerinde, okulunda Windows olan ve ona alışan kişi evinde de kolay kolay başka işletim sistemini kullanamaz. Linux'un son kullanıcılarda yeterince yaygınlaşamama sorunu Linux cephesinde bayağı kafaları yormaktadır ve bu sorunun masaüstü ortamı olduğunda genelde çoğu kişi hem fikirdir.

Normal kullanıcı açısında Linux'un alacağı çok yol varken, sunucu dünyasında, yani bilişim profesyonellerinin dünyasında açık kaynaklı yazılımlar çok daha fazla kullanılmaktadırlar. Çünkü bilen kişilerin elinde bu yazılımlar, aynı bir Formula 1 arabasının belli bir piste göre ayarlanması gibi ayarlanabilirler. Bunu biraz açalım: Microsoft Windows işletim sistemini önceden derlenmiş olarak sattığından, ister istemez her makinede çalışabilecek şekilde "orta yolu bularak" derlemek zorundadır. Bu da belli bir donanımın başka donanımlarıyla uyumlu olmayan avantajlarından yararlananamaması anlamına gelir. Ayrıca Windows dağıtımı ister istemez tüm çevresel yazılımlarıyla beraber dağıtılır. Windows'un da kendine göre dağıtım varyasyonları vardır, ama bunlar teknik olmaktan ziyade ticari kaygıyla yapılandırılmıştır.

Diğer taraftan, örneğin, güçlü bir web sunucusu kurmak isteyen bir firma önce bir sunucu donanımı alıp Linux'un kaynak kodunu bunda derlerse tam olarak o donanımdan maksimum kapasiteyle yararlanan bir işletim sistemi elde eder. Elbette bu Linux'un üstünde sistemi yavaşlatacak hiçbir gereksiz servis yoktur. Sonra bunun üstünde Apache web sunucusu aynı şekilde derlenir. Böylece maksimum performans verecek bir yazılım-donanım birlikteliği elde edilir.

Diğer yandan sunucu tarafında koda ulaşılabilirlik de mühim bir avantajdır. Diyelim ki sistemde bir hata veya performansı az olan bir yer var. Bir kere kodu takip etmek suretiyle bunun sebebini bulmak imkanlıdır. Üstelik bu sorun başkalarını beklemeden hemen düzeltilebilir. Windows'da ise bu mümkün değildir, bir kara kutuda sorunun tam olarak ne olduğunu anlamak zordur. Ayrıca dışarıdan görünen sorunun düzeltilmesi için de Microsoft firmasının keyfini beklemek gerekir. Tüm bu özellikler yazılım sisteminin yönetilebilirliğini arttırdığından sunucu sistemlerde açık kaynaklı yazılımlar kullanmak oldukça avantajlı olmaktadır.

Açık Kaynaklı Yazılım Süreci

Şimdiye kadar başarılılığı tescilli açık kaynaklı yazılımlardan örnekler verdik. Elbette iş o kadar basit değildir. En eski ve yaygın açık kaynak yazılım barındırıcılarından biri olan sourceforge.net'e bakıyorum şu anda: Toplam 324,436 proje mevcut. İsteyenin proje başlatabilmesi böyle bir şişkin rakamın en büyük sebebi. Üstelik daha birçok başka açık kaynak yazılım barındırma siteleri de mevcut. Bunların hepsinin başarılı olmasın doğaya aykırı olurdu. O halde açık kaynaklı yazılımların yaşamlarına biraz göz atalım.

Normalde ticari şartlarda bir yazılım ürünü başlatmak oldukça zorlu bir süreçtir. Bir şirket olması, yoksa kurulması gerekir. Şirketin boyutuna göre ortakları ikna etmek gerekir. Sonra geliştirme için geliştiriciler, test için testçiler, dökümantasyon için yazarlar tahsis etmek gerekir,. Ayrıca ürünün pazarlanması, satışı, satış sonrası desteği, yeni özellikler eklenerek tekrar tekrar satılabilir şekilde ayarlanması gibi birçok süreç gerekir.

Açık kaynak sürecinde, eğer kendine özgü kurallarıyla iyi yönetilebilirse elbette, yukarıdaki paragrafta saydığımız şeylerin hemen hepsi otomatik hale gelebilir. Bu başlıkta bunları anlatacağız.

Proje sayısının çokluğundan da anlaşılacağı üzere, proje başlatmak kolaydır. Kendinize ait bilgisayarda açık kaynaklı editörler, programlama dilleri, derleyiciler vb. kullanarak yazılım projenizi başlatırsınız. Herhangi bir aşamasında, bu en baştan olabileceği gibi, yazılım kendi bilgisayarınızda belli bir olgunluğa ulaşınca da olabilir, herhangi bir açık kaynak barındırma sitesinde projenizi tanımlayıp kodunuzu yükleyebilirsiniz.

Bundan sonra duyuru aşaması gelir. Elbette barındırma (barındırma=hosting bu arada) sitesinde bulunmak arayanlara bir nevi duyuru işlevi görse de, yine de başka bir yerlerde de duyuru yapmak gerekir.  Örneğin Linus Torvalds Linux'u comp.os.minix adlı haber grubunda mütevazi bir mesaj ile duyurmuştu (kendisi aslında, en azından Linux bağlamında mütevaziliğin yanından bile geçmez). Günümüzde spamciler sağolsun, haber grubu (newsgroup) diye birşey kalmasa da, yine de haberleşme listesi, forum gibi duyuru için kullanılabilecek bir mecra bulunabilir. Bu mecranın yazılımın konusu ile alakalı bir grup olması iyi olur. Yukarıdaki Linus'un anonsu o zamanlar popüler olan Minix işletim sistemiyle ilgili bir grupta yapılmıştır. Buna göre bir muhasebe programı yapıyorsanız bu duyuruyu muhasebeyle ilgili bir grupta yapmak mantıklıdır.
Linus Torvalds'ın genç ve karizmatik olmayan bir resmi
Duyuru esnasında elinizde çalışan bir yazılım ürünü olması çok önemlidir. Sakın duyuruyla beraber büyük bir sempatiyle karşılanacağınızı zannetmeyin. Çoğu kişi (eğer lütfedip duyurunuzla ilgilendiyse) yazılımı indirecek, ilk hatada küfür edip yazılımı sisteminden kaldırıcak, sonra da unutacaktır. Eğer şanslıysanız küfürünü ortalık yerde edecektir. Küfür yemek zevkli birşey olmasa da, bu en azından size o hatayı bulma şansı verir. Böylece bir dahaki turda daha az hatalı bir yazılım sunabilme şansınız olur. Zaten önemli olan kullanılabilir bir yazılım sunmak ve kullanıcıların bunu kullanarak alışmasıdır.

Yazılım birilerinin işine yaradıkça destek artacaktır. Alınacak ilk destek testtir. Kullanıcılar programı kullanması en sağlam test yöntemidir. Testle hataları bulacaklar ve rapor edebileceklerdir. Rapor edebilecekleri bir mecra olması mühimdir. Neyse ki barındırma servisleri haberleşme listesi olsun, forum olsun, hata (bug) raporlama aracı gibi araçları sunmaktadırlar. Hatalar kadar, yeni özellik önerileri de bir yazılımın daha iyiye gitmesi elzemdir, kullanıcılar bu konuda müthiş girdi sunabilme potansiyeline sahiptirler.

Dökümantasyon aslında en kritik, ama en geç destek alınan yerlerden biridir. Bunu ilk başta yazılımcının yapması yerinde olur. Yazılımın başkalarına tavsiye edilmesi de en güzel pazarlama yöntemidir, beleş olması da şüphesiz tavsiye edilmeyi kolaylaştırmaktadır. Sonuçta belli bir aşamada, belki kendine göre oldukça zahmetli ve başarı oranı düşük, ama en azından yazılım ürününün yararlılığına bağlı olan (ki teknik adamlar olarak başka ne isteriz şu hayatta?) bir başarı mümkündür.

Geliştirme yardımı da elbette çok önemlidir. Kodu geliştirmeye yetkili, diğer deyişle yazılımın tutulduğu versiyonlama aracına "commit" etme imtiyazı ilk başta orijinal geliştiricidedir. Eğer çok çok şanslıysanız, geliştirme yeteneğine sahip kişiler bazı hataları veya eklenecek özellikleri kendi bilgisayarlarındaki koda ekleyeceklerdir. Sonra kendi kodlarıyla orijinal kodların arasındaki farkı alacak (diff) ve size yama (patch) olarak göndereceklerdir. Siz de yazılımın iyi kalpli diktatörü olarak yamayı gözden geçirip, eğer beğenirseniz kendi orijinal kodunuzla birleştirebileceksiniz (merge).

Belli bir süre sonra bu geliştiricilerle arkadaş olabilir ve güvendiklerinize "commit" yetkisi vererek geliştirmeyi birçok elle yürütebilir hale gelebilirsiniz. Böylece artık hiçbir firmanın elinde olamayan şekilde bedava geliştiricilere sahip oldunuz. Elbette bütün bu avantajlar yazılım kaynak kodlarının açık olması sayesinde oldu. Açık kaynaklı kodun bir başka avantajı da, kodun gayet özenli olmasıdır. Zira başkalarının görmesi ve acımasızca eleştirme ihtimali, ister istemez herkesi kodunu gayet özenli yazmaya itecektir. Bu da firmaların sahip olması hemen hemen imkansız olan bir lükstür.

Tabii bir geliştirici olarak illa ki de bir yazılım projesi başlatmak zorunda değilsiniz. Başka bir proje için bu sürecin herhangi bir aşamasına katılarak da işe başlayabilirsiniz (hatta çoğu zaman böyle yapmak daha mantıklıdır). Açık kaynaklı yazılım projelerine katkıda bulunmanın bir yararı da size ün kazandırmasıdır. Bir CV'den daha iyisi, açık kaynaklı projeye attığınız imzadır. Aynı zamanda bu motivasyon kodun daha da kaliteli olmasına sebep olur.

Peki, diyelim ki varolan bir projeye katkıda bulunmak istediniz, ama projenin sahibi olan diktatöre bir türlü istediğiniz özellikleri kabul ettiremediniz. Haklı olduğunuza eminsiniz, ve en önemlisi sizin haklılığınızı destekleyenler de var. Bu durumda projeyi fork edebilirsiniz, yani o ana kadar yazılmış olan kodun tamamını alırsınız (buna hakkınız var), bir barındırma sitesinde başka bir proje başlatırsınız ve o projede istediğinizi yaparsınız. Böylece sizin yolunuzu seçenler sizin yazılımınızı kullanabilirler. Açık kaynak tarihinde birçok ünlü fork vardır. Örneğin Stallman'ın ilk projelerinden olan C derleyicisi GCC 1997'de EGCS adıyla fork etmiş, sonra da 99'da iki proje barışıp tekrar birleşmişlerdir. Ünlü metin editörü Emacs'in (yine bir Stallman ürünü) XEmacs diye halen kendi yolunda devam eden bir fork'u vardır. Oracle MySQL'i satın alınca hemen MariaDB diye fork ettirilmiştir. Son örnekten de anlaşılabileceği gibi, açık yazılımlar toplumun malıdır ve eğer gerçekten haketmiyorsanız sahip olmak da mümkün değildir.

Açık Kaynak Kültürü

Ticari yazılımlara benzer olarak, açık kaynaklı yazılımların da lisansları vardır. Bunlardan en ünlüsü GPL lisansıdır (Stallman ürünü, yine). Bu lisans kısıtlayıcı bir lisanstır, şöyle ki, bir kere kaynak kodu kapamayı yasaklar. Ayrıca kod değiştirilirken daha kısıtlayıcı bir lisans kullanılamaz. Biraz esprili bir şekilde Copyleft denen kavramla hakların geri alınamayacağını da garanti eder. GPL dışında başka açık kaynaklı lisanslar da mevcuttur. Örneğin BSD lisansı kodu kapamaya bile karşı değildir. Hatta Microsoft'un kapalı kaynak kodlu Windows'unda BSD işletim sisteminden alınmış kodlar vardır. GPL lisansı ilk başlarda şirketleri korkuttuğu için eleştiriliyordu. Bu biraz doğru olsa da, uzun vadede kötü olmadığı anlaşıldı. Günümüzde açık kaynaklı yazılımlar rüştünü ispat ettiği için bu korku eşiği de aşılmıştır denebilir.

Açık kaynağın kendince rahat ve esprili bir kültürü vardır. Bunun ilk görünümü proje adlarında ve logolarında esprinin eksik olmamasıdır. Örneğin Stallman'ın başlattığı GNU projesinin açılımı "GNU's Not Unix" gibi bir yinelemeli kısaltmadır. Linux adı Linus'un isminden gelmiştir, üstelik logosu Linus'un İskandinav olmasından dolayı penguendir. Apache ismi apaçilerin savaşma becerilerinden esinlenerek alınmıştır. Çizim programı olan GIMP (GNU Image Manipulation Program) isminin kötü anlamından pek rahatsız değildir (En sevdiğim yazım sistemi olan LaTeX de ayn şekilde). Yani geleneksel pazarlamanın oluşturduğu kastırık isimlerle ilgilenmez.

GNU'nun logosu

Ayrıca açık kaynak yazılımları samimidir. Hatalar, eksiklikler ve yapısal sorunlar gizlenmek, yadsınmak yerine güzel güzel itiraf edilir. İtirafın bir sebebi de elbette yardım bulmak içindir. Bu sayede açık kaynaklı bir yazılımda sorunla karşılaştığınızda, hele bu yazılım kritik kitleye ulaşmışsa çözümü için birçok kaynak bulabilirsiniz. Kimse sizi kandırmaya çalışmaz. Teknik açıklamalar da gayet esprilidir. Ticari dünyada ise genelde bunun tam tersidir.

Tabii herşey güllük gülistanlık değildir. Açık kaynak yaklaşımının popüler olmasıyla şirketlerin de ilgisini çekmiştir. Şirketlerin ilgisi genelde gayet yararlı olmakla beraber, bazı tehlikeleri de barındırmaktadır. Örneğin bir şirket açık kaynaklı yazılımı yukarıda anlattığımız şekilde mahçup başlatmaz, büyük reklamlarla başlatır. Geliştirme de yine yeterince açık olmayabilir, bundan kastımız, kod şeklen açık olsa bile, tartışmalar gizli olabilir. Bu da aslında yazılım ürününün (ve aslında toplumun) zararınadır. Çünkü kapalı ardında alınan tasarım kararları yüzünden kimse dışarıdan koda müdahale edecek bilgiyi elde edemez ve yukarıda bahsettiğimiz sinerjiden faydalanılamaz.

Bunun dışında bazı açık kaynak toplulukları belli bir başarı seviyesinden sonra g_t kalkması tabir edebileceğimiz bir şeye kapılarak soru soranlara, öneri getirenlere kibar olmayan şekilde davranma alışkanlığı edinebilir ve kendi kapalı toplumlarında kalmayı tercih edebilirler. Bu yaklaşım bazen gereksiz gürültüleri engellese de, aşırıya gidince toplumdan gelebilecek katkıları engellediğinden zararlı olabilir.


Peki Nasıl Para Kazanılır?

Açık kaynaklı yazılımları satma konusuna yukarıda değinmiştik. Onun dışında yazılımı doğrudan satmayı fazla düşünmemek bence en iyi yaklaşımdır. Yazılım nasıl olursa olsun danışmanlığıyla ve desteğiyle para kazanılabilir. Çünkü herkesin yazılımın kodundan doğrudan faydalanabilecek kadar zamanı ve yeteneği olmayabilir.

Onun dışında yazılımdan doğrudan para kazanmak yerine, açık kaynak yaklaşımı profesyonel bir dayanışma içinde ortak olan problemleri beraber çözmek ve bu çözümlerle esas müşteriye hizmet üretmek biçiminde de faydalı olabilir. Örneğin bir yazılım kütüphanesi bu şekilde ortak geliştirilebilir ve herkes kendi müşteri projelerinde kullanabilir.

22 Kasım 2011 Salı

Ne Ka İstemci O Ka Sunucu

Bu yazımda biraz tarihe dalacağım ve istemci-sunucu (ecnebicesi client server) tarihini inceleyeceğim. Tarih boyunca (tarih dediysek, taş çatlasa 50-60 seneden bahsediyoruz) bilişim işlem yükünün sunucu ile istemci arasında gidip gelmesi hep ilgimi çekmiştir. Uzun favorinin dönem dönem moda olması gibi, bir dönem sunucuya daha çok yüklenilir, sonra istemciye daha çok yüklenilir, daha sonra tekrar sunucuya...bu böyle gider gelir. Günümüzde bu gidip gelmeler yavaşlamış değildir, halen konu oldukça canlıdır.

Önce istemci ve sunucu kelimelerinden biraz bahsedelim. Sunucu, birden fazla kullanıcı açısından bilişim yükünü çeken birim iken, istemci ise son kullanıcının o bilişim ürününden doğrudan yararlanmasını sağlayan birimdir. Bu açıklama biraz karışık oldu galiba, sanırım diğer alanlardan örnekler verirsek daha iyi anlaşılabilir: Evlerimize elektrik sağlayan organizasyona (barajlar, santrallar, havai hatlar, kutular, kablolar vb.) sunucu dersek, evimizi aydınlatan ampüle de istemci diyebiliriz. Aynı ilişki cep telefonu servis sağlayıcısı ile cep telefonu, sular idaresi ile musluk arasında da görülebilir.

Elektrik Ağı

Genel hizmet yükünün sunucu ile istemci arasında ne kadar dağıldığının evrimi yazımın ana konusu olacak. Örneğin koskoca elektrik dağıtım organizasyonu ile ampülün görev dağılımı olarak bakıldığında, her ne kadar ampülün icadı daha havalı gözükse de, hizmetin yükünün büyük kısmı sunucunun üzerindedir. Diğer yandan ampülün yeribe televizyonu koyarsak, TV'nin çok daha fazla iş yapan bir istemci olduğu aşikardır. Başka bir bakış açısından bakarsak, TV yayıncılarını sunucu olarak düşündüğümüzde bu sefer TV istemcisi de basite indirgenebilir. Analojileri fazla zorlamamak gerekir O yüzden artık bilişim ile devam edeceğim.

Etkileşimli Olmayan Bilgisayarlar

İlk bilgisayarlar yığın işlemeli (batch processing) bilgisayarlar idi. Bu bilgisayarlar için veriler delikli kartlar yardımıyla, yazılımlar da kablolar bağlanarak önceden hazırlanır (gerçi Von Neumann makinesi sayesinde program kablolarla bağlanmak yerine hafızada tutulabilen soyut bir bilgi haline geldi, ama yazımın konusu itibariyle biraz abartmayı gerekli görüyorum). Bu ön hazırlıklardan sonra bilgisayar üzerindeki yazılım çalıştırılarak verilen veri üzerindeki hesaplamalarını yapması sağlanır ve sonuçlar kağıtlara yazılarak görev tamamlanır. Böyle bir sistemde istemci gayet fiziksel ve pasif kalmakta, tüm bilişim yükü bilgisayarın bizzat kendisinde olmaktadır. (Veya tam tersi midir? Tekrar düşünürken tersi de olabileceği aklıma geldi. Yorumlarınızı bekliyorum.)

ENIAC bilgisayarını programlayan hatunlar

Etkileşimli Bilgisayarlar

Etkileşimli bilgisayarlar ile kullanıcıların bilgisayara çalışırken müdahale edebildiği bilgisayarlar kastedilmektedir. Müdahale klavye ile ekrandan ibaret aptal terminaller ile yapılmaktadır. Bilişim yükü doğal olarak yine sunucuda olmakta, ama en azından klavye ve ekran ile çalışma anında etkileşim sağlanabilmektedir. Bu aşamada bilişim yükünün sunucudan istemciye doğru biraz kaydığı söylenebilir. Bu dönemde bilgisayarların halen mainframe adı verilen odaları kaplayan ve bilgi işlem gücü hızla artan dev makineler olduğunu belirtmeden geçmeyelim.

Bir aptal terminal

Her ne kadar aptal dense de, mainframe'leri kullanmaya yarayan terminaller o kadar aptal değildir. Sunucudan gelen (sunucuya ana bilgisayar veya daha amiyane tabirle "host" denir) sinyalleri yorumlayarak ekran görüntüsünü oluşturur. Ondan sonra da klavyeden basılan tuşları sunucuya gönderirler. Günümüzde özellikle bankalarda yaygın kullanımda olan mainframe bilgisayarlarla etkileşebilmek için bizzat aptal terminaller kullanılmasa da, laptop veya masaüstü bilgisayarlarımızda çalışan VT100 terminal emülatör yazılımları aptal terminal görevini görmektedirler.

Buraya kadar bahsettiğimiz bilgisayarlar her ne kadar çok eski teknoloji gibi gözükseler de, aşağıda da vurgulayacağımız gibi, gerek yığın çalışma modeli, gerekse merkezdeki çok güçlü tek bir bilgisayarın tüm işi yapması halen kullanılan metodlardır.

Kişisel Bilgisayarlar

Kişisel bilgisayarlar (PC), şu ana kadar anlattığım odalara sığmayan bilgisayarlara göre radikal bir dönüşüm yaparak (günümüzde de sürüyor bu dönüşüm) bilgisayar denen cihazı halka indirmişlerdir. Ondan önce bilgisayarlar özel uzmanların kullandığı, bilim kurgu romanlarının ve filmlerinin yalan yanlış betimlediği anlaşılması zor zamazingolar idiler.

Kişisel bilgisayarlar ilk olarak 1975 yılında Altair adında bir elektronik kit olarak ortaya çıktı. Halkın bilgisayara bu kadar talepkar olacağını hesaplayamayan üreticileri gelen yoğun talep üzerine oldukça şaşırmışlardı. Bu bilgisayar için ilk programlama dili olan Altair Basic'i geliştirenler Bill Gates ile Paul Allen adlı iki genç kafadar idi, ki bunlar sonradan -söylemeye gerek yoktu ama- Microsoft adlı dev şirketi kurdular.
İlk kişisel bilgisayarı tanıtan Popular Electronics dergisi kapağı

Kişisel bilgisayarlar, en azından ilk çıktıkları haliyle sunucusuz çalışan istemcilerdi. Başka bir bakış açısıyla, sunucuyu da içinde barındıran istemci idiler. Yani, bilişim yükü birden ve tamamen istemciye geçmişti. Halen iş hayatının yükünü mainframe'ler ve o sıralarda yeni yeni palazlanmaya başlayan küçük ve daha ulaşılabilir mainframe denebilecek olan mini computer'ler çekse de (Unix işletim sistemi, C programlama dili gibi yenilikler onlarda geliştirilmiştir), kişisel bilgisayarlar ardarda çıkan ve bilgisayarı gelişmiş bir hesap makinesi gibi kullanmaya yarayan spreadsheet (Excel gibi), bilgisayarı daktilo gibi kullanmaya yarayan kelime işlem ve küçük çaplı veritabanı kullanan yazılım ürünleriyle iş dünyasına da sızmaya başlamışlardı. Elbette oyun da oynanabiliyordu bu makinelerde.

1977'de çıkan Apple II, 1982'de çıkan Commodore 64 gibi kişisel bilgisayarlar ticari olarak çok başarılı olmuşlardır. Gelgelelim esas başarı IBM firmasının çıkardığı IBM PC ile olmuştur. Bu bilgisayar aslında teknik olarak rakiplerinden çok üstün değildi. Ama IBM bu bilgisayarın donanım spesifikasyonlarını çok iyi belgelemişti. Belgelemenin olmasının yararı, başka donanım üreticilerinin de uyumlu donanımları üretebilmesi yoluyla kendi PC'lerini oluşturabilmesi demek oluyordu. Bu PC'lerin işletim sistemi de standarttı: Küçük bir yazılım firması olan MicroSoft'un MS-DOS işletim sistemi. İşlemci de Intel'in ürettikleriyle uyumlu olan x86 idi.

Orijinal IBM PC

IBM dışındaki firmalarında IBM PC uyumlu bilgisayarları üretebilmesi ve böylece oluşan sinerji,  yavaşça da olsa IBM PC uyumluların, veya artık kısa adıyla PC'lerin pazarın tümünü ele geçirmesini sağladı. Bunun en önemli sebebi, uyumlu donanım sayesinde geliştirilen yazılımların tüm PC'lerde çalışabilmesiydi.Ondan önce üretilen yazılımların Apple için ayrı, Commodore için ayrı ve daha burada sayamayacağımız bir sürü firmanın ürettiği bilgisayarlar için ayrı ayrı geliştirilmesi gerekiyordu. (Aslında IBM'in PC'lerden önce ve sonra firma karakteristiğine uymamaktadır)

Bilişimin tamamen istemci tarafına geçmesi, başdöndürücü bir hızla işlem gücü artan kişisel bilgisayarlar için sorun olmasa da, enteresan bir yan etki ortaya çıktı: Yazılım korsanlığı denen şey ortaya çıkmıştı; yani yazılım ürünleri kolayca kopyalanabiliyordu (halen de alınmaya çalışılan tüm önlemlere rağmen bu durum böyledir). Eski tüm yükün sunucuda olduğu sistemle karşılaştırırsak, yazılım her ne kadar teorik olarak kopyalanabilir olsa da, dünyadaki makine sayısı az olduğundan, ve pratik olarak bunların çoğunun kontrolü IBM'de olduğundan, büyük bir sorun sayılmazdı. Zaten o zamanki büyük şirketler bilgisayar ve her türlü desteğin ve yazılımın içinde olduğu oldukça büyük bir paket hizmet satın alıyorlardı. Halbuki kişisel bilgisayarlarda aygıt ve içinde çalışan yazılımlar tamamen sade halkın kontrolündeydi. Hatta bu dönemde Bill Gates yazılımlarının kopyalanmasına o kadar kızmıştı ki, "hobicilere açık mektup" başlığıyla sert bir mektup yazmıştı.

Bilgisayar Ağları ve Dağıtık Sistemler

Kişisel bilgisayarlar ilk başlarda gerçekten kişisel amaçlar için kullanıldıysa da, iş dünyasında kullanımları yaygınlaştıkça yapılan işlerin ve verilerin paylaşılması ihtiyacı çıktı. Elbette disketler ile de veri paylaşılabiliyordu ama yoğun kullanım için pratik bir yöntem olduğu söylenemezdi. Daha iyi bir paylaşım için bilgisayarların birbirine bağlanmasını sağlayan LAN adı verilen yerel ağlar kuruldu; yani bilgisayarlar kabloyla birbirine bağlandı. İlk başlarda amaç dosya paylaşmaktı. Her ihtimalde daha güçlü bir bilgisayar bu işi görse de, bilişim yükünün tamamen istemcide kalması bu modelde de devam ediyordu.

Sonra SQL tabanlı veritabanı sunucuları da PC dünyasına girince artık bazı PC'ler isimlerine tezat olarak görülse bile, verinin yönetimi için sunucu olarak hizmet vermeye başladılar. Bu sırada gelişen PC'ler artık GUI adı verilen grafiksel arabirimler sayesinde çok daha özellikli ve kolay kullanımlı istemciler olmaya başlamışlardı. İstemci PC ekran yönetimini eski aptal terminallerle kıyaslanamayacak kadar kolay kullanımlı şekilde yapıyor, sunucu da verinin, ama sadece verinin yönetimi ile ilgileniyordu. Yani istemci ile sunucu arasında denge kurulmuştu. Muhtemelen bu denge farkedildiğinden, gelinen noktada böyle sistemlere istemci-sunucu mimarisi denilmeye başlandı.
GUI kullanan bir iş uygulama ekranı

Sonra uygulama sunucuları ortaya çıktı.  Uygulama sunucusu iş yükünün bir kısmını istemciden alıyor, veritabanı sunucu ile istemci yerine kendisi aracılık ediyor, elde ettiği veri ile ilgili uygulamanın ruhuna dönük manipülasyonlar yaparak sonuçları şıpın işi istemciye veriyordu. İstemcinin yükü biraz daha azalmıştı. Ayrıca bu model, giderek bottleneck haline gelmeye başlayan veritabanı sunucusu ve ağ trafik kaynaklarına yüklenmesini azaltıyor, zulalama (caching) gibi işlevler de sağlayarak işlem yükünü dengeliyordu. Böyle bir yapı N-tier veya dağıtık mimari olarak isimlendirilmektedir. Böylece istemciler çok sayıda olmak suretiyle kalmaya devam ederken, sunucuların sayısı da artmaya başlamış oldu.

İstemcilerin güçlü olması, bilişim gücünün dengeli dağılımı açısından avantajlı olmakla beraber, yönetim anlamında sorunludur. Örneğin yazılımın değiştiğini düşünelim: Bu durumda tüm istemci bilgisayarlardaki yazılımın güncellenmesi gerekmektedir. Eski modelde mainframe'de çalışan yazılım tek seferde değiştiriliyor, değişiklik anında aptal terminaller tarafından kullanılabilir hale geliyordu. İstemci-sunucu mimaride ise herhangi bir sebeple güncellenemeyen istemci yazılımları büyük problemlere sebep olabiliyordu.

Aynı şekilde donanım ve işletim sistemi uyumsuzluğu da büyük problem olma potansiyeli taşımaktaysa da, IBM PC mimarisinin ve Microsoft'un Windows işletim sisteminin dominasyonu sayesinde bu pek fazla sorun olmadı. Çok adil olmasa da, bunu itiraf etmek lazım.

Internet ve Web 1.0

1990'larda Internet hayatımıza bir daha çıkmamak üzere girdi. Internet kelimesindeki "Net" ağ anlamına geliyor, buna "Inter" de eklenince ağlararası ağ gibi bir mana çıkıyor. Sahiden de öyle oldu, bilgisayar ağları birbirine bağlana bağlana tüm dünya birbirine bağlanıvermiş oldu. Minnettarız.

Aslında Internet 1970'lerde ortaya çıkmış bir ağdır. İlk olarak askeri ve akademik ağları birbirine bağlamıştı, Sunucuların işlevi temel olarak dosya paylaşımı biçiminde görülmekteydi; FTP ile dosya paylaşımı yapılıyor, e-posta ile mesajlaşma sağlanıyordu. Telnet adlı uygulama ile de ana bilgisayar sunucuları aptal terminal gibi kullanılabiliyor.

1990'larda bu işlevlere web (WWW, World Wide Web) eklendi. Bu da temelde dosya paylaşımına dayanan bir sistemdi, sadece dosyalar (ki jargonda sayfa deniyor) zengin görsel biçemlendirme sunabilen HTML sunuyor, böylece resim ve başka sayfalara bağlantı sunuyordu. Örneğin şöyle bir sayfa adresi düşünelim:

http://en.wikipedia.org/wiki/Html

Buradaki en.wikipedia.org sunucunun adresini verirken, koyulaştırdığımız /wiki/Html kısmı da istediğimiz sayfanın sunucunun diskteki yeri oluyor...du. Di'li geçmiş zaman kullandık, çünkü bir noktada web sunucusunun pasif olarak dosyaları okuyup aynen vermek yerine, URL adı verilen sayfa adresini yorumlayıp o anda dinamik olarak bir sayfa oluşturmaya başlaması ile web uygulaması denen hizmet de başlamış oldu.
İlk web tarayıcısı olan Mosaic

Bu noktada aslında tekrar mainframe günlerine geri dönmüş oluyorduk: Bilgi işlemin hemen hemen tamamı web sunucusunda yapılıyor, artık istemci olan web tarayıcısına da  hazır sayfayı döndürüyordu. Yani aptal terminal günlerine web tarayıcısı aracılığıyla geri dönülmüştü. Bu kimsenin umurunda değildi. Tüm dünyayı web uygulamaları kapladı.

Web Servisleri

Web uygulamaları ticari dünyanın Internet'e katılımını sağladı. İlk uygulamalar müşteriye doğrudan satış uygulamalarıydı. Bu satışlar kredi kartıyla yapılıyordu. Web sitesi dolaşılarak alınacak ürünler seçiliyordu. Sonra hesaplanan tutar kredi kartıyla tahsil ediliyordu. Bu ana kadar sunucu olan web sitesi, kredi kartı işlemini yaptırmak için istemci olarak çalıştığı bankanın sunucusuna bağlanıyor ve oradan işlem yapılıyordu.

İki firmanın bilgisayar sistemlerinin birbiriyle ortak iş yapmasına jargonda B2B (business to business) denir. İlk başlarda her banka kendine ait bir haberleşme protokolü ile ticari müşterileriyle haberleşiyordu. Ancak işler karmaşıklaştıkça B2B'nin kapsamı da genişledi. Artık bir satış sitesi sadece banka ile değil, tedarikçileriyle de haberleşmek zorundaydı. Her ticari birim kendi protokolünü uygularsa haberleşme yapılamaz hale geleceğinden web services denilen bir teknolojiler bütünü ortaya çıktı. Buna göre Internet'i oluşturan TCP/IP, HTTP gibi varolan teknolojiler kullanılarak XML biçemindeki SOAP mesajları aynı webde olduğu gibi firmalar arasında gidip gelmeye başladı. Gelen bilgi biçemlendirilmiş sayfa değil, ticari bilgiydi veyahut ticari bir işlem talebi idi. Halen halk aptal web tarayıcılarında web uygulamalarını kullanmaya devam ediyor, işlem yükü yine arka taraftaki birbirine bağlı ve rolleri bağlamına göre değişen istemci-sunucularda hallediliyordu.
Kitap satıcılığı ile işe başlayan Amazon günümüzde çok kompleks bir tedarikçi zincirinin önyüzüdür

Web teknolojileri ile yazılım korsanlığı sorunu büyük ölçüde çözülmüş oluyordu, çünkü uygulama kullanıcılarına asla ulaşamayacağı sunuculara dönmüştü. Uygulama güncelleme de sorun değildi, sunucudaki yazılım değiştiğinde herkesteki kullanım değişiyordu. Web tarayıcıları da üç aşağı beş yukarı Internet Explorer ve Mozilla Firefox olarak standartlaşmıştı.

Ama esas ilginç yan etki, artık kişisel bilgisayarların standart olmasına pek de gerek kalmamasıydı. Çünkü normal bir kullanıcı zamanının çoğunu web tarayıcısında geçiriyordu. Web tarayıcı çalıştırabilen bir Macintosh, Linux işletim sistemli bilgisayar, cep telefonu gayet güzel iş görüyordu. Yani IBM PC ve Windows'a da eskisi kadar gerek kalmamıştı. Zaten bu dönem de PC'ye alternatif bilgisayarların öne çıktığı dönemdir ve halen devam etmektedir.

Web 2.0

Web 1.0 uygulamalarında web istemcisinin yaptığı her işlemin cevabı yeni bir sayfa olarak dönüyordu. Bu sayede web istemcileri basit yapıda kalabiliyordu, ama diğer yandan her seferinde koca bir sayfa gidip geldiğinden hem ağda transfer edilen veri miktarı çoğalıyordu, hem de istemci ile sunucu arasında yavaş bir etkileşim oluyordu.

AJAX adı verilen bir metodlar kümesi sayesinde bu sorun da çözüldü. Buna göre artık sayfaların içine Javascript dili ile yazılan programcıklar web uygulamasından istekte bulunuyorlar, ancak bu istek sayfa değil, sadece gerekli bilgiyi döndürüyor ve yine javascript programcığı gelen bilgiye göre sayfayı olduğu yerde güncelliyordu. Böylece mucizevi biçimde hem ağ üzerinde transfer edilen bilgi azaldı, hem de GUI uygulamalarından özellik olarak hiç de geri kalmayan şekilde etkileşimli uygulamalar hayata geçmiş oldu. Yazımızın esas amacı bağlamında belirtelim ki, Web 2.0 bilgi işlem yükünü sunucudan istemciye transfer ederek yükü tekrar eşitlemiş oldu.
Facebook gayet dinamik bir Web 2.0 sosyal paylaşım uygulamasıdır

Şu anda web uygulamalarının çoğu Web 2.0 teknolojisini kullanmaktadır. İstemcinin güçlenmesinin mahsurlarıını hatırlarsak, bunlardan ilki yazılım korsanlığı idi. Bu pek büyük bir sorun teşkil etmemektedir, çünkü kritik kodların çoğu yine sunucudadır. İstemciye gelen Javascript kodlarını da karıştırmak veya sadece gereken kodları seçmece göndermek mümkündür.

İstemcilerin yönetimi her ne kadar sorun gibi gözükse de, HTTP, HTML,Javascript gibi teknolojiler büyük titizlikle standartlaştığından bu açıdan da fazla bir sorun gözükmemektedir.

Küçük Cihazlar

Internet kadar önemli bir gelişme, cep telefonlarıdır. Her ne kadar telefon olsa da, günümüzde telefon olma özelliği ayrıntı olarak kalmıştır: Bu cihazlar kişisel bilgisayarlardır, hem de kişisel bilgisayarlarımızın ağlar ve Internet aracılığıyla anonim hale geldiği dönemde hızır gibi yetişmişlerdir.
iPhone...

Bu cihazların, küçüklükleri sebebiyle görece güçlerinin az olması, hadi diyelim güçlendirilseler bile taşınabilir bir cihaz için çok kritik olan pil kullanımı konusunda zorlaması sebebiyle bilgi işlem yükü ne kadar sunucuda olursa o kadar çok memnun olacak istemciler olmaları gerekmesine rağmen, Apple'ın çok meşhur ve başarılı cep telefonu iPhone'lar için AppStore aracılığıyla resmen istemciyi yoran uygulamalar satabilmesi, şahsım için henüz çözülememiş bir soru işaretidir. Sonuç olarak istemci güçlü cep telefonları yoluyla yine bilişimin yükünü üzerine almıştır.

Bulut Bilgi İşlem

Internet'de hemen hemen herşeyimiz olan Google firması hizmetlerini yapabilmek için muhtaç olduğu bilgi işleme gücünü onbinlerce ucuz bilgisayarı özel tekniklerle birleştirmesiyle oluşturduğu veri merkezlerinden sağlamaktadır.

Böyle bir dev veri merkezine sahip olan sadece Google değildir, neredeyse büyük firmaların hepsi artık veri merkezine sahiptir. Son zamanlarda bu firmalar veri merkezlerini para karşılığı bulut bilgi işlem (cloud computing) adıyla herkesin kullanımına açmıştır: Google'ın AppEngine'i, Amazon'un Web Servisleri, Microsoft'un Azure'si, IBM'in SmartCloud'u.
Esprili bir cloud computing illüstrasyonu

Henüz nisbeten yeni olan bulutların vaadedilen avantajları şunlardır: Uygulamanızı kendi güvenilir sunucularında çalıştırmayı vadetmektedir ve sunucunun tüm yönetimini üstlenmektedirler. Ayrıca "ne ka ekmek o ka köfte" prensibiyle (buna ölçeklenebilirlik de deniyor) bilgi işlem gücüne ihtiyaç duyulduğu ölçüde daha fazla bilişim kaynağı kullanılabilmesini  otomatikman sağlanmaktadır. (Elbette parası karşılığında)

Gerçek amaç öncelikle paramızı almaktır. Ancak daha stratejik olan amaç ise, bu bulut ortamlarını sunan büyük firmaların kendi geliştirme araçlarını çaktırmadan empoze etmesidir. Yazımız bağlamında bakarsak, bu bulut hikayesi mainframe'lerin geniş ölçekli olarak yeniden keşfedilmesinden başka birşey değildir.

17 Kasım 2011 Perşembe

Flash'ın Geleceği Konusunda Adobe'dan Kıvrak Hamle

Adobe firması, temel ürünü ve gözbebeği olan Adobe Flash bileşenlerini oluşturmaya yarayan Flex'in geliştirmesini Apache vakfına bıraktığını açıkladı. Bu hamleyi Adobe açısından akıllıca, ya da en azından düştüğü zor durum bağlamında akıllıca bir hareket olarak görüyoruz. Bu yazımızda bunu irdeleyeceğiz.
Flash oyunları oldukça popüler oldu ve geleneksel oyuncu profilini değiştirdi

HTML5'in ortaya çıkışı, web sayfalarında en çok kullanılan eklenti olan Adobe Flash ile Microsoft'un rakip olarak çıkarttığı Silverlight'ın geleceğini -en azından geliştiriciler için- büyük şüpheler altında bıraktı. Geliştiriciler diyoruz, çünkü son kullanıcı, eğer HTML5'i desteklemeyen bir web tarayıcı kullanmıyorsa (ki son zamanlarda iyice olgunlaşan otomatik güncellemeler sayesinde bu durum da büyük bir sorun olmaktan çıktı) zaten güncellenmiş web sayfalarını görecek. Geliştiriciler için ise kritik birkaç soru ortaya çıktı: Silverlight ve Flash ile yapılmış varolan geliştirmeler ne olacak? Yeni geliştirmeler için, eğer HTML5'i tercih edersek özellik kümesi yeterli olacak mı?

Web Tarayıcı Eklentileri

Web tarayıcılar ilk ortaya çıktığında sadece sayfa göstermeye yarıyordu. Sayfaları daha etkileşimli hale getirmek fikri ise ilk olarak Java Applet'leri ile denendi. Buna göre applet adı verilen minik bir Java programcığı aynı resimler gibi sayfaya yükleniyor ve sonra da web tarayıcının Java sanal makinesi tarafından çalıştırılarak kendine ayrılmış dikdörtgene istediğini yazıp çizebiliyordu.
Java appletleri maalesef daha çok yavaş yüklenmesiyle bilindi

Ancak Java Applet'ler beklendiği kadar başarılı olamadı. Applet yüklenen sayfalar hantallaşıyordu. Ayrıca o zamanlar popüler olan Netscape Navigator ile Microsoft Internet Explorer Java'larındaki farklılıklar, hızla gelişen ve ardarda versiyonlar çıkaran Java platformunu takip etmek ve güncellemek geliştirmeyi de zorlaştırıyordu.

Microsoft karşılık olarak ActiveX teknolojisini çıkarttı. Bu hemen hemen hiç tutmadı, çünkü ActiveX ile üretilen bileşenler sadece Internet Explorer'da çalışabiliyordu ve doğrudan makine dilinde çalıştığı ve kodun Java gibi bir güvenlik sandbox'unda (kum havuzu) çalışması yapısal olarak mümkün olmadığı için güvenlik açıklarını da gayet mümkün hale getiriyordu.

1997 yılında Adobe ilk Flash eklentisini çıkarttı. İlk Flash aynı appletler gibi kendisine ayrılan dikdörtgen içinde, ama daha çok animasyon yapmak için kullanılıyordu. Sonra yavaş yavaş basit programlama özellikleri, en sonunda da Actionscript adlı Javascript dialekti ile (Javascript'e az sonra değineceğiz) tam olarak programlanabilir hale geldi. Flash o kadar başarılı oldu ki, şu anda bile, en azından PC platformu bağlamında baktığımızda web tarayıcıların %99'unda kurulu durumdadır.

Silverlight'ı ise uzun uzun anlatmaya gerek yok. Flash ile aynı işlevlere sahip, ama Microsoft geliştirme araçları ile geliştirilebilen bir eklenti.

HTML 5

Java applet'leri çıktıktan az sonra web tarayıcılarına Javascript adlı bir dil peydah oldu. İsminde Java bulunması sadece o anda Java'nın popülerliğinden faydalanmak içindi. Bu dil ile eklenti falan gibi birşeye gerek olmadan doğrudan web sayfalarının içine program yazılabiliyordu.

İlk çıkışı pek sansasyonel olmayan Javascript uzun süre web uygulamalarının etkileşimliğini arttırmada önemli bir rol oynadı. Ancak halihazırdaki HTML standardı ile ne video oynatılabiliyordu (Örneğin Youtube videolarını gösterirken Flash eklentisini kullanır) ne ses çıkarılabiliyordu, ne de sayfaya birşey çizilebiliyordu. Bu da web sayfalarını Flash vb. eklentilere bağımlı hale getiriyordu.
Meraklılar Canvas ile herşeyi deniyor

Tüm bunlara cevap olarak çıkan HTML 5 standardı, grafik çizebilmek için Canvas elementini takdim ederken, video ve ses'i de tam olarak destekliyordu. Böylece eklentilere bağımlı kalmadan grafiksel anlamda gelişmiş uygulamalar yapma imkanı ortaya çıkmış bulunuyordu.

Adobe'un Bunalımı ve Hamlesi

Adobe'ye ilk büyük darbe rahmetli Apple'ın herşeyi, rahmetli Steve Jobs'dan geldi. Flash'ın çok hafıza ve pil harcayan (küçük cihazlar için önemli kriterler bunlar), yavaş, buglı ve güvenlik açıkları çok olarak nitelendirerek popüler iPhone ürününde desteklenmeyeceğini söyledi. İlk başta gayetle yaygın olan Flash'ı çalıştırmamak pek iyi bir karar değilmiş gibi gözükse de, HTML 5'in hızla yayılması endişeleri boşa çıkardı. Örneğin youtube bile videoların gösterimi için flash'ı hemen bırakmasa bile, flash yüklü olmayan web tarayıcıları için HTML 5 video desteğini ekledi.

HTML 5'in gelişimi Silverlight ile Flash'ı endişeye sürükledi. İlk havluyu atan (her ne kadar resmi olarak olmasa da) Microsoft oldu. Elbette Microsoft çok büyük olduğundan dolayı Silverlight mevzusu kendisi için Adobe'un olduğu kadar hayati değil (Elbette geliştiriciler yabancılaştırılması olacak, ama Microsoft zaten bunu hep yapıyor).

Ardından Adobe da artık HTML 5'i destekleyen araçlar üreteceğini açıklayarak kervana katıldı. Peki son derece yaygın Flash'a ne olacaktı? Üstelik Flash çok gelişkin özelliklere sahip, yani, en azından şu an HTML 5 Canvas'ın yapamadığı şeyleri yapabiliyordu. İşte Adobe bence bu konuda akıllıca bir iş yaparak Flash bileşenlerini geliştirmeye yarayan Flex SDK'sını Apache vakfına bağışladı. Apache vakfı, çok popüler olan Apache web sunucusu ile bilinse de, aslında birçok temel ve açık kaynaklı teknolojik ürünün geliştirmesini destekleyen bir kuruluş. Yani Adobe aslında gözbebeği ürününü emin ellere bıraktı. Diğer yandan da Microsoft'un klasik Visual Basic'de yaptığı gibi kendisine o güne kadar güvenmiş geliştiricilerini birden ortada bırakmamış oldu. Ama kendisi açısından esas önemlisi, Flash gibi artık yanlış konumda olduğu bir ürünün geliştirmesinde ısrar etmekten ve varlığını tehlikeye sokmaktan kurtuldu.