7 poin oleh baeba 3 jam lalu | 4 komentar | Bagikan ke WhatsApp

Rahasia kesuksesan selama 26 tahun yang diungkap pencipta SQLite adalah membangun alatnya sendiri, meminimalkan kontribusi eksternal, dan menjaga kualitas kode lewat pengujian yang sangat ketat.
Ini menunjukkan hakikat ‘kebebasan’ yang kerap terabaikan dalam ekosistem open source yang kompleks.


Daftar isi

  1. Perjalanan 26 tahun kode Richard Hipp, pencipta SQLite


1. Perjalanan 26 tahun kode Richard Hipp, pencipta SQLite

Richard Hipp, pencipta SQLite, telah menjalankan filosofi berikut sepanjang perjalanan pengembangan kodenya selama 26 tahun.

  • Membangun sendiri alat yang ia butuhkan.
  • Meminimalkan kontribusi kode dari luar.
  • Menjaga kualitas kode lewat pengujian yang sangat ketat.
  • Mengurangi dependensi eksternal untuk mengamankan kebebasan dalam pengembangan.

1.1. Kelahiran SQLite: pemecahan masalah yang dimulai dari kapal perang

SQLite bermula dari proyek kapal perang

  • SQLite bermula dari pekerjaan kontrak terkait kapal perang USS Oscar Austin.
  • Saat itu Richard Hipp adalah kontraktor di General Dynamics yang terlibat dalam proyek pembangunan kapal DDG-79 di Bath Iron Works.
  • Muncul masalah dalam pengembangan sistem informasi pengendalian kerusakan kapal.
  • Perusahaan lain sudah menghabiskan jutaan dolar, tetapi belum mampu menghasilkan solusi yang layak.

Keterbatasan sistem basis data yang ada

  • Untuk menyelesaikan masalah pada sistem pengendalian kerusakan, Richard Hipp membuat perangkat lunak cepat berbasis heuristik.
  • Namun ada masalah: ketika mesin basis data Informix yang dipakai untuk penyimpanan data dihentikan, perangkat lunaknya ikut tidak bisa berjalan.
  • Perangkat lunak harus tetap berjalan meskipun administrator sistem mematikan mesin basis data.
  • Karena itu ia mulai mempertimbangkan pendekatan agar aplikasi membaca data di disk secara langsung tanpa proses basis data terpisah.
  • Pada saat itu sulit menemukan mesin basis data SQL yang memenuhi kebutuhan tersebut, sehingga ia harus membuatnya sendiri.

Mempelajari basis data relasional secara otodidak

  • Saat itu pencarian internet belum umum seperti sekarang.
  • Richard Hipp menelusuri bahan referensi di perpustakaan universitas setempat untuk mempelajari teknologi basis data relasional.
  • Ketika itu riset basis data relasional berkembang aktif di MIT, Harvard, Berkeley, dan tempat lain.
  • Namun keterbatasan geografis membuatnya sulit mendapatkan informasi riset terbaru dengan mudah.
  • Pada akhirnya ia meneliti dan mengimplementasikan sendiri teknologi basis data yang dibutuhkannya.

1.2. Pertumbuhan SQLite dan kesuksesan komersial

Proyek yang dimulai tanpa tujuan mencari untung

  • SQLite sejak awal bukan perangkat lunak yang dibuat untuk dimonetisasi.
  • Versi awalnya dirilis sebagai perangkat lunak gratis.
  • Saat pengembangan dimulai, tidak ada rencana untuk membangun bisnis atau menghasilkan uang darinya.

Kontrak komersial pertama dengan Motorola

  • Beberapa tahun setelah SQLite dipublikasikan, Richard Hipp dihubungi oleh produsen ponsel Motorola.
  • Motorola ingin menyertakan SQLite di ponselnya.
  • Dari sinilah kontrak komersial pertama SQLite lahir.
  • Kontraknya dibuat dengan harga tetap, bukan model lisensi berdasarkan penggunaan.

