Açık Kaynak (Open Source) Kod Yazılımcısı

Açık Kaynak Kod Yazılımcısı

Açık Kaynak Kod Yazılımcısı Olmak İçin Ne Gerekli?

Aslında öğrenme yeteneği, merak ve sabırdan başka hiç bir şey gerekli değil. Bir bilgisayar, üzerinde açık kaynak kod geliştirmeniz için gerekli araçlar minimum gereksinimler. Internet’e erişim bunlardan sonra gelen ikinci en önemli gereksinim. Geriye kalan teknik bilgileri (çeşitli programlama dilleri, teknikleri, işletim sistemleri vb) bilmeniz elbette faydalı olur, fakat bunları öğrenebilme imkanı da açık kaynak kodlu sistemlerin iyi taraflarından birisi.

Nereden Başlanır?

En iyi başlama yöntemi, ihtiyaç duyduğunuz bir şey olmasıdır. Bu, ne kadar ufak olursa, o kadar iyi. Çok büyük projelere başlamak, bunları tasarlamak elbette güzel, fakat özellikle başlarda yapılabilir minimumlarda gezinmek en doğrusu. Öbür türlü işin yükünü kaldıramayabilir, yarı yolda bıkıp bırakabilirsiniz. Eğer iş ve özel hayatınızda açık kaynak kodlu sistemleri (örneğin Linux) kullanıyorsanız, "şu da olsaydı" dediğiniz noktalar olmuştur. Buralardan başlamak en doğrusudur. Gerçek bir ihtiyacınıza cevap veren bir yazılım, hem sizin ilginizi uzun müddet çeker, hem de sistem analizini doğru yapma fırsatınız olur.

Kendi İhtiyacınıza Cevap Veren Bir Konu Seçin Bir kaç sebepten dolayı açık kaynak kodlu yazılım geliştirebilirsiniz: Bir şeye ihtiyacınız vardır ve bulamazsınız, çözüm yoktur. Veya bir hobi olarak bu işle uğraşmak istersiniz. Burada zor olan şey aslında hobi olarak uğraşmak. Çünkü yazılımı geliştirmek ve daha sonra ayakta tutarak devam ettirmek uzun soluklu bir iş. Dolayısıyla gerçekten kullanacağınız, ihtiyaç duyduğunuz bir şey bulmaya gayret edin. Sizin yazıcınız Linux üzerinde desteklenmiyor olabilir. Kurban ve Ramazan Bayram’larının tarihlerini şaşırıyor ve "iki hafta önce haberim olsa da kart atma imkanım olsa" diyor olabilirsiniz.

İlk Internet üzerinde kamera yayını (webcam), yazılımcıların laboratuarın öbür tarafında duran kahve makinasına kadar gidip boş bulduklarından dolayı yazılmıştı ve kahve makinasını Internet’te gösteren bir kamera düzeneği idi. Sizin ihtiyacınıza cevap verdikten sonra gerisinin önemi yok.

Eğer bankacı değil iseniz, banka sistemleri ile uğraşmıyorsanız, ilk açık kaynak kodlu projeniziçin Linux üzerinde bir banka sistemi yazmayı tercih etmek, %99 başarısızlıkla sonuçlanacak birprojeye başlamak demektir. Hem proje fazla büyük (bankacılık sistemleri milyonlarca satır kodiçerir), hem de sizin bu projenin sistem analizini yapacak bilginiz eksiktir.

Ama Benim Hiç Bir İhtiyacım Yok?Emin misiniz? Muhakkak vardır, biraz düşünün. Yok sahiden aklınıza hiç bir şey gelmiyor ise, en sıkkullandığınız yazılımın geliştirildiği web sitesine gidin ve yapılacak işler listesine (TODO List) bakın. Oradaki işlerden birini yapmayı deneyin. Mevcut bir yazılım üzerinde değişiklikler yapmak tecrübe kazanmak için iyi bir yoldur.

