Açık Kaynak Kod

Açık Kaynak Kodlu Projelere Katkıda Bulunmak İçin 5 Sebep

Açık kaynak kodlu projelere katkıda bulunmak, birçok yazılımcının kariyerinin bir döneminde yapmak istediği, kimi zaman bunu başardığı kimi zaman da çeşitli sebeplerden dolayı vakit ayıramadığı ama hep arzuladığı bir uğraş. Bu yazıda açık kaynak kodlu projelere katkıda bulunmak isteyen her seviyeden yazılımcılara motivasyon sağlayabilecek 5 sebep ortaya koyacağım.

1- Kod Okuma ve Anlama Becerisini Geliştirmesi

Bizler yazılım geliştiriciler, genel kanının aksine kariyerlerimizi kod yazmaktan çok kod okuyarak geçiriyoruz. Çalıştığımız projelerde geliştirme yapmak için kimi zaman bizden önceki yazılımcıların yazdığı kodları okurken kimi zaman belki de kısa bir süre önce bizzat kendimizin yazdığı kodları okuyoruz. Geliştirme süreci, genellikle mevcut koda eklemeler yapmak veya içerisine mevcut diğer yapılar gibi ve onlarla uyumlu çalışacak yeni yapılar eklemek olarak gelişiyor. Her iki durumda da mevcut kodun nasıl çalıştığını anlamak ve yorumlamak kritik öneme sahip. 
 

Kod okumayı ve anlamayı, okuduğumuz kodu yazan geliştiricinin geliştirmeyi yaptığı andaki zihninde dolaşmak ve onun gibi düşünerek ne yapmaya çalıştığını anlamaya çalışmak olarak düşünebiliriz. Bunu yeterince iyi yapamadığımızda ise ya çalışan sistemleri yaptığımız geliştirmelerle bozuyoruz ya da onlarla uyumsuz çalışan yeni geliştirmeler yapmış oluyoruz.
 

Kod okuma ve anlama becerisinin gelişmesi ise mümkün olduğunca fazla kaynak kod okumak ve anlamaya çalışmaktan geçiyor. Özellikle de farklı farklı yazılımcılar tarafından yazılmış kaynak kodları okumak, değişik programlama teknikleri öğrenmek açısından önemli. Açık kaynak kodlu projelere katkıda bulunmak da tam bu aşamada devreye giriyor çünkü birçok yazılımcı tarafından geliştirilmiş projelere katkıda bulunabilmek için öncelikle mevcut kodu anlayabilmek ve yorumlayabilmek şart. Kodu anlamaya çalışırken mevcutta çalıştığımız şirketlerde olduğu gibi kodu bizden daha iyi bilen ve bize geliştirme yapacağımız kodun nasıl çalıştığını anlatacak birileri de yok. Bu kısım belki de katkıda bulunmanın en zorlayıcı kısımlarından biri olabilir ancak aynı zamanda kod okuma ve anlama becerimizin gelişmesini sağlayan da en kritik nokta. Ayrıca bu durum geliştirme yapacağımız kodun temiz kod (clean code) prensiplerine uygun yazılmış olmasının ve testinin olmasının kodu nasıl anlaşılabilir kıldığını ve işimizi kolaylaştırdığını kavramak için de önemli bir fırsat.

 

2- Yazılım Geliştirme Süreçlerinin Önemini Kavratması