Kerja sama dengan AOL

  • Setelah itu America Online (AOL) juga menandatangani kontrak untuk memasukkan SQLite ke paket CD-ROM mereka.
  • Kontrak ini juga menggunakan skema harga tetap.
  • Richard Hipp menilai nilai kontrak saat itu relatif murah dibandingkan nilai SQLite sendiri.

Symbian OS memilih SQLite

  • Symbian OS, yang digunakan di ponsel seperti Nokia, mengadakan uji buta untuk memilih mesin basis data.
  • Sebanyak 10 mesin basis data masuk dalam evaluasi.
  • Hasilnya, SQLite terpilih sebagai pemenang akhir.
  • Dalam proses itu muncul kekhawatiran bahwa SQLite terlalu bergantung pada satu pengembang inti.
  • Karena itu ia diminta membentuk konsorsium untuk meningkatkan bus factor.

Bus factor
Indikator yang menunjukkan apakah sebuah proyek dapat tetap dipertahankan jika beberapa personel kunci tiba-tiba tidak lagi bisa menjalankan pekerjaannya.
Bus factor 1 berarti proyek bisa sulit dipertahankan jika satu pengembang kunci keluar.

Pendirian konsorsium dan fokus penuh waktu

  • Mitchell Baker dari Mozilla memberi saran tentang pembentukan konsorsium.
  • Berdasarkan saran itu, Konsorsium SQLite pun didirikan.
  • Setelah konsorsium terbentuk, Richard Hipp mulai mengerjakan pengembangan SQLite secara penuh waktu.
  • Dengan mempekerjakan beberapa karyawan, ia menjalankan organisasi pengembangan yang kecil namun berkelanjutan.

Rencana dukungan jangka panjang hingga 2050

  • Pada 2010, Airbus ingin menggunakan SQLite dalam avionik untuk proyek pesawat A350.
  • Airbus menanyakan apakah SQLite dapat dipelihara dan didukung dalam jangka panjang.
  • Dengan mempertimbangkan usia badan pesawat sekitar 40 tahun, Richard Hipp menjanjikan dukungan jangka panjang.
  • Janji ini lebih merupakan tujuan jangka panjang proyek SQLite daripada kewajiban hukum.
  • Saat ini Richard Hipp menetapkan target pribadi berakhirnya dukungan SQLite pada 2050.
  • Target itu dibuat dengan pendekatan yang bisa disebut ‘kode yang hidup 50 tahun lebih lama dari data’, yakni menjaga kode lebih lama daripada umur data yang diperkirakan.

1.3. Lisensi, filosofi open source, dan pengembangan alat sendiri

Lahirnya lisensi ‘doa’

  • SQLite versi 1 bergantung pada library GDBM.
  • Karena GDBM menggunakan lisensi GPL, SQLite pun tak terhindarkan dari pengaruh GPL.
  • Setelah itu, untuk mendukung range query, Richard Hipp mengembangkan backend penyimpanan berbasis B-tree miliknya sendiri.
  • Ketika dependensi pada library eksternal hilang, ia pun bebas memilih lisensinya sendiri.

Memilih Public Domain

  • Pada waktu itu lisensi yang dikenal luas kurang lebih hanya MIT dan lisensi Berkeley.
  • Alih-alih memakai lisensi dengan klausul hukum yang rumit, Richard Hipp merilis SQLite ke Public Domain.
  • Belakangan ia mengetahui bahwa konsep Public Domain tidak diakui sama di semua negara.
  • Meski begitu, kebijakan rilis SQLite pada akhirnya diterima dengan cara yang mirip lisensi open source.

Kalimat ‘doa’

Alih-alih teks hukum biasa, header kode sumber SQLite memuat kalimat yang lebih mirip berkat atau doa.

May you do good and not evil.
May you find forgiveness for yourself and forgive others.
May you share freely, never taking more than you give.

Ketika SQLite menjadi salah satu library perangkat lunak yang paling banyak digunakan di dunia, kalimat ini pun ikut menjadi simbol filosofi lisensinya yang khas.

