Açık Kaynak Kavramı ve Açık Kaynağa Katkıda Bulunmaya Dair İlk Adımlar Header Image

Açık Kaynak Kavramı ve Açık Kaynağa Katkıda Bulunmaya Dair İlk Adımlar

Merhabalar, bir öğrenci ve mühendis adayı olarak açık kaynak yazılım ve katkı süreçlerine dair araştırmalarım ve edindiğim bilgiler ışığında Açık kaynak nedir?, Neden katkıda bulunmalıyız?, Gelişmemize katkısı nedir? sorularına bu yazıda değinmek istedim.

Yeni yeni adımlar attığım bu süreçte elbette hatalarım ve eksiklerim olabilir. Buradaki amacım, bilgi ve tecrübe sahibi kişilerden geri bildirim almak ve bu geri bildirimler doğrultusunda bakış açımı geliştirerek daha verimli bir öğrenme ve gelişim süreci geçirmek. Bu nedenle soru, öneri ve düşüncelerinizi benimle paylaşmaktan lütfen çekinmeyin.

Açık Kaynak Nedir?

Açık kaynak yazılım, kaynak kodu belirli bir lisans kapsamında herkes tarafından görüntülenebilen, incelenebilen, değiştirilebilen ve yeniden dağıtılabilen yazılımları ifade eder. Bu projeler genellikle GitHub, GitLab veya benzeri platformlar üzerinden geliştiricilerin katkılarına ve geri bildirimlerine açık şekilde yürütülür. Elbette kullanılan lisansa bağlı olarak projenin yönetim modeli ve katkı süreçleri farklılık gösterebilir.

Örneğin NVIDIA, Linux için geliştirdiği açık GPU çekirdek modüllerini, Microsoft ise birçok açık kaynak projesini GitHub üzerinden yayımlamakta ve topluluk katkılarını kabul etmektedir. Dilerseniz projelerde açılan issue‘ları ve ilgili tartışmaları herkesin erişimine açık olarak inceleyebilirsiniz.

Elinde Soru İşareti Tutan Bir Kadın Figürün Illustrasyon Çizimi

Peki, Açık Kaynağa Neden Katkıda Bulunmalıyım?

Kısa cevapla başlayalım: Çünkü bir geliştiricisiniz. Bilgi edinmek, kendinizi geliştirmek ve proje yönetimi konusunda deneyim kazanmak için farklı bilgi kaynaklarına ve insanlara ulaşabilmelisiniz. Açık kaynağa katkıda bulunmak ise hem bu becerileri geliştirmenize hem de toplulukların bir parçası olmanıza yardımcı olabilir. Bunun doğal bir sonucu olarak da profesyonel çevrenizi (network) genişletme fırsatı yakalarsınız.

Açık kaynağa katkıda bulunmanın faydaları yalnızca iş hayatıyla sınırlı değildir. Kişisel gelişiminiz ve sosyal ilişkileriniz için de önemli katkılar sağlayabilirsiniz. Açık kaynak; farklı ülkelerden insanlarla iletişim kurmayı, ortak bir amaç etrafında çalışmayı ve farklı bakış açıları kazanmayı da beraberinde getirir. Bu nedenle konuya yalnızca teknik açıdan yaklaşmamak gerekir.

Kod ve Proje Analizinde Yetkinlik

Açık kaynak olarak geliştirilen projelerde yer almak, farklı deneyim seviyelerine sahip geliştiricilerin bakış açısından proje analizinin nasıl yapıldığını ve kapsamın nasıl belirlendiğini görmenizi sağlar. Performans, güvenilirlik ve sürdürülebilirlik gibi konuların nasıl ele alındığını doğrudan inceleme fırsatı bulabilirsiniz. Bu süreçte, sizden daha deneyimli geliştiricilerin gönderilen kodları nasıl değerlendirdiğini, hangi tasarım kararlarını aldığını ve bu kararların arkasındaki gerekçeleri gözlemleyebilirsiniz.

Güvenilirlik ve Kullanılabilirlik

Yazılım geliştirirken çoğumuz farklı kütüphanelerden, araçlardan ve açık kaynak projelerden yararlanıyoruz. Kullandığınız bir projede hata tespit ettiğinizde bunu raporlayabilir, dilerseniz düzeltilmesine katkıda bulunabilirsiniz. Benzer şekilde ihtiyaç duyduğunuz yeni özellikleri önerebilir veya geliştirilmesine katkı sağlayabilirsiniz. Bu sayede yalnızca kullandığınız projelerin gelişimine katkıda bulunmakla kalmaz, kendi geliştirme ortamınızı da dolaylı olarak iyileştirmiş olursunuz.