Konumu BuldumTebrikler. Şimdi lütfen Google, SourceForge ve Freshmeat’e gidin ve bu konudaki yazılımları arayın. Yazmak istediğiniz yazılım birileri tarafından zaten yazılmış ve yaygın kullanımda olabilir. Veyadoğru başlamış ve doğru yolda (sizin gitmek istediğiniz yolda) giden bir çalışma grubu olabilir. Konunuzla ilgili bulduğunuz yazılımları gözden geçirin. İsteklerinize az değişiklik ile cevap verebiliyorsa, o projeye katılın ve yazılıma o değişiklikleri katın. Türkçe olması, ufak tefek görüntü değişiklikleri, hatta ciddi değişiklikler katkı olarak verilebilir. Bu şekilde katkılarda bulunmak sizi küçültmez. Aksine, mevcut bir yapı içerisinde ciddi katkılarda bulunmak, sıfırdan bir proje geliştirmekten çok daha kolaydır ve ilerideki projeleriniz için ciddi tecrübe edinirsiniz.

Mevcut Projelerin Hiç Biri Benim İstediğimi Yapmıyor O zaman siz bir proje başlatacaksınız. Uzun, bir hayli yalnız ve sıkıntılı bir yoldur, amayapılamaz bir şey değildir.

Hemen Bir Proje Kurup Gönüllü Arayayım Bulamazsınız. Daha önce ciddi başarılara imza atmış (C dilini geliştiren yazar vb) kişiler bile sıfırdan ve planlama aşamasında ciddi bir gönüllü grubu toplayamazlar. Gönüllüler ne yapacak? Hiçbeyni olmayıp çok sayıda midesi olan tek canlı komitelerdir. :-) Komite ile dizayn yapılmaz.Protokol oluşturan konsorsiyumlar bile bireysel olarak protokol örneklerini hazırlar, bu örneklerinüzerinde çalışıp hepsinin iyi taraflarını toplayarak protokolü oluştururlar.

İlk başta kendiniz oturup yazılımınızı iyi kötü yazacaksınız. Herşeyi hemen yapması gerekmez, fakaten azından yapmak istediği şeylerin bir kısmını yapar hale getirin. Yapmak istediğiniz diğerşeylerin mümkün olduğuna emin olun - bazen yazılımın yapısı bazı şeyleri imkansız kılabilir.Yazılımınız en azından bir "beta" kalitesine gelsin.

Yazdım, Şimdi Ne?Kullanıyor musunuz? Bir ihtiyacınıza cevap vermek üzere yola çıkmıştınız. İyi kötü kullanmayabaşladıysanız, artık bunu bir proje haline getirmeyi düşünmeniz gerekebilir.

Proje OluşturmakNeden Internet’e Koyayım?Bunun çok açık seçik nedenleri yok. Eğer sizin işinize yarayan bir şey ise, başkalarının da işineyarayabilir. Bir kullanıcı kitlesi oluşturmak hem proje gelişiminde size yardımcı olacak gönüllügrubunu bulmak için, hem de yazılımınız hakkında hata raporları gibi sizin tek başınızakullanışınızda bulmanız zor olan şeyleri bulmakta işinize yarayabilir. Daha önce faydalandığınızaçık kaynak kodlu yazılımlara bir karşılık olarak bunu kullanıcılara sunmak isteyebilirsiniz. Bellibir miktar "şan şöhret" kazanabilirsiniz.

Bir Lisans Seçtiniz Mi?Yazılımınızı dış dünyaya sunduğunuz zaman hangi lisans altında sunacağınıza karar vermeniz gerekli.Benim tavsiyem GPL. Bir yazılımı GPL altında nasıl yayınlayacağınız hakkında İngilizce bilgi buradamevcut. Kısaca, yazılımın her dosyasına bir telif hakkı ibaresi, ve bu yazılımın GPL altında yayınlandığına dair bir iki paragraf koymanız ve GPL’i paketinizin içerisine ayrı bir dosya halindekoymanız gerekli. Bunlar İngilizce olmak zorunda.

Yani her dosyanıza:

/* Copyright 2002 Adım Soyadım

This program is free software; you can redistribute it and/or modify it under the terms of the GNUGeneral Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not,write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/

şeklinde bir telif hakkı ve lisans bildirim ibaresi eklemeniz gerekli. Ayrıca, GPL’in orjinal metnini yazılımınızın içerisine ayrı bir dosya olarak koymanız gerekli. GPL’in Türkçe çevirisini okumak isteyebilirsiniz, fakat bağlayıcı olan İngilizce metindir, yazılımlarınız içerisine İngilizce metni koymanız gereklidir.

Bu işlemleri yaptığınız zaman yazılımınız için telif hakkı almış ve yazılımınızın dağıtımını GPL’in koruması altına sokmuş olursunuz.

Yazılımınız Derlenebilir mi?Yazılımınızı rahatça derlenip kurulabilecek hale getirin. Kimse sizin yazılımınızı derlemek için gereken seksen adımı yapmaz. ./configure ; make ; make install en fazla bekleyebileceğiniz işlemdir. Bunları nasıl yapacağınızı bilmiyorsanız, autoconf ve make paketleri hakkında bir şeyler öğrenin. Eğer yazılımınızı yaygın dağıtımlardan birinin paket sistemi (RPM, apt vb) şeklinde dağıtabiliyorsanız, bunu tercih edin.

Eğer yazılımınız derlenmeyen bir dilde yazılmış ise - perl, PHP vb, yine de uygun ve anlaşılır bir kurma yöntemi olmalıdır. Genelde paketlerin içinden README (benioku) ve INSTALL (kurma) dosyaları çıkar, bu dosyalarda paketin ne olduğu, ne iş yaptığı, nasıl kurulacağı hakkında bilgiler bulunur.

Yazılımınıza Sürüm Numarası VerinBunu ilk başta yapın ki, daha sonra sorun olmasın. Yazılımınıza ilk başta 0.1 veya 0.9 (ne kadarkullanılabilir vaziyette Internet’e çıkarıyorsanız) vermek faydalıdır. Oturmuş olan ilk sürüm 1.0olur, ufak tefek değişiklikler noktadan sonra olur. Yani 1.2, 1. sürümden yapı olarak çok farklıdeğil, ufak tefek değişiklikler içeriyor manasına gelir. 10 yıllık Linux çekirdeğinin 2. sürümdeolduğunu düşünerek sürüm numaralarınızda fazla bol keseden davranmayın..

Web Siteniz var mı?Yazılımınızı başkalarının kullanmasını istiyorsunuz. Bunu sağlamanın ilk adımı yazılımınızınInternet’te bir sayfası olmasını sağlamak. Yazılımınızın Internet’te kendine ait bir sayfasıolmaması için hiç bir neden yok. Sourceforge veya Savannah’ta bir proje açmak size bir web siteside sağlar ve maliyeti sıfırdır. Üstelik, ihtiyaç duyacağınız e-posta listesi, CVS sunucusu, FTPsunucusu gibi hizmetleri de veriyorlar. Veya Türk kaynaklı gruplardan yardım alabilirsiniz: LinuxKullanıcıları Derneği, AçıkKod Org gibi gruplar Türk açık kaynak kod projelerine yardım ediyorlar.Size de bir web sitesi ve ihtiyaç duyduğunuz diğer imkanları sağlayabilirler. Temasa geçin. Eğertamamen kendinize ait olmasını istiyorsanız, Internet’te bir alan adını kaydettirmenin maliyetiyaklaşık 35 USD, web hizmetlerini bir yıllık kiralamanın bedeli ucuzunda yıllık 36 USD’dir.Geocities vb gibi bol miktarda reklam barındıran ve esas olarak kişisel web siteleri içinhazırlanan bedava hizmetleri kullanmayın. Proje bağlamında olacak olan indirme (download) trafiğibu siteler tarafından hoş karşılanan bir şey değil. Size web hizmeti ve hatta daha fazlasını bedavaverecek olan bir sürü grup var Internet’te, onlarla temasa geçin.

Web sitenizin süslü püslü olması, arka planında kullanıcı girişleri, chat sunucusu vb olmasıgerekmiyor. Kolay okunabilir, sade, amaca yönelik bir web sitesine ihtiyacınız var. Amacınız ise,bir şekilde buraya ulaşan bir potansiyel kullanıcıya sizin yazılımınızın onun derdine nasıl devaolacağını anlatmak.

Bu amaca yönelik olarak web sitenizde yazılımınızın ne iş yaptığını, eğer başka paket/yazılımlaragereksinim duyuyorsa bunların ne olduğunu anlatmalısınız. Eğer çeşitli standartlar, protokoller ileuyumlu iseniz bunlardan bahsetmelisiniz. Çoğu yazılım web sitesi, kendi konusundaki diğer alternatifyazılımlar hakkında da bilgi ve link verir.

Yazılımınızı indirmeleri için kolayca anlaşılır bir link vermelisiniz.

Bir Posta Listeniz Var Mı?Yazılımınızı kullananlar için ilk başta bir tek e-posta listesi açın. Buranın fazla suskun/sessizolmasına aldırış etmeyin. İkide birde "madem kullanıyorsunuz, insan bir haber verir yahu" tarzındae-posta atmayın. Yazılımınızın yeni bir sürümü çıktığı zaman web sitenize yerleştirdikten sonraburaya bir duyuru geçin. Kullanıcılardan gelen soruları cevaplayın. Yazılımda değişikliktaleplerini en azından okuyun. Bu değişiklik taleplerinin hepsini hemen yapmak zorunda değilsiniz,fakat kullanıcılarınızın ne istediğini bilmek, yazılımın nasıl şekilleneceğine karar vermek içinfaydalıdır.

İleride posta listelerinizi çoğaltabilir ve anonslar (yeni sürüm vb anonslar), kullanıcı listesi(yeteri kadar popüler bir yazılım olursa, kullanıcılar birbirlerine yardım ederler, bırakınetsinler), ve geliştirme listesi (gönüllüleriniz) olarak ayrı listelere bölünebilirsiniz. Baştanbunları uygulamak listelerin hiç birisinin hayata geçmemesine sebep olabilir. Trafik çok artıpinsanlar farklı listeler talep edene kadar tek listede kalın.

Yazılımınızı ve Web Sitenizi Çok Dilli HazırlayınAçık kaynak kod felsefesinin bir uzantısı da yerelleşmedir. Yazılımınızı İngilizce hazırlayıp enfazla kullanıcı kitlesi olan gruba hitap etmek isteyebilirsiniz. Ama bir yazılımı çok dillihazırlamak bundan daha zor değildir. Kullanacağınız araç seti gettext. Gettext’i kullanırkenyazılımınızın içerisine serpiştirdiğiniz dizgeleri normal C dilinin dışında, biraz farklı biryöntemle yazıyorsunuz. Ondan sonra yazılımınızı gettext araçlarından geçirip POT dosyasını eldeediyorsunuz. POT dosyası yazılımın çevrilecek dizgelerini içerir. Yazılımınızı gettext kitaplığıile bağladığınız zaman, gettext, sistemde kurulu olan öntanımlı dil hangisi ise, onun çeviridosyasını bulup kullanmaya gayret eder. Eğer yok ise, İngilizce’sini kullanır. POT dosyası eldeettikten sonra, bunun 36 dile çevrilmesi için GNU Çeviri Projesi ile temasa geçebilirsiniz. Açıkkaynak kodlu tüm yazılımlar kabul ediliyor ve çeşitli dillere (Türkçe dahil) gönüllüler tarafındançevriliyor.

Web sitenizin çevrilmesi için benzer bir çeviri projesi yok. Fakat kullanıcılarınız içerisindenbunu yapmak isteyecek olan gönüllüler çıkabilir. Bu tarz gönüllülere teşvik edici olun (bolteşekkür edin, adlarından web sitenizde emeği geçenler olarak bahsedin).

Yazılımınızı salt İngilizce olarak hazırlamanızın size hiç bir faydası yoktur. En azından yerelleşebilecek (gettext kullanır) vaziyette hazırlayın ve çevrilmesi için gerekli temasları yapın. Gönül elbette hem İngilizce, hem de Türkçe hazırlamanızı arzu eder. Bu ülkede İngilizcebilmeyen binlerce bilgisayar kullanıcısı var.

Ben İngilizce Bilmiyorum, Yazılımımı da Salt Türkler Kullansın İstiyorumİngilizce bilmeme tarafına GNU-TR Türkçe Çeviri Grubu yardım edebilir. Yani sizin Türkçeyazılımınızı ve web sitenizi İngilizce’ye çevirecek gönüllüler çıkabilir. Temasa geçin.

Yazılımınızı salt Türklerin kullanmasına gelince.. Maalesef ülkemizde açık kaynak kodlu yazılımmantığı bir hayli yeni. Yazılımınıza yeterli bir kullanıcı kitlesi ve bunlardan çıkacak gönüllü grubu bulamayabilirsiniz. Başka, biraz da pragmatik bir problem de, marjinalize olmak. Çok kullanıcıya sahip yazılımlar yaygınlaşıyor, gönüllüler tarafından düzeltilip geliştiriliyor ve yeteri kadar yaygınlaşırsa dağıtımların içerisinde yer alıyor. Günün sonunda standart bu şekilde oluşuyor. Türkiye’deki kullanıcı kitlesi yeterli kadar büyük olmadığı için burada 100 kişi tarafından kullanılan bir yazılım, kendinden iki-üç yıl sonra başlayan bir enternasyonal efor tarafından zaman içerisinde geçilir ve o 100 kişilik kullanıcı kitlesini de kaybeder. En iyisi yazılımınızı çok dilli olabilecek şekilde hazırlamak.

İngilizcem Kullanıcılarla Yazışmak vb İçin Yeterli DeğilBu konuda rahat olun. İngilizce’yi iyi kullanmaya ülkece gereğinden fazla önem veriyoruz. Birşekilde meramınızı anlatabiliyorsanız, grameri falan önemsemeyin. Sonuçta kullanıcılar sizinleanlaşabilmek için uğraşacaklar. Siz değil. Çok bunalırsanız İngilizce bilen bir Türkkullanıcınızdan yardım istersiniz.

Yazılımınızı DuyurunBir web sitesi hazırladınız, bir posta listesi açtınız. Şimdi yazılımınızı duyurmalısınız. Eğerkonu ile ilgili bir newsgroup var ise oraya bir duyuru yapın. Freshmeat’e duyurun. LinuxKullanıcılar Derneği’nin web sitesine bir haber yollayın. Türk Linux Listesi’ne yazın. Eğer benzeryazılımlar için Google’da bir kategori var ise, o kategoriye DMOZ’dan ekleme yapın.

Eğer yazılımınız KDE veya GNOME kullanan bir grafik yazılımı ise, onlara duyurun. Yeteri kadaryaygınlaşırsa, KDE veya GNOME’un "desteklenen" yazılımlarından biri haline gelebilirsiniz.

Yazılımınız her derde deva bile olsa, kullanıcılar varlığını bilmez ise kullanamazlar.

Bunların Hepsini Yaptım ve Bir Şey OlmuyorBu işler zaman alır. Genelde bir yazılımın kullanıcı kitlesine yayılmaya başlaması neredeyse biryıl sürüyor. Yani siz yukarıdaki adımları yapıp duyurduktan bir yıl kadar sonra geniş kitletarafından "bu işi yapan bir yazılım vardı" diye bilinmeye başlar.

Yazılımınız yaklaşık 2-3 bin defa indirildikten sonra bir iki tane gönüllü yardımsever çıkar ve "şurasına şunu ekledim, kabul eder misiniz" diye sorar. Hemen gönüllülerin oluşup heykelinizin birmeydana dikilmesini beklemeyin. Siz bu güne kadar kullandığınız yazılımların kaçına gönüllü olarakbir katkıda bulundunuz?

Bir veya iki yıl kadar bir süre yazılımınızın bütün geliştirmesini yalnız başınıza sizyapacaksınız. Bu zaman zarfında yavaş yavaş bir iki kişi ortaya çıkar. Bunlar genelde projenizedestek olayım diye ortaya çıkmaz, hata bildirir. Siz bu hatayı çözersiniz. Daha sonra bir hata dahabildirir, çözümünü beraberinde yollar. Siz bunu eklersiniz. Yavaş yavaş aranızda bir ilişki oluşur.Bu ilişki zaman içerisinde "gel beraber geliştirelim"e gidebilir. Sabırlı olun.

Gönüllülerim OluştuTebrikler. Çok az sayıda projenin başarabildiği bir noktaya geldiniz. Bu noktada CVS kullanmak(aynı kaynak kodunu birden fazla kişinin yarı bağımsız değiştirebilmesi için), sürüm tarihleri belirlemek gibi yöntemleri kullanmaya başlayacaksınız. Birden fazla kişi ile çalışmak için bunlargerekli teknik yöntemler. Geri kalanı ise insan ilişkileri tarafı, ve çok önemli.

Karşınızdaki kişilerin GÖNÜLLÜ olduğunu unutmayın. İnsanlardan bir şey talep ederken hep nazikolun. Bir görev dağıtımı yaptığınız ve bu dağıtıma uyulmadığı zaman sinirlenmeyin. İnsanların yapmak istedikleri şeyleri yapmalarına izin verin. Bol miktarda teşekkür ve gönüllülerden bahsetmeksizi küçültmez, yüceltir. İnsanların size katkıda bulunmalarına karşılık verebileceğiniz tek şeykredi. Katkıda bulunanların isimlerinden bahsedin. README dosyanıza katkılarını listeleyin. Websitenize isimlerini koyun. Gönüllülerinizin yazılımınız konusunda sizin kadar becerikli olabilmelerini sağlamak için gereken bütün bilgiyi verin. Paylaşımcı olun. İlk başlarda gönüllülerle bir işi yapmak, kendi başınıza yapmaktan daha uzun sürer ve daha zordur. Fakat sabrederseniz, ileride kendi başınıza yapamayacağınız kadar çok şeyi yapma imkanını elde edersiniz.

Sıkıldığınız Zaman DevredinYazılımınız sizin bir ihtiyacınıza cevap vermek için hayata başlamış idi. Bir gün bu ihtiyacınızınüzerinde yeteri kadar uğraştığınızı düşünebilirsiniz. O ihtiyacınız kalmamış olabilir. Eğer yeterikadar paylaşımcı davranmış iseniz, gönüllüleriniz arasında yazılımı sizin kadar bilen, sizin güvendiğiniz birileri olacaktır. Kendisi ile temasa geçin ve yazılımınızın proje liderliğini devredin. İlginizi kaybettiğinizden dolayı ölmesine müsaade etmeyin. Bugüne kadarki çabalarınız,sizin bireysel emeğinizden doğan bir şeyin yaygınlaşması ve kendi başına bir hayat kazanmasınısağlamak için idi. Bu hayatın devam etmesini sağlayın. Bırakın, sizden daha iyi yapan birisiçıkarsa, o devam ettirsin.

Projenin Hayat Çizgisi:

Doğuş: İhtiyaç. İhtiyaca cevap verecek bir alternatifin olmamasıBaşlangıç: Kendi başınıza, ihtiyacınızı karşılayacak bir yazılım geliştirmek.Kamusal Ortama Geçiş Hazırlığı:Yazılımınızı temizlemek. Kaynak kodunuza açıklamalar koymak. Dizin yapınızı elden geçirmek. Bir lisans seçmek, yazılımınızı o lisansa uygun hale getirmek.Yazılımınızı başkaları tarafından, başka sistemlerde kolay derlenir, kurulur hale getirmek. autoconf, make gibi yazılımları bilmek. tar.gz halinde, kolay derlenir şekle sokmak. Paketlemek. Eğer uygun ise, çeşitli dağıtımların paket biçemi haline getirmek. (RPM, apt vb) Çok dil destekleyebilir hale gelmek. Gettext’i kullanmak.Kamusal Ortama Geçiş:Bir web sitesi edinmek. Yazılımınızı anlatan, kullanıcıya yönelik, bilgi veren bir web sitesi hazırlamak.Bir posta listesi açmak.Yazılımınızı ilgili bütün yerlere duyurmak.Kamusal Ortamda Büyümek:SabırKullanıcılara yardımcı olmakBol bol teşekkürGelen hata bildirimlerini ve değişiklik taleplerini dikkate almak.Kamusal Ortamda Kod Geliştirmek:Gönüllü kitlesi oluşturmak ve tutmak.Gönüllüleri yetiştirmek, yardımcı olmak.CVS kullanmak. Yetkilendirme, görev paylaşımı, test süreci, sürüm tarihleri vb gibi kavram veyöntemleri kullanır hale gelmek.Kamusal Ortama Devir: Zamanı geldiği zaman devretmesini bilmek.

 

Döküman Arama

Başlık :

Kapat