Gaya pengembangan yang meminimalkan kontribusi eksternal

  • SQLite tidak secara aktif menerima pull request seperti proyek open source pada umumnya.
  • Ia mempertahankan pendekatan yang meminimalkan kontribusi eksternal, sementara tim inti menulis dan mengelola kode secara langsung.
  • Richard Hipp mengibaratkan pull request sebagai ‘anak anjing gratis (free puppy)’.
  • Seperti menerima anak anjing secara gratis tetapi kemudian harus merawatnya, menerima kode dari luar berarti membawa tanggung jawab jangka panjang seperti berikut.
    • pemeliharaan kode
    • pengujian
    • dokumentasi
    • perbaikan bug
    • pengelolaan kompatibilitas dengan platform lain
    • tanggung jawab teknis jangka panjang
  • Pendekatan yang membatasi kontribusi eksternal ini menjadi salah satu alasan SQLite mampu menjaga kualitas dan arah yang konsisten selama lebih dari 26 tahun.

Contoh pengembangan alat sendiri

Fossil
  • Fossil adalah sistem kontrol versi buatan sendiri untuk mengelola proyek SQLite.
  • Ia dikembangkan pada periode yang mirip dengan Git.
  • Selain manajemen kode sumber, Fossil juga menyediakan fitur-fitur berikut secara terintegrasi.
    • kontrol versi
    • pelacakan issue
    • wiki
    • forum
    • antarmuka web
  • Fossil sendiri dibangun di atas SQLite.
  • Karena itu, Fossil juga berfungsi sebagai platform beta test nyata bagi SQLite.
  • Dalam proses mengembangkan dan mengoperasikan Fossil, Richard Hipp bisa menemukan dan memperbaiki kekurangan SQLite dari sudut pandang pengembang aplikasi.
  • Menurut Richard Hipp, Git cocok untuk proyek terdistribusi berskala besar seperti kernel Linux, sedangkan Fossil lebih cocok untuk proyek kecil seperti SQLite.
Lemon
  • Lemon adalah alat yang dibuat untuk menghasilkan parser SQL SQLite.
  • Alih-alih memakai Yacc atau Bison yang sudah ada, Richard Hipp membuatnya sendiri.
  • Karena merupakan alat internal, mekanisme pembuatan parser dapat diperbaiki secara bebas sesuai kebutuhan SQLite.

Filosofi alat sendiri dan kebebasan

  • Bagi Richard Hipp, membuat alat sendiri bukan sekadar selera teknis.
  • Membuat alat yang dibutuhkan sendiri dipandang sebagai tindakan merawat diri sendiri.
  • Dengan mengurangi dependensi eksternal, ia menjadi lebih sedikit terpengaruh oleh keputusan proyek atau perusahaan lain.
  • Menurutnya, kemandirian semacam ini memperluas kebebasan pengembang.
  • Namun ia juga mengaku merasa terbebani dan khawatir karena SQLite telah menjadi dependensi inti di begitu banyak sistem di seluruh dunia.

1.4. Pengujian yang sangat ketat dan pengembangan perangkat lunak di era AI

Pengujian sebagai kunci kesuksesan SQLite

  • Salah satu faktor utama yang membuat SQLite tetap stabil dalam jangka panjang adalah pengujian yang luar biasa ketat.
  • Tim pengembang SQLite tidak sekadar memeriksa apakah suatu fitur berjalan, tetapi juga memverifikasi berbagai kondisi pengecualian dan platform yang berbeda.
  • Pengujian dianggap sangat penting, sampai jumlah kode uji jauh lebih banyak daripada kode produk sesungguhnya.

Penerapan standar DO-178B

  • Tim pengembang SQLite menerapkan pendekatan DO-178B, standar pengembangan perangkat lunak untuk pesawat, pada pengujian mereka.
  • Dengan cara ini, cakupan pengujian ditingkatkan secara sistematis.
  • Pada tahap awal pengembangan Android, setelah mencapai cakupan pengujian setingkat DO-178B, laporan bug hampir menghilang.
  • Dari pengalaman itu mereka memastikan bahwa pengujian yang ketat benar-benar berdampak langsung pada peningkatan stabilitas perangkat lunak.