Açık kaynak kodlu projeler doğası gereği birçok farklı yazılımcının katkısı ile geliştirilmekteler. Bu yazılımcıların birçoğu muhtemeldir ki farklı yazılım geliştirme kültürlerine sahipler. Ancak geliştirilen yazılımın sürdürülebilir olması ve projede belli bir kaliteyi devamlı olarak tutturabilmek de çok önemli. Bunu sağlayabilmenin yolu da zaman zaman önemsenmeyen bazı yazılım geliştirme süreçleri. Açık kaynak kodlu projelere katkıda bulunarak, bu süreçlerin kaliteli bir yazılım geliştirmek için ne kadar kritik olduğunun farkına varabiliriz.
 

  • Kod İnceleme (Code Review): Bir geliştirmeyi yapıp bitirdiğimizde kodumuz ana branch’e merge edilmeden önce diğer yazılımcılar tarafından çeşitli açılardan incelenmeli ve gerekli görüldüğünde yaptığımız geliştirmeler üzerinde değişiklik yapılması gerekmektedir. Açık kaynak kodlu projelerde bir pull request açıldığında projenin çekirdek ekibinden detaylı bir inceleme yapılır. Kodu inceleyen kişi kodu mantıksal olarak incelediği gibi önceden belirlenmiş standartların da sağlanıp sağlanmadığını kontrol eder. Açık kaynak kodlu projelerde geliştiricilerin yazacakları kodun formatından bir değişkene veya sınıfa vereceği isme ve hatta pull request açılırken yazılması gereken açıklamalara kadar uyulması gereken standartlar önceden belirlenmiştir. Bu standartlar bir kod inceleme esnasında gereksiz eforun önüne geçerek kod incelemenin kalitesini arttırır. Standartların önceden belli olduğu detaylı bir kod inceleme sonrası, farklı geliştiricilerin mümkün olduğunca belli bir standartta ve kalitede kod yazması sağlanmaktadır.
     
  • Dokümantasyon: Biz geliştiriciler genellikle dokümantasyon işlerinden çok hoşlanmayız ancak açık kaynak kod projelerde her yeni versiyonda nelerin değiştiği veya hangi yeni özelliklerin eklendiği gibi detaylı dokümantasyonlar, projeleri kullanan yazılımcılar için kritik öneme sahiptir. Bu projelere katkıda bulunduğumuzda sadece kodu yazmak yetmez, aynı zamanda geliştirmemizi doğru bir şekilde dokümante etmemiz de beklenir.
     
  • Otomasyon Testleri: Otomasyon testleri açık kaynak kodlu projelerin sürdürülebilir olmasında kritik öneme sahiptir. Otomasyon testleri ile yeni geliştirmeler esnasında mevcut kodun kırılmasının önüne geçilir ve geliştirmeler aksamadan yoluna devam eder. Burada unit test konusuna ayrıca parantez açmak gerekirse, unit test yazmak sadece kodumuzun gelecekte kırılmasını engellemez hem kod inceleme esnasında kodu inceleyen kişinin işini kolaylaştırır hem de bizden sonraki geliştiriciler için yazdığımız kodun dokümantasyonu görevini görür. Özellikle geliştiricilerin unit test yazmayı zaman zaman geliştirmenin bir parçası olduğu gerçeğini göz ardı ettikleri düşünürsek test yazımının önemini kavratması, bu projelere katkıda bulunmak için güzel bir sebeptir.
     
  • CI/CD: Açık kaynak kodlu projelerde özellikle CI sürecinde, açılan pull request’in başarılı bir şekilde build olup olmadığının tespiti, entegrasyon testlerinin başarılı bir şekilde koşup koşmadığı ve kodun ne kadarının test edildiğinin raporunun çıkartılması (code coverage) gibi adımların varlığı bu süreçlerin faydalarını görmemizi ve önemini kavramamızı sağlar.

 

3- Farklı Yazılım Kültürlerden İyi Yazılımcılarla Birlikte Çalışma Fırsatı

 Yazılım geliştirirken bir yazılımcıyı en çok geliştiren ve çoğu zaman en mutlu eden şeylerden bir tanesi de iyi yazılımcılarla birlikte çalışmak. Birlikte çalıştığımız yetenekli yazılımcıların yazdığı kodları okumak, onlarla tasarımı tartışmak ve onların tecrübelerinden faydalanmak bir yazılımcının kariyeri için çok kıymetli. Açık kaynak kodlu projelere katkıda bulunurken de farklı yazılım kültürlerinden hatta farklı ülkelerden yazılımcılarla birlikte kod yazma şansına sahibiz. Bu projelerin çekirdek ekiplerinin genellikle bilinen şirketlerdeki iyi yazılımcılardan oluştuğunu düşünürsek de onların yazmış olduğu kodu okumamız, bizim yazdığımız kodun onlar tarafından incelenmesi ve yorumlanması da bizim için önemli bir fırsat.

 