Bunun yanında, günlük hayatta kullandığınız açık kaynak yazılımların nasıl geliştirildiğini, hangi teknolojileri kullandığını ve geliştirme sürecinin nasıl yürütüldüğünü inceleyebilirsiniz. Kaynak kodunun herkese açık olması, yazılımın güvenilirliğini değerlendirebilmenize ve isterseniz geliştirilmesine katkıda bulunmanıza da olanak tanır. Bunun en bilinen örneklerinden biri Linux çekirdeğidir.

Pratik Alışkanlığı

Bu duruma ilk araştırmalarımı yaparken gerçekten çok şaşırmıştım. Açık kaynak geliştiricileri, topluluk kültürünün de etkisiyle küçük katkılar olsa bile istikrarlı bir şekilde katkıda bulunmaya devam ediyor. Mülakatlara hazırlanırken HackerRank, CodeWars gibi platformlarda düzenli olarak algoritma soruları çözmeye benzetebilirsiniz.

Projeye gönderilen kodları sürekli olarak inceliyor, projeyi yönetiyor, dokümantasyon ve kullanım süreçleriyle ilgili kararlar alıyorlar. Bu düzenli pratik ise zamanla problem çözme becerilerini önemli ölçüde geliştiriyor.

Kültürel Öğrenim ve Topluluk İlişkisi

Yazılımlar günümüzde dünyanın dört bir yanında milyonlarca insan tarafından kullanılıyor. Bu kullanıcıların yanı sıra, dünyanın farklı bölgelerinde yaşayan geliştiriciler de ortak araçlara ve çözümlere ihtiyaç duyuyor. Bu durum size Çin’den Amerika’ya kadar birçok farklı kültürden insanla tanışma ve farklı kültürler hakkında bilgi edinme fırsatı sağlıyor. Bunun yanında, GitHub üzerinde hem yazılım geliştirme becerilerini hem de yabancı dilini bu süreç sayesinde geliştiren birçok geliştiriciyi görmek mümkün.

Sizden Tecrübeli Geliştiricilerle Vakit Geçirme ve Mentor Edinme Fırsatı

Açık kaynak projeleri kapsamlı ekipler veya topluluklar tarafından yönetilse de, projenin yönünü belirleyen, temel yapıları inşa eden ve gelişimini yönlendiren deneyimli geliştiriciler mutlaka olacaktır. Bu kişiler, farkında olmadan sizin için birer mentor görevi üstlenebilir. Onlardan aldığınız geri bildirimler sayesinde hem teknik bilginizi hem de bakış açınızı geliştirebilirsiniz.

Bu durum için kendimden örnek vermek istiyorum. İlk kez katkıda bulunmak istediğimde bir issue üzerinden güncelleme önermeyi düşünmüştüm. Bu süreçte açık kaynak alanındaki katkılarıyla tanınan Erhan Yakut bana izlemem gereken yaklaşımı gösterdi ve düzenleme biçimiyle ilgili yol gösterici geri bildirimlerde bulundu. Hatta daha sonra bu konu hakkında oldukça kapsamlı bir açıklama da paylaştı. O günden sonra daha önce önem vermediğim bu alana yönelerek daha fazla içerik okumaya ve araştırmaya başladım. Kaynakça bölümünde bu içeriklerin bir kısmını bulabilirsiniz. Kendisine buradan bir kez daha teşekkür ederim.

GitHub'da Yer Alan Comment İçeriklerinin Ekran Alıntısı

Profesyonel Çevre (Network)

Yazdığınız kodların kalitesi ve analiz yeteneğiniz geliştikçe farklı projelerde iz bırakmaya başlayabilirsiniz. Zamanla yaptığınız katkılar, özellikle iş değişikliği veya yeni fırsatlar değerlendirirken sizin için güçlü bir referans niteliği taşıyabilir. Elbette bunun uzun vadeli bir kazanım olduğunu unutmamak gerekir.

