Sebelum berbicara ke hal teknis, mari kita bicarakan seputar filosofis.

Kenapa memangnya berkontribusi ke Open Source?

Mungkin dari kamu ada yang memiliki pertanyaan tersebut, saya akan bantu untuk menjawabnya menurut kapasitas saya.

Begini,

Program-program, library-library yang kamu gunakan sekarang mungkin ada yang menggunakan lisensi open source. Entah itu OS, database, text editor, apapun. Kamu mendapatkan dan menggunakan program tersebut secara gratis, mendapatkan kebebasan, dan pastinya: Membantu hidup & karirmu.

Misal, kamu menggunakan Vim sebagai teks editor. Vim dibuat oleh Bram Moolenaar dkk dan distribusikan sebagai proyek open source, kamu menggunakan Vim setiap hari baik untuk keperluan pribadi ataupun profesional.

Kamu mendapatkan 16jt/bulan dari gaji, yang mana teks editor vim tersebut ikut andil dalam pekerjaan kamu. Tapi, apa yang Bram Moolenaar dapatkan? Apa yang teman-teman lain–yang ikut memelihara sumber kode vim juga–dapatkan?

Setidaknya, yang didapatkan dari kamu karena kamu telah menggunakan program tersebut.

Gambaran sederhananya, saya beri kamu buku secara gratis tentang self improvement. Lalu dari buku tersebut banyak perubahan yang terjadi dalam hidupmu baik di mental, asmara, karir, dsb.

Pasti kamu merasa "ada sesuatu" yang harus kamu lakukan ke saya, meskipun saya mungkin tidak mengharapkan apa-apa. Entah "sesuatu" itu ucapan terima kasih, atau mentraktir saya makan/ngopi, atau bahkan memberikan buku itu ke orang lain lagi agar mendapatkan dampak yang sama juga.

Intinya, sesuatu tersebut adalah "giving back". Apa yang telah kamu dapatkan, kamu coba berikan kembali ke orang lain agar orang lain tersebut mendapatkan dampaknya juga.

Giving back di Open Source banyak macamnya, dan inilah mengapa tulisan ini diterbitkan.

Jenis-jenis "giving back" di Open Source

Giving back pada dasarnya adalah "berkontribusi", jadi mari kita gunakan kata berkontribusi saja. Banyak jenis kontribusi yang dilakukan di komunitas open source, entah itu membantu fix typo yang mengganggu; Membantu melakukan proses lokalisasi terhadap proyek, menyempurnakan dokumentasi, atau bahkan membantu orang lain agar menggunakan proyek tersebut.

Silahkan pilih yang sesuai dengan kapasitas dan pengalaman kamu.

Entah kamu memberikan kontribusi kecil ataupun besar, kontribusi tetaplah kontribusi. Dan komunitas didalamnya akan berterima kasih kepadamu karena kamu telah membantu.

Jangan anggap berkontribusi sebagai "hutang" kamu ke open source, melainkan sebagai bentuk terima kasih saja. Ini tentang moral kita sebagai manusia, jika kamu memang hanya tertarik sebatas di menggunakan dan tidak ingin berkontribusi, its okay.

Contoh kontribusi

Kita mulai dari "membantu orang lain dalam menggunakan". Ini contoh yang ada di proyek create-react-app.

Mungkin hal tersebut sepele untuk kita, tapi setiap orang memiliki kapabilitas dan pengalaman yang berbeda-beda, bukan?

Lalu, kita lanjut ke fix typo.

Meskipun hanya typo kecil, kesalahan tetaplah kesalahan. Dan itu menganggu. Contoh diatas adalah dari komunitas Vue.

Dan seperti biasa, komunitas akan berterima kasih terhadap kontribusimu. Karena kamu bisa "melihat" apa yang mereka "tidak lihat".

Sekarang, kita lanjut ke lokalisasi.

Contoh diatas adalah proyek lokalisasi untuk website React (React again, riz?). Lihat, ada 76 partisipan yang antusias dengan proyek tersebut. Ada ~76 orang Indonesia yang antusias untuk berkontribusi ke React (secara keseluruhan) agar orang lain bisa lebih mudah dalam mempelajari & menggunakan React.

Sekarang, kita ke hal teknis.

Gambar diatas adalah untuk proyek Ember.js. Meskipun Pull Request tersebut "hanya" bumping version untuk dependensi ember-cli-browserstack dari versi 0.0.7 ke 1.0.1, tapi tetap, itu bisa mempengaruhi stabilitas proyek sejak proyek tersebut bergantung dengan ember-cli-browserstack jika di proyek tersebut menggunakan library itu.

