Kullanıcı:Volkan/Yazılım/Vikipedi

Vikipedi, özgür ansiklopedi

Yorumlar için lütfen ileti sayfamı kullanın: Kullanıcı_mesaj:Volkan

Vikipedi için yazılım geliştirmek[değiştir | kaynağı değiştir]

MediaWiki[değiştir | kaynağı değiştir]

Vikipedi, MediaWiki adlı Wiki tarzı bir ağ servis ortamı kullanılarak yazılıyor. PHP ile yazılan MediaWiki diğer yaygın PHP uygulamalarında olduğu gibi arka planda ilişkisel bir veritabanı kullanmakta.

Vikipedi'de görmek istediğiniz yeni işlevler ya da eklentiler için akla ilk gelen şey (en azından benim aklıma ilk gelen şey) açık kaynak kodlu MediaWiki yazılımına katkıda bulunmak. Ne yazık ki çoğu özgür yazılım projesinde olduğu gibi yazılıma yeni özellikler katmak meşakkatli bir yoldan geçiyor. Projenin yazılım yönergelerine uygun tarz ve kalitede yazılmış bir kodla geldiğinizde proje yöneticilerini bu yeni özelliğin kabulu için ikna etmeniz gerekecek. Katkınız umulduğu gibi çalışmayan bir kodu düzeltmek ise kabul edilme olasılığı oldukça yüksek. Öte yandan, yeni bir işlevle getiriyorsa o zaman yokuş yukarı bir mücadelenin başındasınız demektir.

Katkınızın kullanıcıların çoğuna hitap eden bir çözüm olduğunu göstermeniz gerekecek. Neyse ki, yazılım çok monolitik olmadığından, yeni işlevlerin çoğu kez bağımsız modüller halinde geliştirilmesi mümkün.

Varsayalım ki kodunuz MediaWiki'nin bir parçası olmaya layık bulundu. Kodunuzun Vikipedi'de çalışıyor olacağı güne yakın olduğunuz anlamına gelmiyor bu ne yazık ki. Wikimedia vakfına ait sunucular üstünde koşan yazılımın ne zaman ve ne şekilde güncelleneceğine Vikipedi yöneticileri karar veriyor. Riskli görülen ya da büyük bir gruba hitap etmeyen modüller kullanılmıyor.

Hemen umutsuzluğa kapılmayın, alternatif çözümler de var!

Botlar[değiştir | kaynağı değiştir]

Bot, genellikle etkileşimli kullanılmayan, rutin işler yapan yazılımlara verilen bir ad. Öte yandan, Vikipedi üstünde çalıştırılacak botları geliştirmek için kullanılan yazılım kütüphaneleri, MediaWiki yazılımına dokunmadan Vikipedi'ye yeni yetenekler kazandırmak için de uygun çözümler sağlıyor.

Bot kütüphanelerinin önerdiği çözümler klasik web istemci sunucu modelleri üstüne kurulu:

  • Vikipedi'de kullanıcı adı ve parolasıyla bir oturum açılması
  • Hedeflenen sayfaların istemciye taşınması
  • HTML okuyup yazan kütüphaneler
  • İşlenmiş bilginin Vikipedi'ye kaydedilmesi

Bu temel işlevleri karşılayan yazılım kütüphanelerine sahip olduğunuzda MediaWiki'ye dokunmadan geliştirilebilecek sayısız eklentiler yazmak mümkün.

Örnek uygulamalar:

  • Tercih ettiğiniz WYSIWYG kelime işlemcisinde yazdığınız içeriği Vikipedi formatına çeviren ya da aksini yapan bir eklenti.
  • Herhangi bir maddeyi silinmeye aday ilan etmek için eklenmesi gereken iki şablon, yaratılması gereken bir yeni sayfa vs.yi tek adımda tamamlayacak bir eklenti.

Yığın işlemler için tasarlanmış bu kütüphaneleri etkileşimli çözümler için kullanmanın en büyük dezavantajı artık neredeyse evrensel grafik kullanıcı arabirimi haline gelmiş ağ tarayıcıları dışında araçlar kullanmak zorunda kalmaktır. Bir diğer deyişle, daha özelleşmiş araçların kullanılması gerekecektir ve bu da oldukça yüksek bir maaliyet.


