How to become a MediaWiki hacker/tr
Dil: | English • Deutsch • Français • Bahasa Indonesia • 日本語 • Occitan • Polski • Português do Brasil • Српски / Srpski • Türkçe • 中文 |
---|
- Bu maddedeki bazı bilgilerin geçerliliğini yitirmiş veya yanlış olma ihtimali vardır. Eğer konuyla alakalıysanız maddede değişiklik yapmaktan çekinmeyin.
Bu madde, MediaWiki'nin geliştirilme süreci hakkında bilgi içermekte, konuyla alakalı sayfalara bağlantı vermekte ve neophyte geliştiricilerinin sorularını cevaplamaktadır. Eğer yazılımı geliştirerek bize katkıda bulunmak istiyor ancak yeterli bilgi birikiminiz olmadığını düşünüyorsanız bu maddeyi okumanız şiddetle tavsiye edilir.
Contents |
[edit] Gerekli okuma
- E-posta listeleri: geliştirme için wikitech-l, destek için mediawiki-l, SVN bildirileri için mediawiki-cvs.
- Manual:Database layout sayfası daha fazla dokümantasyona sahiptir.
- BugZilla MediaWiki'nin hata/özellik bildirme/isteme deposudur.
[edit] İşletim sistemleri
MediaWiki yazılımı PHP dili ile yazılmıştır ve MySQL veri tabanı kullanır. Bunların ikisi de Microsoft Windows ve birçok Unix türevi gibi çeşitli işletim sistemleriyle kullanılabilir. Yani MediaWiki'yi her iki sistemde de kullanmak mümkündür. Ancak Windows kullanıyorsanız ek programlar gibi bazı özellikleri kullanamazsınız veya bunun için bazı ek promramcıklar indirmeniz ve yapılandırma ayarlarıyla da oynamanız gerekir. Bazen işletim sistemi kaynaklı hatalar oluşabilir, kullandığınız işletim sistemini önemsemeden platformlar arasındaki farkları bilmek en iyisidir.
[edit] PHP programlama dili
Eğer PHP bilmiyor, ancak başka bir nesne yönelimli dil biliyorsanız korkmanıza gerek yoktur, PHP öğrenmesi son derece kolay bir dildir.
Eğer hem PHP hem de başka bir nesne yönelimli dil bilmiyorsanız, en azından sınıf, nesne, metot, olay ve kalıtım kavramları hakkında bilgi edinmeniz tavsiye edilir.
Eğer hiçbir programlama dilini bilmiyorsanız başlangıç için PHP iyi bir dildir, çünkü kendi açısından özel bir dil olmasına rağmen diğer modern dillere oldukça benzer.
Yorumlayıcıyı başlatmak için, PHP scripteri komut satırından veya pencere yöneticisinden çalıştırılabilir. Örn: (Linux/UNIX)
/usr/bin/php -q < phpshell.php
Genellikle, web sitelerinde sunucudan ".php" uzantılı bir dosya istendiği zaman bir PHP scripti çalıştırılır, yani sunucu (önceden kurulmuş olan) PHP yorumlayıcısını çalıştırır, yorumlayıcı PHP dosyasını yorumlar ve tarayıcınıza sonucu gönderir. PHP dosyası hem bildiğimiz HTML hem de PHP kodları içerebilir, bu sayede basit bir web sitesinin dinamik bir özellik kazanması son derece kolaylaşır.
[edit] İlgili bağlantılar
- PHP öğreticisi (birçok dilde)
- PHP kılavuzu (birçok dilde)
- Wikibooks'ta PHP
[edit] SQL ve MySQL
Vikipedi şu an veri tabanı için MySQL kullanmaktadır. MySQL desteğinin PHP'ye derlendiğinden emin olun!
MediaWiki PostgreSQL'i de desteklemektedir, ancak bazı küçük hatalar oluşabilir.
[edit] MediaWiki kurulumu
Yamaları oluşturmadan önce SVN'den son kaynakları edinin. SVN'den kaynakları nasıl edineceğinizi Download from SVN sayfasından öğrenebilirsiniz.
Kaynaktaki INSTALL dosyasındaki talimatları gerçekleştirin. Ayrıca kurulum rehberini de okuyabilirsiniz.
MediaWiki özelliklerini geliştirmek için Vikipedi veri tabanını indirmek zorunda değilsiniz. Aslında, birçok durumda neredeyse boş bir veri tabanını çok az özel olarak elle yapılmış test sayfasıyla kullanmak daha kolaydır. Ancak çeşitli sebeplerle Vikipedi'nin bir kopyasını edinmek isteyebilirsiniz, bunun için meta:data dumps sayfasını kullanın.
Bazı durumlarda viki veri tabanına erişemeyebilirsiniz. Bu durumlarda AdminSettings.php dosyasını en üst seviye MediaWiki kurulum klasöründe oluşturduğunuzdan emin olun (LocalSettings.php dosyasının bulunduğu klasörde). Bazı ayarlar yapabilmeniz için AdminSettings.sample dosyanız oluşturulacaktır - MySQL yönetimi için kullanıcı adı ve şifrenizin doğru ayarlandığından emin olun. Daha fazla bilgi için Manual:Upgrading sayfasına başvurabilirsiniz.
Bağlantı tablolarını yeniden oluşturmak uzun zaman alabilir (özellikle de oldukça büyük olan İngilizce veri tabanını yüklediyseniz). Ayrıca isterseniz eski tabloyu önemsemeyebilirsiniz. Rebuildall.php dosyasını ne için kullanabileceğinizi öğrenmek için Manual:Database layout sayfasına bakabilirsiniz.
Eğer Vikipedi'nin herkese açık bir yansısını oluşturmak istiyorsanız öncelikle bunun iyi bir yöntem olmadığını söylemeliyiz. Bu şekilde bir yansı oluşturursanız, lütfen kodu yalnızca bir yansıyı incelediğinizi belirtecek şekilde değiştirin ve ana sayfaya da bağlantılar ekleyin. Daha fazla bilgi için Forks and Mirrors sayfasına bakın.
[edit] MediaWiki kod tabanı
MediaWiki kod tabanı çok büyük ve sevimsizdir. Ancak korkmayın. İlk başladığınızda özellik yazmaya veya küçük hataları düzeltmeye çalışın.
Dokümantasyonu inceleyebilirsiniz (uyarı: çok uzun sayfalar olabilir).
MediaWiki'yi öğrenmenin en iyi yollarından birisi kodu okumaktır. Bunun içinse şu adreslere bir göz atmanızı tavsiye ederiz:
- index.php etkileri tam olarak belli olmamasına rağmen ana başlangıç noktanızdır.
- Article.php sayfaları görüntülemek, silmek, geri almak, izleme listesine almak ve izleme listesinden çıkarmak için kodlar; ayrıca da sayfaları bir sürüme getirme veya kaydetme gibi maddeleri yönetmek için bazı programcıklar içerir.
- EditPage.php sayfaları değiştirmeyle ilgili kodların yarısını içerir (kullanıcı arayüzüyle daha çok ilgili olan yarı). Kalan kodlar ise Article.php dosyasında ve çeşitli *Update.php dosyalarındadır.
- Parser.php viki metnini HTML'e dönüştüren kodların büyük bir kısmını içerir. Çok az kod ise Skin.php dosyasındadır.
- Linker.php linkler ve resimler için HTML'i üreten fonksiyonları içerir.
- Özel sayfaların kodlarının büyük bir kısmı Special*.php dosyalarındadır.
- DatabaseFunctions.php veri tabanına erişmeyle ilgili fonksiyonları içerir.
- OutputPage.php bir çıktı arabelleği olan OutputPage sınıfının evidir. Metninizi buraya gönderdiğinizde script çıkmadan hemen önce stdout'a gönderilecektir.
- Title.php başlıklar hakkındadır -- interwiki başlıklarını ve "#" kısımlarını da içerir. Bir madde hakkında veri tabanından bilgi çeken bazı fonksiyonlar bulunur.
- User.php kullanıcı tercihleri ve izinleriyle ilgili olan User sınıfını içerir.
- Setup.php tüm ilklendirme türlerini yapar, uzun çalışma süreli bir hesaba benzer. Diğerlerinin arasından, genellikle nesneler içeren birçok global değişkeni ilklendirir.
- DefaultSettings.php LocalSettings.php'de önemsenen veya önemsenmeyen birçok global değişkenin varsayılanlarını içerir.
isset()
kullanmayın, tanıttığınız herhangi bir global değişken için her zaman bir varsayılan ekleyin.
Debug işlemiyle başlamak için How to debug sayfasını okuyun.
Ayrıca bakınız Manual:Code.
[edit] İlk yapabilecekleriniz
İşte size birkaç öneri:
- Sizi ilgilendiren bazı şeyleri kodlayın.
- Kullanıcıların hoşuna gidebilecek basit bir katkı kodlayın, estetik bir düzeltme gibi.
- Kullanışlı bilgiler içeren bir özel sayfa yazın. Hatta modüler bir özel sayfa da yapabilirsiniz, eklentiler klasör ve modülünde örnekler bulunmaktadır.
- Bir ayrıştırıcı yazın, daha fazla bilgi için Manual:Extending wiki markup sayfasına bakın.
- Diğerlerinin kafa yormak istemeyeceği rahatsız edici küçük bir hatayı düzeltin.
Daha özel fikirler için lütfen #mediawiki'de geliştiricilerle yazışın. Bize nasıl yardımcı olabileceğinizi bilmediğiniz için kendinizi bu mekandan uzaklaştırmayın. Bizde yarım düzine programcının bir yıl boyunca meşgul olmasını sağlayacak fikirler var.
Başlamadan önce, özellikle de eklemenizin kodun diğer kısımlarını nasıl etkileyeceğini bilmiyorsanız, #mediawiki'de kıdemli geliştiricilerle (örn. Brion veya Tim) yazışmanız tavsiye edilir.
Eğer hazır olduğunu düşündüğünüz bir katkınız varsa, Subversion'a yazma hakkı için baskı yapın, böylece katkınızın işlerlik kazanmasını sağlayabileceksiniz (bu konuda daha fazla bilgi için bkz: commit access). Yamaları göndermek can sıkıcı olabilir, ancak iyi niyetinizi göstermek için bunu bir veya iki kere denemeniz tavsiye edilir. Katkınızın işlerlik kazanmasından önce söz konusu katkının kolayca devre dışı bırakılabilecek şekilde yapılandırıldığından emin olun.
Lütfen Wikimedia sunucularına kabuk erişimi istemeyin. Kabuğu, yalnızca bazı deneme türlerini kabul edecek şekilde kısıtlayamıyoruz, o yüzden kabuk erişimini yalnızca çok güvendiklerimize sağlıyoruz. İnsanları üzmek bizi de üzüyor, ancak güvenliğimiz için bunu yapmak zorundayız. Teklif gelene kadar bekleyin, uzun zaman alıyorsa, destek için test yapın.
[edit] Test
Katkıda bulunurken mevcut duruma zarar vermeyeceğinizden emin olun.
- maintenance/ içinde viki metninin ayrıştırılmasını test eden bir ParserTest frameworku bulunmaktadır. Bu muhtemelen katkınız için en uygun test ortamı sunacaktır.
- tests/ PHPUnit frameworku kullanan bazı daha küçük test durumları içerir. Bu, belirli fonksiyonların testlerini çalıştırmak için uygun olabilir
- t/ TAP frameworku kullanan biraz test içerir.
[edit] Yama gönderme
Yamanızı üretip test ettiğinizde şunu kullanarak değiştirilmiş dosyanın değişikliklerini edinin:
svn diff path/to/modified_file.php > my.patch
Sonra uygun bir hata raporuna yamayı attachment olarak gönderin.