4- Teknik Gelişim Sağlaması

Yazılımcılar geliştirme yaparken kullandıkları framework, kütüphane ve teknolojilere katkıda bulunarak bu yazılımların iç yapısını öğrenip, çalışma mantığını daha iyi kavrayabilirler. Framework ve kütüphaneler geliştirilirken bazı yazılım geliştirme prensipleri diğer yazılımlarda olduğundan daha kritik bir öneme sahiptir, dolayısıyla en doğru şekilde uygulanmaları gerekmektedir. Bu prensiplerin uygulama pratiklerini görmek ve anlamak, bazen kafamızda canlanmayıp soyut kalan kavramların somut hale gelmesini sağlar. Kullandığımız programlama dilinin en yeni versiyonunu veya dilin kullanmadığımız bir özelliğini de açık kaynak kodlu projelerde nasıl kullanıldığını görüp deneyimleyebiliriz. Saydığım bu ve benzeri sebeplerden dolayı açık kaynak kodlu projelere katkıda bulunmak bir geliştiricinin teknik yönleri geliştirmesini sağlar.

 

5- Faydalı Olma Duygusu

Bir yazılım geliştiricinin açık kaynak kodlu projelere katkıda bulunması için gerekli motivasyonu sağlayacak en önemli sebep yazılım dünyasına katkıda bulunma ve faydalı olma duygusudur. Yazılım geliştiriciler olarak bizler mevcut işlerimizde birçok açık kaynaklı kodlu projeyi kullanıyor ve onlardan faydalanıyoruz. Ancak bu projeleri mevcut işlerimizde sadece kullanmak ve hiçbir katkıda bulunmamak, açık kaynak kodlu projelerin ruhuna oldukça aykırı bir durum. Bizler yazılım geliştiriciler olarak, kullandığımız bu projelere karşı borçlu olduğumuzu kabul edip borcumuzu bir şekilde ödememiz gerekiyor. Bu borcu ödememizin yolu da bu projelere katkıda bulunarak faydalı olmaktan geçiyor. 
 

Kullandığımız açık kaynak kodlu projenin bir noktasında bir problem yakalamış olabiliriz veya bir eksikliğini görmüş olabiliriz, bu noktada katkıda bulunmak için gerekli özveriyi gösterip ilgili projeye katkıda bulunmalıyız. Katkı sağladığımız projelerin diğer yazılımcılar tarafından geliştirilen birçok üründe kullanılıyor olması ve bu ürünleri kullanan milyonlarca insana yaptığımız katkılar aracılığıyla dokunacak olmamız fazlasıyla motive edici bir durum. Çoğu zaman böyle fırsatları kariyerlerimiz boyunca yakalamak pek mümkün değil ancak açık kaynak kod dünyası, bizler için bu tip fırsatlar ile dolu.
 

Bu yazımda, yazılım geliştiricileri açık kaynak kodlu projelere katkıda bulunmaya motive edecek 5 sebepten bahsettim. Kendime motivasyon sağlarken de kullandığım bu sebepler umarım daha fazla yazılımcının açık kaynak kodlu projelere katkıda bulunmasına öncülük eder.

Yorumlar

Sami Kıbrız
10.02.2021 - 09:26

Blog yazmak için ne yapmak gerekiyor herhangi bir şart var mı?

Enes ÖZTÜRK
11.02.2021 - 04:48

Gerçekten faydalı bir metindi. Elinize kolunuza sağlık Murat Bey.

Ömer Karagöz
03.08.2021 - 08:24

Güzel bir yazı olmuş , açık kaynaklı kodlamanın lisans problemini ortadan kaldırdığını sanıyordum ama şimdi sizin blogunuzdan anladığım kadarıyla kendimizi o mecralarda 3 kat daha hızlı geliştirir ve ortama ayak uydururuz #openCV #pyhton

Nur Sena Bozdağ
20.12.2022 - 11:45

Hiç bir zaman eskimeyecek bir konuyu çok güzel ele almışsınız. Teşekkür ederim yazı için ellerineze sağlık.