Ağ tarayıcısı destekli çözümler[değiştir | kaynağı değiştir]

Başka alternatifler de var. Ağ tarayıcıları ortaya çıktıkları 90'lı yıllardan bu yana çok geliştiler. Başlangıçta 14 etiketi olan HTML artık farklı varyasyonları olan, komplike bir ifade yöntemi. Yukarıda bahsedildiği gibi artık evrensel kullanıcı arabirimi haline gelen ağ tarayıcıları bize başka alternatifler de tanıyorlar.

Bu alternatiflern en yaygın olanlarından biri "eklenti" modeli. Ağ tarayıcıları standartlaşmış ara birimler tanımlıyorlar ve bu arabirimler kullanarak özel amaçları olan eklentiler yapmak mümkün olabiliyor. Bu yaklaşımın iki önemli avantajı var:

  • Yukarıda bahsi geçen kütüphanelerin sağladığı oturum açma, veri okuma, veriyi Vikipedi'ye kaydetme vs. türü işlemlerin tamamı ağ tarayıcısı tarafından üstleniliyor. Eklentinin tek yapması gereken veriyi işlemek.
  • Çok daha taşınabilir çözümler yaratmak mümkün hale geliyor. Kullanılan işletim sisteminden bağımsız, Vikipedi'nin standart arabirimini kullanan çözümler yaratılabiliyor.

Modern ağ tarayıcılarının neredeyse tamamı bu tür eklenti ara birimleri sağlıyor. Mozilla'nın GreaseMonkey ve IE'nin Trixie eklentileri en tipik örnekler. DHTML ve JavaScript'in nimetleriyle yazılan küçük yazılım parçaları kullanıcıya ilgili sayfanın doğal uzantısıymış gibi görünüyor.

Yaygın kullanılan uygulamalardan bazıları neler yapılabildiği konusunda fikir verecektir:

  • Güvenli GMail bağlantısı: Google'ın e-posta servisi olan GMail'e standart http:// protokolü ile ulaşılabileceği gibi güvenli bağlantı kuran https:// ile ulaşmak da mümkün. Nisyan ile malul belleğimize güvenmeyenlerimiz güvenli GMail bağlantısı sayfasından alıp kuracakları yazılım sayesinde aradaki bu farkı hatırlamak zorunda kalmayacaklar. GMail'e her bağlanıldığında trafik https:// portuna yönlendirilecektir.
  • RSS okuyucu: Artık IE7, Mozilla 1.5, Outlook 2007 ile tümleşik olarak gelse de yapılabilecek uygulamaların karmaşıklığını göstermek amacıyla bahsetmeye değer bir yazılım. blog yükle sayfasından ulaşılabilir.


Ancak bu çözümün de sıkıntıları var. DHTML, DOM ve JavaScript kullanılarak yazılmış olsalar da kullanılan eklentiye bağlı olarak sadece belli ağ tarayıcıları tarafından destekleniyor olabilirler. Trixie gelene kadar Mozilla GreaseMonkey için yazılmış yazılım parçalarını IE'de çalıştırmak mümkün değildi.

Diğer bir problem de bu yazılım parçalarının kullanılan bilgisayara yüklenmesi gerekliliği. Çok yüksek bir bedel olmasa da lojistik sorunları çıkarabilen bir durum.


Monobook.js ve Monobook.css[değiştir | kaynağı değiştir]

Monobook MediaWikinin kullanımı en yaygın teması. Her tema bu tür iki dosyayla geliyor.

Monobook.js içinde, ağ tarayıcısı tarafında çalışan programcıklar var. Monobook.css ise, MediaWiki'nin ürettiği dinamik sayfalardaki nesnelerin kullanıcıya nasıl gösterileceğini (renk, pozisyon, nesneler arası konum ilişkileri) belirliyor.