Örneğin Microsoft Docs kapsamında yer alan dokümanların Markdown dosyalarını GitHub üzerinden düzenleyebilir ve bir pull request gönderebilirsiniz. Katkınız kabul edildiğinde, içerik yayında kaldığı sürece katkı sağlayanlar arasında adınız da yer alacaktır.

Microsoft Dokümanlarına Katkı Sağlayanların Bulunduğu Listenin Ekran Alıntısı

Motivasyon ve İstek

Bir topluluğun parçası olmak, motivasyonunuzu korumanıza ve gelişiminizi sürdürebilmenize yardımcı olur. Farklı bakış açılarıyla karşılaşmak, deneyimlerinizi paylaşmak ve başkalarına yol gösterebilmek hem kişisel hem de teknik gelişiminizi destekler. Bunun doğal bir sonucu olarak çalışma motivasyonunuz ve üretkenliğiniz de zamanla artacaktır.

Yeni İnsanlarla Tanışmak

İlerleyen süreçte geliştirmek istediğiniz bir proje için farklı insanlardan fikir alabilir, birlikte çalışma fırsatı yakalayabilirsiniz. Yazılım, birçok farklı uzmanlık alanını bir araya getirir. Bu sayede farklı deneyimlere sahip kişiler, sizin gözden kaçırdığınız noktaları fark edebilir ve projenize değerli katkılar sunabilir.

Belki de tüm bunların yanında, birlikte keyifli vakit geçireceğiniz bir oyun ekibi bile kurabilirsiniz. 😅

Ekip Yönetimi, İletişim

Kapsamlı yazılım projelerini tek başına geliştirmek çoğu zaman zordur. Ayrıca her konuda aynı seviyede uzmanlaşmak da mümkün değildir. Bu nedenle yazılım geliştirme süreci (özellikle büyük projelerde) güçlü bir ekip çalışmasını ve etkili iletişimi gerektirir. Açık kaynak projeleri ise farklı geliştiricilerle birlikte çalışarak bu becerileri doğal bir şekilde geliştirmenize yardımcı olur.

  • Doğru soruları sormayı,
  • Açık ve saygılı bir iletişim kurmayı,
  • Katkı sunduğunuz projenin arkasında da bir insan olduğunu unutmamayı,
  • Sabırlı olmayı ve iletişimi sürdürebilmeyi

öğrenirsiniz.

GitHub'ın Resmi Açık Kaynak Rehberleri Sayfasının Ekran Alıntısı

Bu kısımda bahsetmiş olduğum bu maddeleri daha kapsamlı olarak buradaki doküman içerisinde bulabilirsiniz.

Katkı Sağlayabileceğiniz Bir Proje Bulmak

Açıkçası bu madde biraz kendinize zaman tanımanız gereken bir süreç. Kendi adıma henüz yeni başlamış olsam bile küçük kod değişiklikleri ve dokümantasyon için yardımcı olmaya çalışıyorum.

Belirtmek isterim ki yalnızca kod yazarak katkıda bulunmak zorunda değilsiniz. Dokümantasyon, test, hata raporlama, çeviri, tasarım ve topluluk yönetimi gibi birçok farklı katkı biçimi bulunduğunu unutmayın. Her katkı, projenin gelişimine değer katar.

Bu konuda Erhan Yakut ve Uğur Mumcuoğlu’nun hazırladığı “Açık Kaynak Projeleri Yönetmek ve Katkı Sağlamak” başlıklı videoyu izlemenizi tavsiye ederim. Videoda da bahsedilen “good first issue” etiketi, açık kaynağa yeni başlayan geliştiricilerin katkıda bulunabilmesi için uygun görülen görevleri işaretlemek amacıyla kullanılır. Projelerin issues bölümünde bu etikete sahip görevleri inceleyerek ilk katkınızı yapmaya başlayabilirsiniz.

Açık Kaynak Bir Projeye Katkıda Bulunmak

Yukarıda maddeler ışığında kendinize katkı sağlayabildiğiniz bir proje buldunuz. Şimdi bu katkıyı doğru bir biçimde sağlamak ve basit bir şekilde incelenmesi için proje sahibine Pull Request (PR) ile iletmeliyiz. Bu kısıma başlamadan önce burada bulunan Erhan Yakut’a ait içeriği okumanız büyük katkı sağlayacaktır.