Menemukan bug baru lewat fuzzing

  • Setelah itu muncul teknik profile-guided fuzzing.
  • Fuzzing adalah metode memasukkan data acak atau yang telah dimodifikasi ke dalam program untuk menemukan kesalahan tak terduga.
  • Bug jenis baru yang sulit ditemukan bahkan dengan pengujian setingkat DO-178C pun ditemukan lewat fuzzing.
  • Ini menunjukkan bahwa cakupan pengujian yang tinggi saja tidak cukup untuk menemukan semua kesalahan.

Bug yang ditemukan AI

  • Belakangan mulai muncul kasus penggunaan AI untuk mencari bug atau menulis laporan bug.
  • Proyek SQLite juga pernah menerima laporan bug yang diduga dibuat oleh AI.
  • AI berpotensi menjadi alat verifikasi perangkat lunak baru yang melengkapi pengujian dan fuzzing yang sudah ada.

Penilaian Richard Hipp terhadap AI

  • Richard Hipp mengatakan bahwa pandangannya tentang AI bisa berubah dari hari ke hari.
  • Saat ini ia menggunakan AI sebagai alat yang sangat berguna.
  • Ia menceritakan pengalaman ketika bertanya kepada ChatGPT tentang kode SQLite, lalu AI menjawab dengan nada seperti berikut.

“Tentu saja Anda juga sudah tahu…”

  • Ia menjelaskan bahwa rasanya agak menyeramkan ketika AI berbicara seolah-olah lebih memahami kode yang ia tulis sendiri.
  • AI berguna untuk menelusuri informasi dan mendapatkan ide.
  • Namun AI tidak selalu akurat, dan bisa menyampaikan informasi yang salah dengan cara yang sangat meyakinkan.
  • Kode yang dihasilkan AI juga pernah menimbulkan masalah kompatibilitas, misalnya berjalan di satu sistem operasi tetapi tidak di sistem operasi lain.
  • Karena itu, hasil buatan AI tetap harus ditinjau dan diperbaiki langsung oleh manusia.

Nasihat untuk pengembang muda

  • Richard Hipp menyambut upaya untuk mem-fork SQLite dan mencoba membuat basis data yang lebih baik.
  • Namun ia menekankan bahwa untuk mencapai level seperti SQLite dibutuhkan hal-hal berikut.
    • lebih dari 25 tahun pengembangan berkelanjutan
    • dedikasi yang gigih pada satu topik
    • pengujian dan perbaikan jangka panjang
    • pengamatan terus-menerus terhadap kebutuhan pengguna
    • pengalaman yang terakumulasi lewat kegagalan berulang
  • Perangkat lunak hebat tidak lahir dalam waktu singkat.
  • Ia menilai AI bisa sangat mengubah cara pengembangan perangkat lunak, tetapi sulit memprediksi seperti apa masa depan itu nantinya.

1.5. Keberlanjutan SQLite dan sisi manusianya

Mengapa bisa bertahan selama 26 tahun

  • Richard Hipp menjelaskan kesuksesan SQLite bukan terutama karena kemampuannya sendiri, melainkan karena takdir ilahi dan keberuntungan.
  • Ia mengatakan dirinya tidak menganggap diri sebagai programmer yang luar biasa istimewa.
  • Namun ia menilai kecenderungan berikut membantu perkembangan SQLite.
    • sikap keras kepala dalam mempertahankan caranya sendiri
    • kebiasaan mempertanyakan anggapan umum
    • kebiasaan membuat sendiri alat yang dibutuhkan
    • kecenderungan fokus pada satu masalah dalam jangka panjang
    • sikap menikmati proses pengembangan itu sendiri
  • Ia mengatakan bahwa yang penting adalah proses terus-menerus memikirkan bagaimana membuat SQLite menjadi lebih baik.

Keunggulan tim kecil

  • Richard Hipp mengatakan bahwa ia tidak terlalu piawai bergaul dengan banyak orang atau mengelola hubungan politik dalam organisasi.
  • Karena sifat itu, ia mempertahankan tim pengembang SQLite tetap kecil.
  • Hasilnya, struktur tim kecil justru membantu SQLite menjaga arah yang konsisten dan pengambilan keputusan yang cepat.
  • Ia mengakui bahwa dirinya tidak memiliki kemampuan seperti Linus Torvalds dalam mengoordinasikan hubungan dengan begitu banyak pengembang.

