İlk açık kaynak katkım, daha önce ücretli bir projede daha önce kullandığım (ve çok çekmeden yaşadığım) bir kütüphaneydi. İlk kullanımım sırasında kodda bir hata tespit ettim, böylece bir yama oluşturdum, projeye katıldım ve incelemeye gönderdim.
Yaklaşık 8 ay sonra biraz boş zamanım olduğu zaman, projeye daha fazla katkıda bulunarak geri vereceğim (ve geliştirme becerilerim üzerinde çalışacağım) konusunda karar verdim. Böylece depoyu klonladım ve kod tabanına aşina olmaya başladım. Birkaç temel düzeltme ekini kod tabanına gönderdikten ve özellik isteklerini takip ettikten sonra, projeye oldukça önemli bir modül eklemek için bir özellik isteği aldım.
Çok sayıda bireysel yama düzeltmesi oluşturmak, önemli bir gelişme için oldukça sıkıcı olduğundan, depoyu git hub'daki bir şubeye klonladım ve kodu atmaya başladım. Birkaç hafta ve birkaç bin kod satırından sonra proje lideri ve ben düzeltmelerimi kütüphanenin geri kalanıyla tutarlı şekilde çalışacak şekilde birleştirip test ederek çalıştık.
Bu çok şey öğrendim çok değerli bir süreçti:
- Başladığımda Git'i nasıl kullanacağımı bilmiyordum, sonunda uzaktan izleme dalları oluşturabiliyordum ve terletmeden onları ana dalda birleştiriyor ya da yeniden açıyordum.
- VS 2008'de başladım ve kod yazmak için Linux ve Monodevelop'a geçtim (çünkü VS unicode retarded ve satır sonları gitmekte çok acı verici). Anlaşılan o ki * nix'te yapamayacağınız pek çok şey yoktur * dows.
- Daha önce hiç bir birim test yapmamıştım, Nunit kullanması çok kolay ve birim testleri yazmak oldukça basit bir şey.
- Dilimi yutmayı ve dinlemeyi ve sabrımı pratik yapmayı öğrenmek zorunda kaldım. Açık kaynaklı bir projedeki pozisyonunuz üzerinde sağlam bir temel oluşturmanın anlamı yoktur, çünkü katılan herkes bilgilidir (muhtemelen kendinizden daha fazla) ve madde teslimine dayanmayan fikirlerinizi kabul etme / reddetme yeteneğine sahiptir. Aynı zamanda son derece alçakgönüllülük ve ödüllendirici.
- Sadece bir başka yetenekli geliştiricinin gözünün kodumun büyük bir temeline sahip olması tarzımda daha önce hiç düşünmediğim kusurları işaret etti (aynı zamanda kodundaki kusurları da işaret ettim). Benim için, sabitleri tanımlamanın, ayrıntılı yorumlarla bir sürü sihirli sayı kullanmaktan daha kolay / daha iyi olduğunu öğrendim.
Bu özel proje, tüm ağ protokolleri seviyelerinde ağ paketlerinin oluşturulması ve kodlarının çözülmesine dayanıyordu. Daha düşük seviyeli ağlara kişisel ilgi duyuyorum, bu nedenle etki alanında paylaşılan ilgi ve bilgi ile başka bir geliştirici ile görüşmeler yapmak harikaydı.
Sadece ayaklarınızı ıslatmak istiyorsanız: zaten kullandığınız bir projeyi bulun; depoyu klonlamak; ve bazı hataları düzeltip düzeltemeyeceğinizi ve / veya bazı birim testleri ekleyebildiğinizi görmeye başlayın. Bir başkasının kod tabanına taze gözlerle bakmak korkutucu görünüyor, ancak öğrenmek için son derece değerli bir beceri. Bazı yamalar gönderin. İlk önce kodunuzun yakından incelenmesini bekleyebilirsiniz. Endişelenmeyin, proje yöneticilerinin güvenini kazanmak sürecin normal bir parçası.
Proje yöneticisi ile bir liyakat temeli oluşturduktan sonra, yeni özellikler önermek veya özellik isteklerini yerine getirmek için görevlendirilmek istemek gibi daha fazla sorumluluk aramaya başlayın.
Halihazırda var olan bir projeyi ana açık kaynak havuz ağlarından birinde (github, sourceforge, google code) bulamazsanız, kullanmak istemediğiniz bir uygulamayı düşünün ve henüz kullanmayacağınızı düşünün.
Geveze olmaya ve daha fazla revizyon lehine çalışmanın reddedilmesini beklemeye hazır olun. Açık kaynaklı bir projeye herkesin kod ekleyebilmesi efsanesi tamamen yanlıştır. İlerle erişim arasında daima bir bekçi var. Kodunuz ne kadar iyiyse, proje yöneticilerine güvendiğiniz sürece uzun vadede o kadar az incelenir. Bu senin projense, o kapı bekçisi olacaksın.
Güncelleme:
Sadece düşündüm ve cevabımın çoğunun referans aldığı hangi projeden bahsetmekle uğraşmadığımı fark ettim. Bilmek isteyenler için, SharpPcap . Lider geliştirici Chris Morgan çok profesyonel ve hazır. Projeyi idare etmek için çok iyi bir iş çıkarıyor ve bana bir OSS projesinin olgunlaştırılması için gerekenler hakkında çok şey öğretti.
Kişisel zaman kısıtlamaları nedeniyle bir yıldan fazla bir süredir koduma katkıda bulunamadım ancak yine de Stack Overflow'a göz atarak ve zaman zaman SharpPcap hakkındaki soruları yanıtlayarak geri vermeye çalışıyorum.