Yukarıda anılan js (JavaScript) ve css (Cascading Style Sheets) dosyalarının iki farklı kullanımı var. Bu dosyaların sistem çapında kullanılan ve tüm kullanıcıların ağ tarayıcılarına yüklenen sürümleri yerel yöneticiler tarafından (yani Vikipedi sunucularına erişimi olmayan yöneticiler) değiştirilebiliyor. Bu dosyalarda yapılan değişiklikler ilgili Vikipedi'nin tüm kullanıcıları için geçerli oluyor.

Diğer bir yöntem de kullanıcıların kendi hesapları altında yaratacakları .js ve .css dosyaları. Bu dosyalarda tanımlanan işlevler ve görüntüleme direktifleri sadece ilgili kullanıcı için geçerli.

Bu dosyalara yapılacak eklerle tamamen platformdan (hem işletim sisteminden hem de ağ tarayıcısından) bağımsız çözümler üretmek mümkün. Dosyalar Vikipedi'de kayıtlı olduğundan taşınması gerekmeyen, gerçek anlamda "evrensel" arabirim çözümleri yaratılabiliyor.

Kullanıcı:Volkan/Monobook.js sayfasında bulabileceğiniz uygulama (ilgili işlevlerin adları) değiştirme sayfasındaki butonlara bir menü daha ekliyor. Bu menüden çok sık kullanılan uyarı şablonlarından birini seçerek metine eklemek mümkün. Böylece uyarı şablonlarının adlarını, tam yazılışlarını hatırlamak zorunda kalmayacaksınız.

Yazmayı planladığım diğer uygulamalar:

  • SAM prosedürünü bir adımda çözmek:
Bulunduğunuz sayfayı "Silinmeye Aday Madde" ilan etmek istediğinizde sayfanın üstündeki sekmeler arasından SAM'ı seçmeniz yeterli olacak. Arkada çalışacak yazılım önce bulunulan sayfaya şablon ekleyecek, ardından oylama sayfasını yaratıp ikinci şablonu yerleştirecek ve SAM proje sayfasına gerekli bağlantıyı ekleyecek.
  • Oylama sürecinin standartlaştırılması:
Kullanıcıların oy kullanma yetkinliği yöneticiler tarafından denetleniyor. Şu anda gidip ilgili kullanıcının kayıt süresi, aktifliği vs. gibi parametrelerin tek tek incelenmesi ile gerçekleştiriliyor. Oysa, oy kullanmaya hakkına sahip kullanıcıların listesi otomatik olarak oluşturulup güncellenebilir.
Bu konuda atılabilecek diğer bir adım da oy kullanma deneyiminin iyileştirilmesi. Şu anda her oy kullanıcılar tarafından ilgili metin alanını seçip, oylarının içeriğini belirtip, imzalarını eklemeleri suretiyle gerçekleştiriliyor. Oysa, oylama şablonunun ekleneceği sayfada çalışacak yazılım sadece yetkin kullanıcılar için etkinleştirilecek, tüm oyların birörnek görünmesini sağlayacak, oyların sayımını güncelleyebilecek ve saire...
  • Tartışma sayfalarının düzenlenmesi:
Tartışma sayfalarına mesaj eklerken tüm karar kullanıcıya bırakılıyor. Kullanıcılar bazen ekledikleri paragrafı öncekine çok yakın tutarak, paragrafın hizasını kaydırmayarak, ya da kronolojik sırayı umursamadan ekleyip ayırdedilmesini güçleştiriyorlar. Öte yandan, basit bir yazılım mesaj ekle butonuna basıldığında mesajı olması gereken yere en uygun şekilde yerleştirebilecektir.

Bu çözümün de dezavantajları var. PHP programlama modeli gereği sayfadaki döküman elemanlarının niteliği sunucu tarafından belirleniyor. Bu elemanları sınırlı şekilde değiştirmek, eklemeler yapmak mümkün ama kontrol tümüyle istemcinin elinde değil... Bu da aslında katkıyı MediaWiki'den bağımsız yapmak istediğimizde ödemeye hazır olduğumuz bir bedeldi...