Bantu aku memulai!

Oke, terima kasih bila kamu memang antusias untuk berkontribusi. Kamu bisa memulainya dari proyek yang kamu tertariki (is that a proper Bahasa word?) ataupun proyek yang kamu gunakan.

Jika ingin berkontribusi secara "langsung", kamu bisa melihat-lihat ke bagian Issues. Cari judul & label yang sekiranya kamu tertarik dengan itu. Dan jangan lupa untuk mengabari bahwa kamu tertarik dengan isu tersebut dan akan mengerjakannya.

Misalnya, seperti ini.

Jadi, agar menghindari "konflik" terhadap isu yang sedang dikerjakan. Misal, bagaimana bila seseorang sedang mengerjakan isu tersebut, dan ada orang lain yang ternyata sudah mengerjakannya dan membuat PR?

Jika sudah mendapatkan isu yang tepat, buat fork dari repository tersebut. Karena kamu tidak memiliki push access langsung terhadap repository tersebut.

Setelah itu, commit perubahan yang kamu miliki ke fork kamu, dan buat pull request ketika sudah siap.

Dan kamu akan mendapatkan feedback dari reviewer entah itu feedback "Approved" ataupun "Request for change" bila memang ada yang harus diubah terlebih dahulu.

Dan selamat, kamu sudah berkontribusi!

Is this a free labor?

Jika kamu tertarik membahas seputar ekonomi di Open Source, mungkin akan kita bahas nanti jika sempat. Intinya, tidak ada paksaan kepada kamu untuk melakukan sesuatu.

Bener, ga?

Dari issue diatas yang "New Logo", jika kamu tidak tertarik, yaa sesederhana dengan mengabaikannya.

Kamu tau apa yang kamu lakukan tersebut adalah murni "berkontribusi" yang maksudnya tidak mengharapkan timbal balik yang pastinya berbentuk materi. Lalu, untuk apa melakukannya, bukan?

Begini, tidak semua orang "gila" dengan materi. Ada yang melakukan sesuatu karena passion, ada yang karena hobi, ada yang karena membantu, dan ada yang untuk mencari/menambah pengalaman.

Komunitas Open Source menjadi tempat bermain yang pas untuk orang-orang yang senang dengan mempelajari sesuatu–sesuai dengan salah satu nilai open source yakni "freedom" to learn–yang maksudnya seperti "hey guys, just learning building Web-based CRM with ReasonML. Please take a look to the app & source code, feedback are welcome!"

Jika tujuan kamu murni untuk membuat aplikasi komersial, tentu kamu "sepertinya" menghindari untuk menyebarkan sumber kodemu demi menghindari persaingan. Beda bila kamu untuk belajar juga, kamu mungkin kurang peduli dengan nilai bisnisnya, yang kamu pedulikan adalah nilai teknisnya. Belajarnya. Like, am I doing it right?

Banyak hal-hal filosofis yang ingin dibagikan disini seputar Open Source, namun kurang sesuai dengan judul tulisan ini, so lets skip it.

Bantu aku (beneran) mulai!

Oke, thanks. Jadi ceritanya kita sudah menyiapkan repository khusus untuk tulisan ini, namanya Sotory. Sebuah library untuk membuat "Story" seperti Instagram.

Kamu bisa melihat sumber kode tersebut disini.

Ada 1 isu yang sekiranya tidak terlalu memiliki banyak effort, yakni tentang menambahkan instruksi penggunaan di Readme. Detailnya bisa di cek disini.

Caranya, fork repo. Clone repo tersebut di mesin kamu. Buat branch baru yang menjelaskan seputar perubahan kamu. Commit. Push ke fork. Buat Pull Request, done! Selengkapnya seputar workflow ini bisa dilihat disini.

Ada lagi 1 isu yang effortnya sangat kecil, menghapus identifier di object config di directory demo. Go create issue/PR if you got it!

Masalah kebanyakan dari kita adalah bingung ingin mulai dari mana. Dan kami ingin mencoba membantu kamu untuk menyelesaikan masalah tersebut, dari yang paling kecil & sederhana.

Semoga membantu, harapannya adalah untuk membangun rasa "giving back" kamu terhadap apa yang telah komunitas open source berikan kepadamu. Mungkin proyek contoh diatas (Sotory) tidak kamu gunakan di proyek kamu, tapi semoga kamu tertarik dengan isu yang terdapat di proyek tersebut.

Dan berani memulai untuk berkontribusi ke proyek yang lebih besar.

Terima kasih telah membaca, enjoy your Thursday everybody!