DoubleString
Forum Kalfası
Nasıl Açık Kaynak Kod Yazılımcısı Olunur?
Bu yazının amacı çeşitli programlama tekniklerini anlatmak değil, genelde başlangıçta göz ardı edilip daha sonra hayal kırıklıklarına ve hatta projenin başarısızlığına yol açan çeşitli faktörleri sıralamaktır.
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 projeniz için Linux üzerinde bir banka sistemi yazmayı tercih etmek, %99 başarısızlıkla sonuçlanacak bir projeye başlamak demektir. Hem proje fazla büyük (bankacılık sistemleri milyonlarca satır kod iç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ık kullandığı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 Buldum
Tebrikler. Ş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. Veya doğ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, ama yapı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, fakat en 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ü kullanmaya başladıysanız, artık bunu bir proje haline getirmeyi düşünmeniz gerekebilir.
Proje Oluşturmak
Neden 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şine yarayabilir. 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ıza kullanışınızda bulmanız zor olan şeyleri bulmakta işinize yarayabilir. Daha önce faydalandığınız açık kaynak kodlu yazılımlara bir karşılık olarak bunu kullanıcılara sunmak isteyebilirsiniz. Belli bir 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 burada mevcut. 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 halinde koymanı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 GNU General 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; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 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.
Bu yazının amacı çeşitli programlama tekniklerini anlatmak değil, genelde başlangıçta göz ardı edilip daha sonra hayal kırıklıklarına ve hatta projenin başarısızlığına yol açan çeşitli faktörleri sıralamaktır.
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 projeniz için Linux üzerinde bir banka sistemi yazmayı tercih etmek, %99 başarısızlıkla sonuçlanacak bir projeye başlamak demektir. Hem proje fazla büyük (bankacılık sistemleri milyonlarca satır kod iç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ık kullandığı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 Buldum
Tebrikler. Ş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. Veya doğ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, ama yapı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, fakat en 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ü kullanmaya başladıysanız, artık bunu bir proje haline getirmeyi düşünmeniz gerekebilir.
Proje Oluşturmak
Neden 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şine yarayabilir. 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ıza kullanışınızda bulmanız zor olan şeyleri bulmakta işinize yarayabilir. Daha önce faydalandığınız açık kaynak kodlu yazılımlara bir karşılık olarak bunu kullanıcılara sunmak isteyebilirsiniz. Belli bir 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 burada mevcut. 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 halinde koymanı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 GNU General 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; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 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.