Kontribusi open source pertama saya adalah untuk perpustakaan yang sebelumnya saya gunakan (dan akan sangat menderita tanpa) pada proyek berbayar sebelumnya. Selama penggunaan awal saya, saya telah melihat bug dalam kode sehingga saya membuat tambalan, bergabung dengan proyek, dan mengirimkannya untuk ditinjau.
Sekitar 8 bulan kemudian ketika saya memiliki waktu luang, saya memutuskan untuk memberikan kembali (dan mengerjakan keterampilan pengembangan saya) dengan berkontribusi lebih banyak pada proyek. Jadi saya mengkloning repositori dan mulai terbiasa dengan basis kode. Setelah beberapa minggu mengirimkan perbaikan patch kecil ke basis kode dan memonitor permintaan fitur, saya mengambil permintaan fitur untuk menambahkan modul yang cukup besar ke proyek.
Karena menghasilkan banyak perbaikan tambalan individual cukup membosankan untuk setiap perkembangan signifikan, saya mengkloning repositori ke cabang pada hub git dan mulai membuang kode. Beberapa minggu dan beberapa ribu baris kode kemudian pemimpin proyek dan saya bekerja melalui mengintegrasikan dan menguji perbaikan saya ke perpustakaan dengan cara yang bekerja secara konsisten dengan basis kode lainnya.
Itu adalah proses yang sangat berharga yang saya pelajari banyak dari:
- Ketika saya mulai, saya tidak tahu bagaimana menggunakan Git, pada akhirnya saya dapat dengan mahir membuat cabang pelacakan jarak jauh dan menggabungkan atau rebase mereka ke cabang master tanpa berkeringat.
- Saya mulai di VS 2008 dan akhirnya bermigrasi ke Linux dan Monodevelop untuk bekerja pada penulisan kode (karena VS adalah unicode terbelakang dan ujung baris sangat merepotkan git). Ternyata tidak banyak yang tidak dapat Anda lakukan di * nix yang dapat Anda lakukan dalam * dows.
- Saya belum pernah benar-benar melakukan pengujian unit sebelumnya, Nunit adalah sepotong kue untuk digunakan dan menulis tes unit adalah hal yang cukup mendasar.
- Saya harus belajar menelan lidah dan mendengarkan serta melatih kesabaran. Tidak ada gunanya berdiri teguh pada posisi Anda pada proyek sumber terbuka karena semua orang yang terlibat berpengetahuan (mungkin lebih dari Anda) dan mampu menerima / menolak ide-ide Anda berdasarkan substansi bukan pengiriman. Ini sangat merendahkan hati dan bermanfaat sekaligus.
- Hanya memiliki satu mata pengembang yang terampil pada basis besar kode saya menunjukkan kelemahan dalam gaya saya yang belum pernah saya pertimbangkan sebelumnya (dan saya juga menunjukkan kelemahan dalam kode-nya). Bagi saya, saya belajar bahwa lebih mudah / lebih baik untuk mendefinisikan konstanta daripada menggunakan banyak angka ajaib dengan komentar terperinci.
Proyek khusus itu didasarkan pada pembuatan dan pendekodean paket jaringan pada semua tingkat protokol jaringan. Saya memiliki minat pribadi dalam jejaring tingkat rendah sehingga sangat menyenangkan untuk berdiskusi dengan pengembang lain dengan minat dan pengetahuan bersama dalam domain tersebut.
Jika Anda hanya ingin membuat kaki Anda basah: cari proyek yang sudah Anda gunakan; mengkloning repositori; dan mulai melihat apakah Anda dapat memperbaiki beberapa bug dan / atau menambahkan beberapa tes unit. Tampaknya mengintimidasi untuk melihat basis kode orang lain dengan mata segar tetapi itu adalah keterampilan yang sangat berharga untuk dipelajari. Kirim beberapa tambalan. Anda dapat mengharapkan kode Anda diawasi dengan ketat pada awalnya. Jangan khawatir tentang itu, itu adalah bagian normal dari proses untuk mendapatkan kepercayaan dari admin proyek.
Setelah menetapkan dasar prestasi dengan admin proyek mulai mencari lebih banyak tanggung jawab seperti, mengusulkan fitur baru, atau meminta ditugaskan untuk mengimplementasikan permintaan fitur.
Jika Anda tidak dapat menemukan proyek yang sudah ada di salah satu jaringan repositori sumber terbuka utama (github, sourceforge, kode google) pikirkan aplikasi yang benar-benar ingin Anda gunakan yang belum ada dan mulai sendiri.
Bersiaplah untuk direndahkan dan berharap pekerjaan ditolak demi revisi lebih lanjut. Mitos bahwa siapa pun dapat menambahkan kode ke proyek sumber terbuka sepenuhnya salah. Selalu ada penjaga gerbang antara Anda dan akses push. Semakin baik kode Anda, semakin sedikit akan diteliti dalam jangka panjang saat Anda mendapatkan kepercayaan dari admin proyek. Jika itu proyek Anda, Anda akan menjadi penjaga gerbang itu.
Memperbarui:
Saya hanya memikirkannya dan menyadari bahwa saya tidak repot-repot menyebutkan proyek mana yang banyak dijawab oleh referensi saya. Bagi yang ingin tahu, itu SharpPcap . Pengembang utama Chris Morgan sangat profesional dan tepat waktu. Dia melakukan banyak pekerjaan dalam mengelola proyek dan mengajari saya banyak hal tentang apa yang diperlukan untuk menghasilkan proyek OSS.
Karena kendala waktu pribadi saya belum dapat berkontribusi kode lebih dari setahun tetapi saya masih mencoba untuk memberikan kembali dengan mengintai di Stack Overflow dan menjawab pertanyaan tentang SharpPcap sesekali.