Cuma, Ocak 11, 2013

Yeni başlayanlar için Açık Kaynak projelere katkıda bulunmanın yolları

SambaPOS projesini geliştirmeye başladığımdan beri bana en çok sorulan soru "Nasıl para kazanıyorsunuz?" olmuştur. Bu soru hiç bitmeyecek zannediyordum. Artık ne kadar çok anlattıysam giderek daha çok kişi açık kaynak projelerde yer almak istediğini söylüyor. Gerçekten de bu projeleri ilgiyle takip ediyor ve bir şekilde içlerinde yer almak istiyoruz ama malesef yine çok fazla sayıda kişi bu tür projeler içinde yer alamayacağını da söylüyor. Genelde sebepler şunlar.
  • Programlama bilgim yeterli olur mu bilmiyorum.
  • Hiç vaktim yok.
  • İyi bir proje bulamıyorum. 
Öncelikle Programlama bilgisinin yeterli olmaması konusundaki düşüncelerin açık kaynak projelerin katılımcı bulmaktaki en büyük problemi olduğunu söylemeliyim. Genellikle açık kaynak projeler yürüten kişilerin deha programcılar olduğu gibi bir izlenim var. Bu kimi projeler için çok doğru ancak hemen her projede yapılması gereken işlerin büyük çoğunluğu herkesin yapabileceği türde işlerdir. Evet ilk başta yaptığınız işler dünyayı yerinden oynatacak işler olmayacaktır ama topluluğun arasına karışmak bu yolda atılması gereken ilk adımdır.

Belli bir teknolojiyi ya da herhangi bir işin nasıl yapıldığını öğrenmek için bir açık kaynak projeye katılmak müthiş güzel bir fikir. Ancak çoğunlukla açık kaynak projelerde kodun kendisi dışında pek fazla öğretici dökümantasyon bulunmaz. Yani okuyarak öğrenmek değil yaparak (bozarak) öğrenmek isteyenler için güzel ortamlardır. Örneğin WPF öğrenmek istiyorsanız hiç kimse oturup size WPF anlatmaz ama bir iş parçasını üstlenip takıldığınız noktaları danışırsanız birsürü şey öğrenirsiniz.

Bu nedenle bir şekilde bu projelerin içine sızmak gerek. Bunun için neler yapılabilir.

Öncelikle projeyi takibe almak gerek. Her projenin muhakkak bir blogu, bir forumu, bir mail grubu ya da topluluğun temek olarak iletişim kurduğu bir yeri vardır. Buraları bir süre takibe alın. Öncelikle neler olup bittiğini bir anlamak lazım.

Her projede kullanıcı kesim programcı kesime yaşadıkları hataları ya da istedikleri özellikleri iletirler. Projenin bu işler için nasıl bir yöntem kullandığını anladıktan sonra bir süre için ilginizi çeken istekleri ya da hataları takibe alın.

Bu noktada şunu belirtmem gerek. Her projenin en önemli altyapısı kullanılan versiyon kontrol sistemidir. İdeal bir projede gönderilen her bir kod parçası bir işle ilişkilendirilirler. Yani x işinin yapılması konusundaki bir "issue" o işi yapan kod parçası ile "commit" ilişkilidir. Eğer ilgilendiğiniz işle ilgili Commit'i incelerseniz satır satır o işi yapmak için ne kodlar yazılmış olduğunu görebilirsiniz.

Bu konularla ilgili projenin nasıl yürüdüğünü anlamadığınız noktalarda gönül rahatlığı ile topluluk ile iletişim kurabilirsiniz. DVCS nedir? diye sorarsanız muhtemelen bir vikipedia linki dışında bir cevap gelmez ama spesifik konularla ilgili güzel cevaplar muhakkak gelir.

Projeye girişin en güzel yollarından birisi gelen hataların nedeninin tespit edilmesine yardımcı olmaktır. Kullanıcılar genellikle yaşadıkları hataları düzgün ifade edemezler. Kullanıcı ile iletişim kurarak ve kaynak kodlardan neyin yanlış olabileceğini takip etmek ve problemin nedenini ortaya çıkarmak en saygın işlerden biridir.

Eğer hatayı düzeltebiliyorsanız düzeltin. Her projede programlamaya dün başlamış kişilerin bile düzeltebileceği tarzda problemler vardır. Bunu yapmak için projenin mimarisinin ne olduğunu bilmek gerekmez. Ancak bu noktada mesela yaptığınız değişikliği nasıl gönderebileceğinizi bilmiyorsanız yine gönül rahatlığı ile topluluk ile iletişimde bulunabilirsiniz. Normal şartlarda kimse size nasıl commit yapılacağını öğretmez ama böyle bir durumda otomatikman işin nasıl yapıldığını öğrenirsiniz.

Yani genel anlamda topluluktan birşeyler öğrenmek için değil de başladığınız bir işi tamamlamak için yardım isterseniz beklediğinizden çok daha fazlasınız alırsınız. Neyin nasıl yapılacağını öğrenmenin en güzel yolu bu.

Projenin beta testleri üzerinde kullanım testleri yapmak ve programcı gözüyle karşılaştığınız problemleri bildirmek yine iyi başlangıç işlerinden biridir.

Proje üzerinde performans testleri ya da memory leak testleri yapabilir ve karşılaştığınız problemleri bildirebilirsiniz. Bunlar da neyin ne iş yaptığına dair güzel fikirler verirler.

Birim testleri projelerin hatalarını gidermek için kullanılan güzel araçlardan biridir. Çoğu açık kaynak projenin kaynak sıkıntıları nedeniyle Pure TDD yapmak gibi bir şansı yok ama kritik noktaları kontrol altına almak için çeşitli testler yazarak projeye katkıda bulunabilirsiniz.

Kod yazmak dışında da kullanıcıların sorularına cevap vermek, küçük dökümanlar yazmak, websitesinin geliştirilmesine katkıda bulunmak ya da sadece proje ile ilgili düşüncelerinizi paylaşmak bile yine güzel katkılar olabilir. Ancak düşünce paylaşmadan önce en azından konuyla ilgili yeterli fikriniz olduğundan emin olun.

Her açık kaynak projenin temel öğesi proje etrafında gelişen insan topluluğudur. Genel anlamda bu topluluğun büyümesine ve gelişmesine faydası olabilecek her tür katkı sizi topluluğun vazgeçilmez bir parçası yapacaktır. Hiç bir açık kaynak proje ağır sorumluluklar almayı ya da günler harcamayı gerektirmez. 10dk. bile ayırabilecek olsanız muhakkak çorbaya ekebileceğiniz bir tuz taneniz vardır.

Tabii bunları genel anlamda yazıyorum. Söylediklerimin birçoğu SambaPOS projesi için de geçerli ancak bizim bir taraftan da Türkiye'de açık kaynağı tanıtmak ve sevdirmek gibi bir amacımız da olduğu için bize her konuda ulaşabilirsiniz.

2 yorum:

auoder dedi ki...
Bu yorum yazar tarafından silindi.
adıyaman dedi ki...

mrb emre bey ben asp.net ci olarak c# bilgisi olan bir yazılımcı olarak sambapos a nasıl bir katkıda bulunabilirim...

abuzery@msn.com