Pemikiran saya tentang penulisan ulang Bun ke Rust
(andrewkelley.me)- Pencipta Zig Andrew Kelley menafsirkan penulisan ulang Bun ke Rust bukan sebagai soal menang atau kalahnya fitur bahasa, melainkan sebagai peristiwa yang memperlihatkan runtuhnya hubungan antara Zig Software Foundation (ZSF) dan Bun/Oven
- Pada masa awal, Bun mengakui Zig sebagai fondasi capaian performanya dan memberikan donasi tahunan sebesar $60.000 kepada ZSF, tetapi setelah menjadi startup yang didukung VC, ketidakpuasan terhadap operasional organisasi dan kualitas kode makin membesar
- ZSF mengkhawatirkan adanya implementasi serba tambal sulam, penyalahgunaan assertion, serta kurangnya waktu untuk membereskan bug dan utang teknis dibanding kecepatan penambahan fitur dalam codebase Bun, dan juga merasa terbebani oleh situasi ketika Bun terlihat seperti contoh utama Zig
- Kelley mengkritik bahwa tulisan tentang peralihan Bun ke Rust membingkai penurunan bug sebagai pertentangan panduan gaya vs fitur bahasa, padahal menurutnya inti sebenarnya adalah waktu rekayasa yang dicurahkan untuk menghapus bug dan mengelola kualitas kode
- ZSF berterima kasih atas donasi dari Bun, tetapi setelah akuisisi oleh Anthropic, donasi dan hubungan itu berakhir, dan mereka memandang positif terpisahnya kepentingan bisnis Zig dan Bun lewat penulisan ulang ke Rust
Hubungan awal Bun dan Zig
- Sekitar 5 tahun lalu, Jarred bergabung dengan komunitas Zig, dan Kelley melihatnya sebagai sosok dengan “energi pemula” yang kuat: cepat mencoba banyak hal dan belajar banyak
- Ketika Bun mulai mendapat perhatian sebagai toolchain JavaScript, perhatian terhadap Zig juga mulai meningkat
- Kelley menilai Jarred sebenarnya bisa saja membangun penghasilan stabil di tingkat biaya hidup San Francisco hanya lewat crowdfunding, tetapi ia memilih modal ventura dengan menerima pola pikir ala Thiel Fellowship dan pendekatan Silicon Valley
- Bun pada awalnya bersikap ramah terhadap proyek Zig
- Situs web Bun memberi pengakuan kepada Zig atas capaian performanya
- Mereka mengatur donasi bulanan senilai total $60.000 per tahun ke Zig Software Foundation
- Bahkan dalam tulisan tentang penulisan ulang Bun ke Rust, ucapan terima kasih kepada proyek Zig dinilai tampak tulus
Retaknya hubungan setelah menjadi startup yang didukung VC
- Setelah Bun menjadi startup yang didukung VC, Jarred berubah dari pengembang yang membesarkan open source bersama komunitas menjadi lebih dekat ke peran operator bisnis
- Pesan rekrutmen dari Oven memberi isyarat beban kerja yang sangat intens selama sekitar 9 bulan pertama, dan menyebut bahwa jika work-life balance berarti “banyak waktu untuk tidak bekerja”, maka tempat itu mungkin tidak cocok
- Kelley mengatakan bahwa lewat percakapan dengan pelamar dan karyawan Oven, ia berulang kali mendengar penilaian negatif tentang peran Jarred sebagai manajer
- Masalah yang disebut antara lain kurangnya komunikasi, ekspektasi yang tidak realistis, empati yang rendah, dan kurangnya pengalaman
- Akibatnya, anggota komunitas yang sebenarnya ingin bekerja dengan Zig justru mulai menghindari Oven dan Bun
- Semakin Jarred fokus pada produktivitas dan strategi exit startup, semakin jauh ia dari visi jangka panjang Zig versi Kelley
- Sebagai contoh, Jarred meminta agar implementasi Language Server Protocol dan integrasi VSCode diprioritaskan, sementara Kelley merasa punya rencana yang lebih besar
Masalah kualitas kode Bun menurut ZSF
- Bagi Kelley, masalah intinya adalah kualitas kode
- Tim Zig membaca source code dari proyek-proyek pengguna, memeriksa bagaimana perubahan bahasa memengaruhi pengguna, serta menguji kerusakan dan regresi performa yang disebabkan perubahan tersebut
- Dalam codebase Bun, praktik pemrograman yang dikhawatirkan ZSF makin bertambah
- Implementasi serba tambal sulam terus menumpuk
- Ada penyalahgunaan assertion
- Waktu untuk refleksi, penghapusan bug, dan pelunasan utang teknis terlalu sedikit dibanding kecepatan penambahan fitur
- Kelley khawatir pendekatan Bun ini bisa berpadu dengan kritik terhadap keamanan memori Zig, dan ia ingin menjaga jarak sosial dari proyek Bun terhadap proyek Zig
- ZSF mencoba mengarahkan Bun ke praktik pemrograman yang lebih baik, tetapi tidak berhasil
Akuisisi Anthropic dan penulisan ulang ke Rust
- Di internal ZSF muncul penilaian bahwa Bun lebih mirip beban bersih (net liability)
- Bun terlihat seperti contoh utama Zig, padahal sebenarnya lebih dekat ke contoh “beginilah cara yang tidak seharusnya menulis kode Zig”
- Kelley sejak awal memandang rencana bisnis Bun yang “menjual sesuatu di cloud” sebagai sesuatu yang rapuh, dan menilai bahwa jika suatu hari perusahaan itu dijual, Zig juga bisa ikut menerima publisitas negatif secara tidak langsung
- Setelah akuisisi oleh Anthropic, ZSF merasa lega
- Donasi dihentikan secara diam-diam, dan ZSF memang sudah memperkirakannya
- Pihak Bun tidak membatalkan rapat bulanan, tetapi juga tidak menghadirinya, dan hubungan itu dianggap sudah berakhir
- ZSF menduga dalam hitungan hari akan muncul penulisan ulang ke Rust, dan mereka justru mendukungnya
- Setelah akuisisi Anthropic, hubungan tidak langsung bahwa Claude ditulis dengan Bun, dan Bun ditulis dengan Zig, juga menjadi beban bagi komunitas Zig
- drive-by slop contributions meningkat
- Muncul arus pengguna AI yang sangat antusias dan menempelkan output LLM ke posting forum
- Kelley khawatir Zig akan dikenal sebagai bahasa pemrograman yang terkait dengan AI
- Saat Jarred mengumumkan penulisan ulang ke Rust, Kelley menyambutnya dengan sangat positif dan mengungkapkan perasaan bahwa kini itu “bukan masalah saya lagi”
Sanggahan terhadap tulisan Bun tentang penulisan ulang ke Rust
- Kelley menilai tulisan Bun tentang penulisan ulang ke Rust ditulis dengan baik, tetapi tetap menunjukkan beberapa masalah penting
-
Inti dari penurunan bug
- Tulisan Bun membingkai seolah untuk menghindari bug kita harus memilih antara panduan gaya atau fitur bahasa pemrograman
- Bagi Kelley, cara utama menghilangkan bug adalah mencurahkan sumber daya rekayasa untuk menemukan dan menghapus bug
- TigerBeetle meluangkan waktu untuk menemukan dan menghapus bug serta menjaga hubungan yang sehat dengan ZSF, sedangkan Bun menurutnya tidak melakukan keduanya
-
Kontradiksi soal test suite
- Kelley menilai tulisan Bun menggunakan kecukupan test suite sebagai alasan mengapa 1 juta baris kode yang belum ditinjau bisa tetap dirilis
- Jika begitu, ia bertanya mengapa kode Zig justru punya banyak bug yang mengganggu, dan mengapa test suite tidak bisa menangkap bug di kode Zig tetapi bisa menangkap bug dalam 1 juta baris kode yang belum ditinjau
-
Performa dan LTO
- Tulisan Bun mengaitkan peningkatan performa dengan LTO, tetapi menurut Kelley, Zig sudah mendukung LTO sepanjang masa penggunaan Bun
- Zig dulu pernah mengaktifkan LTO secara default, tetapi menghapusnya dari setelan bawaan karena terlalu banyak bug LLVM, dan bug itu juga berdampak pada Rust
- Kelley menilai sangat mungkin ZSF pernah menyarankan agar LTO diaktifkan, tetapi Bun tidak mendengarkannya
-
fuzzing
- Tulisan Bun memberi kesan seolah mereka melakukan fuzzing dengan serius terhadap kode Zig, tetapi Kelley mengatakan bahwa dalam percakapan telepon tim Bun justru menyebut mereka tidak melakukan fuzzing apa pun
-
Ukuran biner dan
comptime- Tulisan Bun menyajikan berbagai pekerjaan rekayasa untuk mengecilkan ukuran biner seolah itu menjadi dasar pembenaran penulisan ulang ke Rust, tetapi Kelley menilai pekerjaan itu tidak berkaitan dengan penulisan ulang itu sendiri
- Pekerjaan itu lebih mirip tugas rekayasa yang seharusnya sejak awal dilakukan di codebase Zig
- Selama beberapa tahun ZSF telah memperingatkan soal penyalahgunaan
comptimedi Bun, dan bahkan membuat fitur time report agar penggunaancomptime/inlineserta waktu kompilasi bisa diaudit
-
Kecepatan kompilasi
- Kelley menyoroti bahwa tulisan Bun sama sekali tidak menyebut kecepatan kompilasi
- Proyek compiler Zig memiliki sekitar 600.000 baris kode, skala yang mirip dengan Bun sebelum ditulis ulang
- Menurut pengukuran Kelley, build dari nol dengan cache bersih memakan waktu 16 detik, dan setelah kompilasi inkremental diaktifkan, setiap edit berikutnya memerlukan 90ms
- Ia mempertanyakan berapa angka pembanding Bun setelah penulisan ulang ke Rust
Kesimpulan Kelley
- Bagi Kelley, persoalan utamanya bukan fitur bahasa pemrograman, melainkan runtuhnya hubungan
- ZSF sungguh berterima kasih atas donasi yang diterima dari Bun, dan menggunakan uang itu untuk kompensasi kontributor Zig
- Kelley menegaskan bahwa ia tidak bermaksud mengkritik Jarred secara jahat
- Jarred memang punya selera dan tujuan hidup yang berbeda darinya, tetapi menurut Kelley, ia telah berhasil membangun kehidupan yang diinginkannya
- Ia menerima bahwa Jarred bahagia dan sukses, dan mengatakan dirinya tidak menyimpan niat buruk
- Namun, Kelley senang bahwa kepentingan bisnis ZSF dan Bun kini tidak lagi saling terikat
- Ia menilai bahwa setelah perdebatan publik tentang baik atau buruknya penulisan ulang ke Rust sebagai dasar memilih bahasa berakhir, interaksi kedua pihak juga akan berakhir
2 komentar
Setelah membaca tulisannya, rasanya jadi tidak ingin memakai zig maupun bun.
Komentar Hacker News
Saya benar-benar belajar banyak dengan membaca kode Andrew, dan seperti yang juga dikatakan di tulisan aslinya, tanpa Zig, Bun juga tidak akan ada
Soal bagian “di tulisan itu diklaim bahwa mereka melakukan fuzzing pada kode Zig, tetapi saat panggilan telepon seluruh tim Bun mengatakan bahwa mereka tidak melakukan fuzzing apa pun. Ini tampak seperti manipulasi terang-terangan”, ada PR integrasi Fuzzilli: https://github.com/oven-sh/bun/pull/24826
Ada juga PR merge yang memperbaiki masalah yang ditemukan Fuzzilli di kode Zig milik Bun: https://github.com/oven-sh/bun/pull/28926, https://github.com/oven-sh/bun/pull/28934, https://github.com/oven-sh/bun/pull/29255, https://github.com/oven-sh/bun/pull/29210, https://github.com/oven-sh/bun/pull/29199
Jika mencari “Fuzzilli”, akan muncul lebih banyak PR: https://github.com/search?q=repo%3Aoven-sh%2Fbun+is%3Apr+Fuz...
zig build test --fuzz, yaitu fuzzer bawaan Zig, dan alat yang berada dalam cakupannya kemungkinan yang ituSaya tidak memuja salah satu dari mereka; saya cuma penasaran karena seluruh percakapan ini tampak makin memburuk alih-alih bergerak ke arah yang lebih baik
Fakta bahwa saya mendapat downvote hanya karena mengajukan pertanyaan pemeriksaan fakta cukup mengisyaratkan sesuatu. Bisa saja jawabannya sederhana seperti “sampai baru-baru ini mereka memang belum memakai fuzzer, jadi keduanya benar”, tetapi saya benar-benar tidak tahu dan hanya bertanya
Tulisan ini adalah hal yang tidak profesional dan memalukan bagi Zig
Saya hampir tidak tahu apa-apa tentang Jarred, tetapi tulisan dia yang saya baca kemarin bernada berterima kasih kepada Zig, dan sekarang saya lihat dia juga telah menyumbang dana yang cukup besar ke Zig
Keseluruhan tulisan ini menyerangnya secara terbuka dan pribadi hanya karena dia memilih produk lain
Jika Andrew mengira tulisan ini akan membela Zig, itu aneh, karena kenyataannya justru hanya membuatnya terlihat kekanak-kanakan. Atau mungkin dia memang hanya ingin menyerang Jarred
Apakah semua orang harus menjadi merek yang berjalan, selalu menyaring ucapan, berjalan di atas es tipis, dan bersembunyi di balik ungkapan korporat agar terlihat “profesional”?
Dunia saat ini butuh wacana yang lebih jujur, bukan kurang jujur, dan interaksi online tampaknya makin kehilangan ketulusan
Zig pada dasarnya makin mendekati proyek satu orang, dan satu orang itu membuat keputusan yang makin tidak stabil
Tentu saja itu proyeknya sendiri dan dia berhak, tetapi jika Anda perusahaan bernilai hampir triliunan won, Anda tentu tidak ingin menghadapi risiko rantai pasok seperti ini
Dari sudut pandang Anthropic, lebih baik menghentikannya sejak awal daripada terus berinvestasi ke ekosistem Zig ketika risiko seorang not-so-BDFL melampaui batas mulai terlihat
Sementara itu, dengan mempertimbangkan skala adopsi dan lamanya pengembangan, cakupan pengujian Zig memalukan rendahnya
Sikap Zig terhadap AI sepenuhnya kekanak-kanakan. Mereka bisa mendapat manfaat besar, tetapi bahkan tidak meninjau kemungkinan pemanfaatannya sama sekali
Mencegah spam PR itu satu hal, tetapi mengikat tangan sendiri dan sama sekali tidak memakai AI bahkan untuk area termudah dengan manfaat tinggi secara internal itu hal lain
Dengan AI, mereka bahkan bisa menyaring kandidat bug nyata dari spam PR, tetapi karena sama sekali tidak memanfaatkan bantuan itu, bug sungguhan dibiarkan terbengkalai lebih lama dari yang perlu
Sayangnya, terlalu banyak pengembang open source yang merasa terlalu nyaman menulis dengan cara seperti ini, dan itu salah satu alasan saya berhenti berkontribusi ke open source
Di tempat kerja yang rasional, bertindak seperti ini akan membuat seseorang dipecat atau setidaknya dikenai tindakan disipliner
Kalimat “tidak ada kritik pribadi terhadap Jarred” terdengar cukup keras bila diucapkan di akhir tulisan yang hampir seluruhnya tampak seperti kritik pribadi yang disamarkan tipis
Misalnya mengatakan seseorang punya energi pemula lalu membungkusnya dengan kepositifan palsu seperti “orang yang gagal lalu belajar”, atau menulis bahwa menurut rumor dia disebut “manajer yang bau”
Ini terasa seperti, “Saya tidak bilang dia buruk, tapi saya harus menulis di blog bahwa semua orang setuju orang ini buruk,” dan bahkan jika itu benar pun, tetap terlihat sangat tidak pantas
Saya juga pernah bekerja dengan manajer-manajer buruk, tapi saya tidak menyimpan dendam pribadi
“Jaringan rumor itu besar dan sehat, penuh dengan anggur yang berair, dan semua sari dari anggur itu membawa pesan yang sama: Jarred adalah manajer yang bau”
“Jarred sudah menulis omong kosong bahkan sebelum memakai LLM”
Ini tulisan yang anehnya kekanak-kanakan. Saya suka tulisan yang berbicara terus terang tanpa filter korporat, tapi tulisan seperti itu juga menunjukkan bagaimana orang tersebut berpikir dan bertindak
Kepemimpinan yang baik tetap akan terlihat profesional bahkan tanpa filter korporat, sedangkan tulisan ini menampakkan sesuatu yang jauh lebih buruk dari itu
Itu sepenuhnya wajar saat aman dan tidak ada orang yang bergantung pada kita. Itu berbeda dari pekerjaan manajerial
Bagian bahwa ZSF bernapas lega setelah akuisisi Anthropic selesai terasa menarik. Artinya, bahkan ketika donasi diam-diam berhenti pun rekeningnya sudah siap, dan mereka juga tidak kaget saat rapat bulanan tidak dibatalkan tetapi juga tak ada yang hadir. Hubungan itu pada dasarnya sudah berakhir
Saya sudah sering melihat hal seperti ini. Saat sebuah proyek atau organisasi diakuisisi, “hal baik” yang mereka lakukan biasanya tidak dihentikan secara dramatis; itu просто menghilang ketika sponsornya mulai mengabaikannya secara diam-diam
Syukurlah mereka membaca tanda-tandanya dan bersiap. Ini pelajaran bagus yang seharusnya tidak perlu dipelajari dengan susah payah sendiri, dan proyek perangkat lunak bebas/open source yang bergantung pada satu atau dua donatur besar perlu waspada
Sepertinya kita akan melihat hal seperti ini jauh lebih sering di ekosistem developer tools ke depan
Di tempat lain dalam thread ini ada banyak reaksi tajam soal nada tulisannya, tetapi tulisan ini justru menurunkan ekspektasi saya terhadap Zig
Dramanya memang menarik dan ketulusan Andrew mungkin bahkan patut dihormati, tetapi ini bukan profesionalisme yang dibutuhkan proyek serius
Meski tampak membosankan dan tidak menginspirasi, saya justru menginginkan rasa stabil seperti itu dari tech stack dan pengelolaannya
Jarred mungkin saja kerugian bersih, tetapi Bun adalah proyek yang sangat besar yang memakai Zig, dan kepergian proyek itu bukan hal yang sebaik yang Andrew katakan bagi Zig
Dia tampak memberi prioritas jauh lebih tinggi pada kemurnian dan ideologi daripada pertumbuhan bahasa. Untuk bahasa pemrograman yang serius, adopsi dan massa kritis juga merupakan faktor penting
Mirip seperti mengatakan Linux tak mungkin jadi proyek serius karena gaya email Linus
Lagi pula ini bukan tulisan resmi, hanya tulisan di blog pribadinya
Yang penting bukankah kontribusinya terhadap bahasa itu sendiri?
Mengapa adopsi dan massa kritis harus dianggap penting? Mengapa tidak boleh membuat bahasa yang sesuai dengan kemurnian dan ideologi yang diinginkan, sekalipun itu berarti mengorbankan adopsi yang lebih luas?
Mengapa semuanya harus dioptimalkan untuk pertumbuhan pengguna dan awareness?
Bahkan jika mereka mencoba menampilkannya seolah begitu
Tulisan ini terasa sangat menyegarkan. Godaan untuk membalas ungkapan ala PR dari tulisan Bun dengan cara yang lebih halus pasti besar, tetapi dia tidak melakukannya
Dia juga bisa saja memasukkan fakta-fakta yang membuat Jarred terlihat buruk sambil hati-hati menyembunyikan opininya sendiri, misalnya dengan gaya “saya dengar orang-orang menyebut dia manajer yang bau. Bukan saya yang bilang, orang lain,” tetapi saya suka karena dia jujur saja
Hanya saja isi dari kepribadian dan pikirannya itu cukup sulit diterima
Karena bagian pertama sekaligus terbesar dari tulisan itu didedikasikan pada serangan pribadi yang spekulatif, sulit memberi bobot kepercayaan pada apa yang dikatakan penulis
Ini sebenarnya kesempatan bagus untuk merangkum keunggulan Zig. Belakangan saya jadi ingin mencoba belajar Zig karena tulisan mitchellh yang penuh semangat dan inspiratif, tetapi tulisan ini justru memadamkan keinginan saya untuk mempelajari Zig
Cukup banyak isi tentang bagaimana Andrew memandang Jarred serta cara kerja dan sikap kerjanya, tetapi tidak begitu jelas bagi saya apa yang tergolong serangan pribadi, mana yang spekulatif, dan mana yang bukan
Serangan pribadi terhadap Jarred tampaknya tidak banyak membantu argumen untuk memakai Zig
Seharusnya fokus pada bahasanya, jangan memakai ungkapan seperti “manajer yang menjijikkan”
Jujur saja, membaca tulisan ini membuat saya merasa ingin menghindari Andrew sama seperti Jarred
Ini juga sesuatu yang telah disaksikan banyak orang di komunitas dalam beberapa bulan terakhir
Mengatakan “Jarred telah membuat banyak orang di komunitas kami menjauh dalam peran profesionalnya, dan kami ingin menjaga jarak” bukan berarti “Jarred adalah orang jahat dalam kehidupan pribadinya”
Tentu saja, di industri ini, jika memikirkan seberapa banyak kehidupan pribadi di luar kerja yang mungkin masih tersisa bagi para VC, itu bisa terasa hampir sama maknanya, tetapi itu bukan masalah Andrew
Saya tidak membela gaya penulisan Andrew. Saat berbicara kepada pembaca neurotipikal yang lebih luas, mungkin ia bisa sedikit lebih menahan neurodiversitasnya
Namun tetap saja ini proyeknya, komunitasnya sudah mengenal sifat tersebut, dan ini juga merupakan faktor yang sudah diketahui
Bisa jadi membantu jika dibaca ulang dengan menganggap Andrew sepenuhnya tulus, alih-alih menambahkan makna tersirat sekunder seperti “Andrew sedang berusaha membunuh karakter Jarred”
Ini juga bukan pertama kalinya saya melihat tulisannya terasa terang-terangan berniat buruk. Ini bukan sesuatu yang bisa dengan halus disebut sekadar “blak-blakan”
“Apakah diam bukan sebuah pilihan?”
Bertentangan dengan pernyataan “tidak ada kritik pribadi terhadap Jarred”, keseluruhan tulisan terasa seperti kritik pribadi terhadap Jarred
Sekalipun itu benar, tidak bijak mengungkapkannya ke publik dalam bentuk seperti ini. Jika tujuannya membela Zig, itu bisa dilakukan dengan cara yang kurang personal
Seluruh pekerjaan menulis ulang Bun dari Zig ke Rust ini terlihat seperti langkah pemasaran besar
Jika Anthropic AI memang sekuat itu, mengapa tidak menugaskannya memperbaiki bug dan merombak codebase Bun Zig yang ada agar tidak hanya bug saat ini yang terselesaikan, tetapi bug serupa juga tidak muncul lagi di masa depan?
Itulah yang melukai perasaan Anthropic
Saya bisa membayangkan Anthropic mungkin tetap ingin mengakuisisi Bun tanpa sandiwara seperti ini
Beberapa minggu kemudian Bun mulai menulis ulang ke Rust. Memang tidak dinyatakan secara eksplisit, tetapi saya melihat kedua kejadian itu mungkin berkaitan
Saya tidak tahu mana yang lebih buruk