Di Belakang Layar: Cerita Pull Request ke Project Meta dan Vercel
Zakiego
@zakiego
Artikel ini sebelumnya telah dipublikasikan di Medium: Di Belakang Layar: Cerita Pull Request ke Project Meta dan Vercel.
Latar Belakang
Malam itu, ketika pull request pertama ke project milik Meta (dahulu Facebook) di-merge, senangnya bukan main.
Sebuah prestasi, bagi anak kemarin sore dalam dunia pengembangan perangkat lunak.
Layaknya anak kecil yang baru bisa berjalan, meski nanti ketika sudah dewasa, ia tak lagi merasakan bahagianya ketika pertama kali bisa melangkah.
2021
Jauh mundur ke belakang, setahun yang lalu. Ketika tweet @mathdroid, @BukanYahya, @tibudiyanto, @resir014, @pveyes, @sonnylazuardi, @agalliosamai, dan @zainfathoni berseliweran di timeline.
Para suhu developer Indonesia mempertontonkan bagaimana mereka bekerja sama di depan publik. Saya terkagum-kagum. Ingin rasanya bisa turut membantu, namun apa daya, saat itu yang saya bisa hanya HTML.
Setiap tweet yang mereply thread tersebut, saya baca dengan seksama. Meski tidak paham dengan apa yang mereka tulis.
Tidak lama berselang muncul project wargabantuwarga.com dan silacak. Masih lekat di ingatan, ketika project silacak berjalan, saya baru bisa menggunakan Tailwind CSS. Ada satu issue untuk membuat salah satu bagian dashboard, kemudian saya mencoba untuk membuatnya.
Ketika lebih setengah bagian kode sudah ditulis, saya urung membuat kontribusi. Tidak percaya diri dengan kode yang masih berantakan. Akhirnya kode tersebut dibiarkan begitu saja di lokal.
Sekian waktu berlalu, sudah beberapa project pribadi dikerjakan dengan seribuan lebih commit, tapi tak kunjung berani membuat pull request.
Langkah Kecil
Di atas kasur, sebelum tidur. Sedang gabut, membuka website lexical.dev, sebuah framework teks editor yang umurnya masih muda.
Saya merasa ganjil, saat menggunakan mode gelap, hover untuk tombol “Visit Button” malah menjadi hitam. (video)
Dari situ kemudian terpikir untuk membetulkannya. Ini hanya masalah css sederhana. Maksudnya, saya tidak perlu menulis kode dengan logika super canggih. Hanya dengan beberapa baris sederhana.
Akhirnya memberanikan diri.
Mengklik tombol fork, meng-clone dari project yang sudah di-fork. Membuat branch baru. Menulis dua baris kode css. Mem-push kode ke repository pribadi. Terakhir, menekan tombol pull request yang muncul di halaman repository-nya.
Wets. Ini tidak semulus yang dibaca. Saya berkali-kali mengecek apakah kode yang saya tulis benar. Entah mengapa denyut nadi berjalan lebih kencang daripada biasanya.
https://github.com/facebook/lexical/pull/2462#issue-1274990303
Voila. Pull request sudah dibuat (https://github.com/facebook/lexical/pull/2462). Saya sengaja menyertakan screen record, agar reviewer mudah mengerti permasalahan apa yang saya maksud.
https://github.com/facebook/lexical/pull/2462#issuecomment-1158837326
Ternyata project open-source di Facebook mengharuskan setiap yang ingin berkontribusi, untuk menandatangani sebuah perjanjian. Jangan takut. Ini hanya beberapa kali klik. Tak ubahnya seperti mengklik persetujuan syarat dan ketentuan saat membuat akun pada sebuah layanan (pernahkah ada yang membaca sampai habis? 😆).
https://github.com/facebook/lexical/pull/2462#pullrequestreview-1010455855
Tidak sampai 15 menit, reviewer ternyata sudah memberikan umpan balik. Hanya perlu menekan “commit suggestion” agar kode terubah sesuai saran dari reviewer.
Pull request disetujui.
Bot yang bertugas untuk mengecek apakah kontributor sudah menyetujui syarat dan ketentuan kontribusi pun sudah tersinkron.
Pull request di-merge!
Langkah Kedua
Ketika sudah pernah membuat pull request di project Meta, rasanya lebih mudah untuk membuat pull requestdi project lain. Maksudnya, dalam hal meyakinkan hati.
Hari-hari itu sedang rajin membuka repository Next.js karena mendekati rilis versi 12.2. Akhirnya saya membaca setiap commit yang dibuat, melihat apa saja yang diubah. Salah satu commit yang saya lihat adalah saat Lee Robinson (salah satu developer paling keren yang saya kagumi), membenahi typo, dari yang sebelumnya rewrites (dengan akhiran “s”), menjadi rewrite.
https://github.com/vercel/next.js/pull/38000
Namun saat membaca halaman Middleware Upgrade Guide, masih tertulis rewrites (dengan “s”).
Kembali, mencoba membenahi typo kecil ini.
https://github.com/vercel/next.js/pull/38016
Saya menyebutkan pull request yang dibuat oleh Lee sebelumnya, untuk menunjukkan bahwa perubahan yang saya buat mirip dengannya.
https://github.com/vercel/next.js/pull/38016#pullrequestreview-1019410068
Di project ini lebih simpel, tidak perlu ada persetujuan layaknya pada project Meta. Hanya perlu menunggu approve dari reviewer. Jika disetujui, maka akan di-merge ke branch utama.
Langkah Berikutnya
Lagi-lagi berawal dari Twitter, inilah salah satu alasan mengapa saya banyak mengikuti developer di Twitter. Pengembang utama dari SWC (sebuah compileryang digunakan Next.js) mengumumkan bahwa dia baru saja membuat project baru (lagi) bernama FnApi.
Ketika dilihat, website dokumentasinya kurang nyaman pada pengguna mobile. Website tersebut dibangun masih di atas Nextra versi 1.
Kebetulan sekali, saya sempat melihat author dari Nextra, mengetweet soal Nextra versi 2.
Berangkat dari situ, kemudian saya membuat pull request, dengan menjadikan project Cobe sebagai patokan.
Sebagai catatan, hingga saya menulis ini, Nextra versi 2 masih berstatus beta dan dokumentasi untuk mengupgrade ke versi 2 belum tersedia.
https://github.com/fnapi/docs/pull/9
Lebih satset-satset. Merge!
Buah Tangan
Sedikit buah tangan untuk developer pemula seperti saya untuk memulai berkontribusi:
- Kontribusi tidak harus dengan membuat kode yang rumit, bisa dimulai dari men-submit issue atau membenahi typo.
- Ikuti gaya penulisan commit dari setiap project. Untuk mengetahuinya, baca history commit di project tersebut.
- “Cari-cari kesalahan” di project yang baru rilis. Seperti framework Fresh dari Deno yang link footernya masih mengarah ke github yang lama (https://github.com/denoland/fresh/pull/296).
Penutup
Perlu waktu sangat lama hingga akhirnya berani untuk membuat pull request ke project open-source. Itu pun hanya kontribusi (sangat) kecil.
Tapi tak apa. Sebelum mencetak rekor dunia, Usain Bolt pun dulu perlu beberapa waktu setelah ia lahir, untuk sekadar bisa berdiri dan berjalan. Istilahnya, take your baby steps.
Ini tentang proses belajar, memahami bagaimana sistem bekerja, dan memberanikan diri.
Terima kasih untuk suhu developer Indonesia yang saya sebutkan di atas, karena telah meracuni saya untuk terjun ke dunia ini.
Terakhir, untuk yang pengembang perangkat lunak pemula seperti saya yang ingin belajar untuk membuat kontribusi, panduan kotribusi (https://github.com/kawalcovid19/wargabantuwarga.com/blob/main/CONTRIBUTING_ID.md) milik KawalCovid19 ini sangat saya sarankan untuk dibaca.
Terhubung
Ingin berdiskusi lebih lanjut tentang topik ini atau topik lainnya seputar teknologi? Kamu bisa menghubungi saya melalui @zakiego! 👋