Dapat Direproduksi

Bagaimana membangun kepercayaan & pembuktian kebenaran tercapai, bila tidak bisa direka ulang?

Dapat Direproduksi

Gue orang yang lumayan skeptis terhadap apapun, gue enggak bisa menerima begitu saja apa yang gue dapat. Ketika melakukan Video Call di Telegram, hal pertama yang dilakukan adalah memastikan emoji yang tampil dilayar gue sama dengan apa yang ada dilayar lawan bicara.

Ketika menulis pesan commit, gue selalu sign dengan public key gue untuk memastikan bahwa commit yang ada memang benar dilakukan oleh gue dan tanpa ada perubahan oleh pihak lain.

Dan ketika mengunduh sesuatu, gue mengkroscek checksum akan hasil unduhan gue bilang memang sumber yang ada menyediakan checksum asli nya, selain untuk memastikan bahwa hasil unduhan gue tidak corrupt juga agar memastikan bahwa proses pengunduhan gue tidak ada yang intercept.

Semua gue lakukan demi kenyamanan bersama, khususnya demi kenyamanan gue. Dan gue sangat senang (dan mengutamakan) transparansi, karena terbuka itu baik, bukan?

Reproducible Build

Dalam software engineering, ada sebuah praktik yang bernama reproducible build, yang sederhananya untuk membuktikan bahwa sumber kode yang ada di tempat (repositori) terbuka sama dengan hasil yang digunakan.

Misal, Telegram. Sumber kode Telegram terbuka, dan untuk membuktikan apakah aplikasi yang digunakan berasal dari sumber kode yang sama (yang terbuka tersebut), Telegram menyediakan cara untuk melakukan "pembuktian" yakni dengan Reproducible Build.

Disitu dijelaskan bagaimana cara melakukan build telegram dari sumber kode nya, lalu melakukan pembuktian apakah aplikasi hasil build tersebut sama dengan yang kita unduh di playstore.

Dampak nya, ini dapat membangun kepercayaan yang erat antara pengembang Telegram & pengguna. Selain karena sumber kode nya terbuka (jadi setiap orang bisa melihat, mempelajari, dsb) akan apa yang dilakukan oleh program/aplikasi tersebut, juga program/aplikasi yang digunakan dapat dipercaya bahwasannya berasal dari sumber kode yang terbuka tersebut (dan bisa dibuktikan kebenarannya).

Contoh lain yang bertentangan adalah Visual Studio Code, penyunting kode dari Microsoft yang dibuat diatas sumber kode terbuka. Sumber kode VSCode pada dasarnya terbuka, namun program VSCode yang kita kamu gunakan tidak sama dengan apa yang ada di sumber kode, karena sudah jelas, Microsoft sendiripun menulis di bagian Unduh nya bahwa VSCode dibuat diatas sumber kode terbuka.

Jadi, sederhananya, sekalipun ada cara untuk melakukan "reproducible build", akan menjadi sia-sia, karena hasil nya (VSCode.app dari release) tidak akan sama dengan VSCode.app hasil build kita sendiri.

Dampaknya, kita tidak benar-benar tau apa yang berbeda (dan yang dilakukan) sepenuhnya, selain percaya penuh kepada si pengembang, termasuk bila dijelaskan bahwa perbedaan tersebut hanyalah diseputar assets.

Alias, tidak bisa (sepenuhnya) dipercaya bahwa tidak ada 'sesuatu' yang entah merugikan ataupun yang hanya menguntungkan satu pihak.

Mencari Kebenaran

Misal ada 2 orang yang saling 'mengaku' bahwa karya yang asli adalah buatan salah satu dari mereka. Bagaimana caranya mencari 'kebenaran' dari permasalahan tersebut?

Singkatnya, coba perintahkan kedua orang tersebut untuk membuat gambar serupa. Dari situ bisa diambil kesimpulan sementara, siapa yang sekiranya pembuat asli akan karya tersebut.

Dan bukankah 'kebenaran' adalah sebuah kondisi dimana banyak pihak saling setuju untuk menyatakan bahwa itu benar berdasarkan parameter yang ada?

...juga dilakukan secara terbuka?

Sekarang begini, kamu demam. Bagaimana kamu tau (dengan benar) bahwa kamu demam? Sederhananya, dengan mengukur suhu tubuh menggunakan termometer.

Itu salah satu contoh reproducible, bisa direproduksi sendiri.

Secara terbuka.

Transparan.

Melalui alat yang sudah menjadi standar.

Tidak sulit untuk membuktikan suatu kebenaran bila sesuatu tersebut dilakukan secara terbuka & disetujui oleh banyak pihak, secara terbuka.

Seperti beberapa orang saksi yang melihat kalau si X adalah seseorang yang mencuri manggadb nya pak RT, dan mereka memiliki keterangan yang sama.

Sederhana, bukan?

Bagaimana bila ternyata mereka berbohong?

Pertanyaan yang cocok adalah bagaimana bisa tau bahwa mereka ternyata berbohong? Sederhananya, dengan melakukan reka ulang.

Ya, reka ulang.

Reproducible.

Dapat direka ulang.

Dan reka ulang sulit (atah bahkan mustahil?) dilakukan, bila data/informasi yang ada tidak transparan.

Konteks

Ini adalah tentang membangun kepercayaan, mencari kebenaran, dan transpransi.

Bukan sekadar tentang konsensus, apalagi dipaksa untuk percaya.

Setiap orang pasti memiliki celah akan kesalahan, terlepas sepintar; secerdas, ataupun se-cermat apapun dia.