Şimdi projemizi bulduk ve issue’lar içerisinde bize uygun bir problem olduğunu varsayalım veya kod içerisinde küçük bir hata gördük. İlk olarak yapmanız gereken var olan projenin bir kopyasını GitHub aracılığıyla kendi çalışmalarınız içerisine Fork oluşturarak kendi hesabınıza kopyalamanızdır.

Projenin sayfası içerisinde sağ üstte yer alan menü içerisinden “Fork” kısmına tıklıyoruz.

Github'da Yer Alan Bir Deponun Sağ Üst Barının Ekran Alıntısı - Fork Butonu Gösteriliyor

Çıkan kısımdan “Create Fork” butonuna tıklayarak devam ediyoruz.

Fork İşleminin İlk Ekranının Alıntısı

Bu aşamadan sonra incelemiş olduğunuz projenin bir kopyası sizin profiliniz altında yer alan “Repository” kısmına kopyalanır. Burada yapacak olduğunuz güncelleme ve değişiklikler sadece sizin çalışmanızı etkiler. Projeyi baz aldığınız “Repository”i etkilemez. Kendi kopyanız üzerinde istediğiniz değişiklikleri gerçekleştirerek, düzenlemeleri sağlayabilirsiniz. Fakat burada belirtmem gereken birkaç madde var.

  • Projenin tamamını etkileyen değişiklikler hoş karşılanmaz. Unutmayın karşınızdaki kişi de bir insan ve tüm projeyi baştan sona gözden geçirebilecek zamana sahip olmayabilir. Ayrıca bu topluluk içinde hoş karşılanmaz.
  • Olabildiğince küçük, basit ve anlaşılır güncellemeler gerçekleştirin.
  • Projeye dair bir katkı şablonu veya şartları varsa bunlara uyun. Örneğin Microsoft katkıda bulunma sırasında sizlerden “Katılımcı Lisans Sözleşmesi” adını verdiği lisansı kabul etmenizi bekler. Bu durum genellikle büyük çaplı ve tam açık olarak sunulmayan projelerde görülür.
  • Katkınızın tek bir amacı olmalı. Birden fazla konuda değişiklik yapmamalısınız. Örneğin “Readme dosyası içeriğinde bulunan hatalar giderildi.” gibi.
  • Sabırlı olun, aceleci davranmayın.
  • Yapıcı olun. Agresif ve yıkıcı bir tavır hem size hem karşınızdakilere zarar verecektir.

Bütün güncellemelerinizi gerçekleştirdikten sonra sizin profiliniz altında yer alan proje reponuzun içerisine giriniz. Ardından sağ üstte yer alan “Contribute” butonuna tıklayarak “Pull Request” isteği oluşturun.

GitHub'da Yer Alan Contribute Butonunun Ekran Alıntısı

Açılan pencere içerisinde “Pull Request” isteğinizi göndermeden önce uygun bir başlık belirleyin ve yapmış olduğunuz değişikliklere dair kısa, net bir açıklama ekleyin. Bu sayede karşınızdaki kişinin değerlendirmesini hızlandırmış ve kendi düşüncenizi hızlıca iletmiş olursunuz.

GitHub'da Kabul Edilmiş Bir PR İsteğinin Ekran Alıntısı

Yapmış olduğunuz isteğin kabul edilmeme ihtimali olduğunu lütfen unutmayın. Böyle bir durumda karşınızdaki kişiye uygun bir dille sebebini sorabilirsiniz. Bu sayede siz de bilgi edinebilir, kendinizi geliştirebilirsiniz.

Hepsi bir yana “Pull Request” isteğinize dönüş alamadınız. Kendi isteğinizi değerlendirin eğer bir problem olmadığını düşünüyorsanız sabırla bekleyin. Karşınızdaki kişi meşgul olabilir veya projeyi rafa kaldırmış olabilir. Üzülecek veya sinirlenebilecek bir durum yok. Daha birçok projeye katkı yapacaksınız.

Açık kaynak dünyasında hâlâ öğrenmeye devam eden biri olarak bu süreçte edindiğim bilgi ve deneyimleri paylaşmaya çalıştım. Umarım bu yazı, açık kaynağa ilk adımını atmak isteyen geliştiriciler için faydalı bir başlangıç olur.

Sağlıcakla kalın…

Kaynakça

Icon GIF

Would you like to meet? Let's talk!

You may have questions you are curious about or have questions in your mind. In these cases, do not hesitate to contact me you can reach.

Take care until we meet again.