Tek Analogi #5 — Perangkat Lunak Kode Terbuka (Open Source)
“The power of open source is the power of the people. The people rule” — Philippe Kahn (Mathematician and Technology Innovator)
Halo pembaca 👋 Selamat datang di seri Teknologi Analogi jilid lima! Teknologi Analogi merupakan seri publikasi yang membahas teknologi dengan menggunakan analogi. Kamu bisa baca seri-seri sebelumnya di:
Salah satu faktor mengapa bidang teknologi berkembang dengan pesatnya adalah program kode terbuka (KT), atau istilah bahasa inggrisnya open-source software. Program KT adalah salah satu tipe program dimana kode sumbernya dibuka untuk umum. Artinya semua orang bisa mengaksesnya dan melihat kode sumbernya. Pada tulisan kali ini saya akan mencoba menjelaskan apa itu program KT dengan menggunakan analogi. Seperti biasa saya akan menggunakan analogi menurut pendapat dan perspektif saya sendiri. So without further ado, let’s get started!
1. Resep Umum
“Loh kenapa dibuka? Bukannya malah rugi? Nanti orang lain bisa tiru kode sumbernya dong?”. Jawaban untuk pertanyaan itu adalah memang kebanyakan program KT itu dibuat bukan untuk mencari keuntungan. Maksudnya gimana? Program KT saya analogikan seperti sebuah resep masakan.
Jika kita perhatikan, banyak sekali resep-resep masakan yang secara bebas dibagikan ke orang banyak bukan? Lihat saja ibu Sisca yang selalu senang membagikan resep masakannya.
Sama dengan resep yang senantiasa tidak apa-apa dibagikan, kode sumber suatu program KT pun juga demikian. Sang pembuat program juga tidak apa-apa bila kode sumbernya diketahui orang lain. Bahkan dia sengaja supaya orang lain bisa lihat (akan dijelaskan lebih lanjut di bawah).
Banyak sekali program KT yang bermula dari kesulitan si programmer itu sendiri. Sehingga memang tidak terlintas di benak para programmer ini untuk mendapatkan keuntungan darinya. Contohnya React, salah satu program KT yang cukup terkenal untuk pengembangan web bermula dari Facebook yang ingin meningkatkan kualitas situs web mereka.
Dengan membuka kode sumber mereka, para programmer ini seperti bilang: “Hey saya pernah merasakan kesulitan kamu loh! Saya ada nih resepnya. Mau dipakai boleh, mau dipakai juga tidak apa-apa.”
Programmer-programmer ini berharap dengan adanya program KT mereka, maka dapat membantu orang lain dengan permasalahan yang sama. Sehingga programmer lain tidak perlu membuat dari awal, tapi tinggal memakai rangkaian program yang sudah mereka buat sebelumnya.
Terdapat banyak sekali program KT yang beredar di internet saat ini. Salah satu platform yang menampung banyak program KT untuk Javascript yaitu npm, mencatat ada 1 juta program KT di tempat mereka per tahun 2019². Tinggal kita sendiri sebagai programmer yang memilih program KT mana yang menurut kita paling cocok dalam memenuhi segala kebutuhan kita.
2. Gotong-Royong
Program KT adalah salah satu program yang menjunjung tinggi semangat gotong-royong. Hah? Gimana gimana? Maksudnya adalah semua programmer dapat memberikan kontribusi dengan memperbaharui program KT tersebut.
Analoginya begini… bayangkan ada suatu resep suatu masakan. Sebut saja resep kopi dalgona yang lagi populer.
Kemudian si pembuat resep mem-posting atau “memajang” resepnya supaya semua orang bisa melihat. Ada yang puas dengan resep yang diberikan, namun ada juga beberapa yang merasa bahwa resep nya bisa lebih baik lagi. Seperti mengubah berapa liter air yang harus masuk, atau menambah bahan untuk menambah rasa. Kemudian orang-orang ini memberitahukan perubahan ini ke pembuat resep. Sang pembuat resep lalu akan menyaring yang mana yang menurut dia bisa membuat resepnya lebih baik, kemudian memperbaharui resepnya sesuai masukan dari orang-orang dan memajangnya kembali. Hal yang sama juga terjadi pada program KT.
Di dunia perangkat lunak open-source, kita mengenal ada istilah pull request (PR). Ini adalah cara dimana programmer bisa berkontribusi terhadap suatu program KT. PR adalah suatu cara dimana programmer bisa memberikan “masukan” berupa perubahan pada kode sumber, yang sekiranya bisa menaikan kualitas dari program tersebut. Sang “pembuat resep”, dalam hal ini adalah para programmer yang memelihara program KT tersebut — dapat melihat isi dari PR, kemudian menentukan apakah akan menerima atau menolak PR tersebut. Contoh daftar PR untuk salah satu program kerangka kerja terkenal yakni next.js yang ada di Github:
Jika kamu berpindah ke bagian Closed
, kamu bisa melihat daftar PR mana saja yang diterima dan ditolak oleh tim next.js.
“People power” — atau kekuatan orang-orang, adalah istilah yang sangat menggambarkan proses yang terjadi disini menurut saya. Dimana tidak hanya si pemilik program KT, namun juga semua orang bisa berkontribusi dalam meningkatkan kualitas sebuah perangkat lunak. Hal inilah yang membuat sistem perangkat lunak begitu cepatnya berkembang dari tahun ke tahun.
Faktanya, banyak dari perangkat lunak yang terkenal adalah sebuah program KT. Android, OS yang berjalan di lebih dari jutaan perangkat di dunia. React, Vue, Angular, adalah program KT yang menjalankan banyak sekali situs web terkemuka seperti Facebook, Google, dan 9gag. Linux OS, sebuah sistem operasi yang dipakai oleh banyak server yang berjalan di dunia. Yang sempat ramai dibicarakan, Bitcoin — juga merupakan program KT. Dan masih banyak lagi program-program lainnya yang tidak bisa saya sebutkan karena bakal pegel tangan saya 🙌
Tentu saja masih banyak aspek yang melekat pada program KT yang tidak bisa saya jelaskan lebih lanjut pada tulisan kali ini. Selain karena masih kurangnya wawasan saya 😅, tulisan ini ditujukan bagi orang awam dan berfokus pada definisi program KT itu sendiri. Kalau kalian penasaran, kalian bisa mencarinya sendiri 😁 Aspek-aspek lain pada program KT meliputi lisensi, program dukungan untuk para programmer yang membuat program KT, platform-platform tempat dimana kita bisa mencari program KT, dan masih banyak lainnya.
Itu saja dari saya, semoga tulisan kali ini bermanfaat. Saya berharap kamu mulai memiliki gambaran tentang apa itu yang disebut sebagai program open-source.
Terima kasih sudah membaca 😃
See you in a bit 01— Ferzos
P.S. Terima kasih kepada Victor dan Jundi yang sudah memberikan masukan untuk tulisan kali ini 🙇