Konsep sederhana dari konsensus adalah "Diam berarti setuju", seperti pertanyaan dosen "Apakah sampai sini sudah paham?" yang dijawab dengan diam oleh mahasiswa-mahasiswi nya, yang bisa disimpulkan bahwa mereka sudah paham karena tidak ada jawaban "tidak" dari satu orangpun.

Ketika ada yang bersuara, seharusnya dia tidak diberlakukan kurang baik atau apapun itu hanya karena pilihan dia tidak sama dengan yang lain. Kita memiliki kapasitas yang berbeda-beda, memiliki pola berpikir yang beragam, dan itu semua tidak bisa (dipaksakan untuk) menjadi satu.

Karena itu tidak adil, dan kita sudah tau bahwa keadilan (serta mendapatkannya) adalah hak setiap mahluk hidup.

Kebenaran itu relatif

Ya, tergantung waktu; keadaan, dan tempat.

Gue bilang hari ini Bandung dingin, dan itu benar. Mungkin 6 jam setelahnya sudah tidak benar kebenaran tersebut (atau kebenaran tersebut hanya berlaku untuk beberapa daerah di Bandung saja).

Termasuk sekalipun gue bilang jam 3.01 AM Bandung dingin, mungkin di jam yang sama namun di hari yang berbeda kebenaran tersebut akan tidak relevan.

Dan seperti bagi yang percaya dengan adanya hari akhir, yang salah satu tandanya adalah matahari terbit di barat. Tentu itu bisa ditertawakan, karena fakta nya matahari terbit di timur.

Mungkin bahkan 'sang pembuat pertanyataan' tersebut bisa diadili, karena menyebarkan kabar tidak kurang benar :))

Namun apa yang terjadi bila suatu saat pernyataan tersebut benar?

Hari akhir tersebut ternyata benar-benar ada?

Dan orang-orang yang sebelumnya sangat skeptis dengan kehadiran hari akhir, ditampar oleh fakta bahwa apa yang mereka ragukan tersebut nyatanya ada?

Itu sebagai gambaran bahwa kebenaran itu (salah satunya menurut gue) relatif, tidak mutlak. Kecuali bila berbicara seputar agama, karena agama tentang kepercayaan, bukan tentang keraguan.

Tidak heran mengapa tidak sedikit ilmuwan yang tidak percaya akan kehadiran tuhan.

Dan untuk mengetahui suatu kebenaran, caranya adalah dengan mencarinya.

Dan untuk melakukan pencarian, harus memiliki data; harus bisa melakukan reka ulang, dan harus transparan.

Jika tidak? Yaa jatuhnya konsensus, hasil akhir didapat dari hasil kesepakatan bukan dari hasil suatu aktivitas yang bisa direka ulang dan dibuktikan kebenarannya.

Lebih hebat lagi bila bisa dibuktikan oleh setiap orang, bukan hanya kalangan tertentu yang memiliki wewenang khusus saja.

Penutup

Gue sudah menulis kode JavaScript sekitar 96 tahun, dan JavaScript membuat otak gue sakit. Coba aja tanya ke pemrogram senior, pasti mereka tau itu.

Setuju dengan pernyataan gue diatas?

Percaya apakah pernyataan diatas tersebut benar?

Jika tidak, silahkan lakukan sendiri apa yang gue sebut diatas.

Setiap orang bisa belajar JavaScript, banyak sumber yang bisa diakses oleh publik untuk mempelajari JavaScript. Dari situ akan ketauan, apakah pernyataan gue diatas benar atau cuma buat konten bercanda saja.

Tentu saja itu hanya bercanda, tapi gue harap lo dapat poin nya.

Bayangkan bila sumber untuk belajar JavaScript sangat minim, jika ada pun misalnya tidak bisa diakses oleh publik, hanya yang memiliki wewenang saja yang bisa dan boleh.

Bagaimana jadinya? Ada dua. Pertama, seumur hidup (atau setidaknya sampai sumber tersebut bisa diakses oleh publik) tidak percaya dengan pernyataan gue diatas. Dan untuk yang kedua, ter/dipaksa percaya akan pernyataan gue tersebut.

Terlebih gue sok-sok-an membawa lamanya pengalaman, pasti bisa dijadikan 'nilai plus' akan pernyataan gue diatas :))

Sebagai kalimat penutup, bagaimana bisa gue tau kalau itu benar kalau untuk membutikan kebenarannya saja tidak bisa direka ulang?

Yang bahkan data/informasi nya saja mungkin tertutup?

Tidak perlu menjadi Software Engineer untuk melakukan reproducible build, yang kamu butuhkan adalah alat-alat yang ada & proses yang harus dilakukan.

Tidak perlu menjadi 'pihak yang berwenang' untuk melakukan reka ulang kasus, yang kamu butuhkan adalah keterangan saksi & kondisi tempat kejadian perkara.

Apakah gue perlu menjadi 'pihak yang berwenang' untuk melakukan reka ulang atas kasus kehilangan laptop di kos gue? Tentu tidak, yang dibutuhkan adalah kondisi tempat kejadian perkara & para keterangan saksi bila ada.

Jadi, gimana?

Ingin mati penasaran atau hidup dalam keadaan yang dipaksa untuk menyepakati sesuatu?

Tentu kita tidak ingin dua-dua nya, bukan?

Dan apa lagi yang bisa dilakukan selain dengan memaparkan sesuatu yang bisa dibuktikan kebenarannya?

Terima kasih.