Menjalankan perusahaan bersama istrinya, Ginger

  • Richard Hipp menjalankan perusahaan bersama istrinya, Ginger.
  • Keduanya menjaga kerja sama tim yang fleksibel, termasuk saling bertukar jabatan sesuai situasi.
  • Ginger adalah seorang musisi dan juga piawai membantu sesama musisi yang kesulitan dengan masalah komputer.
  • Richard Hipp mengatakan bahwa Ginger lebih terkenal darinya di komunitas lokal.

Sisi manusia dalam pengembangan perangkat lunak

  • Richard Hipp tidak memandang perangkat lunak semata sebagai kumpulan kode atau teknologi.
  • Ia menekankan pentingnya unsur manusia dalam pengembangan perangkat lunak, seperti emosi pengembang, hubungan kolaborasi, obsesi, kegagalan, dan rasa pencapaian.
  • Perangkat lunak memang merupakan hasil yang kompleks dan abstrak, tetapi di baliknya selalu ada kisah orang-orang yang membuatnya.

Rekomendasi buku: 《The Soul of a New Machine》

  • Richard Hipp merekomendasikan 《The Soul of a New Machine》 sebagai buku untuk memahami sisi manusia dari pengembangan perangkat lunak dan komputer.
  • Buku ini bukan sekadar menjelaskan teknologi komputer.
  • Buku ini membahas hal-hal seperti berikut yang muncul dalam proses membangun komputer baru.
    • semangat para pengembang
    • konflik di dalam organisasi
    • tantangan teknis
    • kegagalan dan frustrasi
    • kolaborasi dan persaingan
    • emosi dalam proses penciptaan
  • Ia menekankan pentingnya kemampuan memahami teknologi yang kompleks secara mendalam sekaligus menyampaikannya sebagai kisah manusia.

Kesimpulan

Alasan SQLite bisa bertahan sukses selama lebih dari 26 tahun bukan semata karena keunggulan teknis.

Faktor-faktor kunci keberhasilannya dapat diringkas sebagai berikut.

  1. Ia membangun sendiri teknologi yang dibutuhkan untuk memecahkan masalah nyata.
  2. Ia mengurangi dependensi eksternal dan mempertahankan kendali atas proyek.
  3. Ia menganggap tanggung jawab pemeliharaan jangka panjang lebih penting daripada kontribusi eksternal.
  4. Ia membuat sendiri alat yang dibutuhkan, seperti Fossil dan Lemon.
  5. Ia menerapkan pengujian yang setara dengan perangkat lunak penerbangan.
  6. Ia memanfaatkan AI dan teknik pengembangan baru, tetapi tidak menelan mentah-mentah hasilnya.
  7. Ia menjalankan proyek berdasarkan tim kecil dan hubungan antarmanusia.
  8. Ia menekuni satu topik secara gigih dalam jangka panjang.

Inti yang ditunjukkan kasus SQLite adalah bahwa kebebasan bukanlah keadaan tanpa batasan, melainkan keadaan ketika seseorang dapat bertanggung jawab dan tetap mengendalikan sendiri alat serta kode yang digunakannya.

Dengan mengurangi dependensi eksternal, membuat sendiri alat yang dibutuhkan, dan melakukan verifikasi secara ketat, cara pengembangan SQLite menjadi contoh penting tentang seperti apa pengembangan perangkat lunak yang berkelanjutan bahkan di era AI yang berubah sangat cepat.

4 komentar

 
regentag 1 jam lalu

Do-178 dari RTCA adalah pedoman yang cukup singkat sehingga benar-benar memungkinkan untuk dibaca dan diterapkan. Pedoman ini juga diterapkan secara luas di industri penerbangan.

https://studylib.net/doc/27132454/rtca-do-178b

 
hmmhmmhm 2 jam lalu

"Lebih dari 25 tahun pengembangan berkelanjutan" benar-benar keren...

 
cnaa97 2 jam lalu

Keren ya.. terasa seperti film juga

 
toida 2 jam lalu

Mindset-nya keren banget