Hadiah Sayembara Prettier $20 Ribu Diklaim oleh Biome
(prettier.io)- Prettier, formatter kode JavaScript, ketika logika formatting-nya mulai mendekati kondisi stabil, berupaya mendorong persaingan performa melalui implementasi kompatibel berbasis Rust
- Pada 9 November, Prettier menawarkan hadiah sayembara sebesar $10 ribu dengan syarat lulus 95% test suite, dan dengan tambahan dari CEO Vercel Guillermo Rauch serta napi.rs, totalnya menjadi $22.500
- Biome menerima hadiah tersebut setelah beberapa orang meningkatkan kompatibilitas selama sekitar 3 minggu, dan dalam proses ini cakupan kompatibilitas nyata dengan Prettier meluas dengan cepat
- Dalam proses menyesuaikan pengujian, bug dan keputusan yang meragukan di Prettier juga terungkap, sehingga pihak Prettier mendapatkan dasar konkret untuk perbaikan
- Prettier selama ini membayar $1.500 per bulan kepada 2 maintainer dari dana donasi, tetapi anggaran saat ini hanya menyisakan runway 8 bulan, sehingga membutuhkan donasi tambahan
Biome Menerima Hadiah Sayembara Prettier
- Prettier adalah formatter kode JavaScript yang diadopsi secara luas karena menangani dengan cermat berbagai sekali cara orang menulis kode
- Logika formatting-nya sudah berada dalam kondisi kokoh, dan diperkirakan akan mencapai tahap yang memuaskan setelah pekerjaan terkait ternaries diterapkan
- Tantangan berikutnya adalah peningkatan performa
- Prettier sejak awal bukan alat yang cepat, tetapi cukup cepat untuk sebagian besar use case
- Agar tidak tetap berada pada kondisi saat ini, mereka mendorong perbaikan melalui bentuk persaingan yang bersahabat
-
Syarat Hadiah dan Partisipasi
- Pada 9 November, mereka mengajukan $10k bounty yang dapat diterima jika sebuah proyek yang ditulis dengan Rust lulus 95% dari test suite Prettier
- CEO Vercel Guillermo Rauch menambahkan jumlah yang sama, sehingga totalnya menjadi $20 ribu
- napi.rs menambahkan $2.500
- Pihak Algora membuat landing page untuk hadiah sayembara tersebut
-
Hasil yang Dicapai Biome
- Proyek Biome menerima hadiah sayembara tersebut
- Selama sekitar 3 minggu, kira-kira 12 orang berkumpul untuk meningkatkan kompatibilitas
- Detailnya ada di full report dari Biome
- Dalam proses menyesuaikan pengujian, banyak bugs and questionable decisions di Prettier juga ditemukan, dan Prettier menjadi dapat memperbaikinya
Tekanan yang Diciptakan Persaingan Performa
- Alasan tim Prettier mendanai proyek lain adalah untuk menciptakan persaingan performa
- Prettier memiliki posisi dominan di bidang formatter kode JavaScript
- Karena kurangnya persaingan, motivasi untuk peningkatan performa dan perbaikan berbagai edge case relatif kecil
- Kini Biome memiliki implementasi yang kompatibel dengan Prettier sekaligus jauh lebih cepat, dan pengguna dapat beralih
- Fabio Spampinato menggunakan tantangan ini sebagai pemicu untuk melakukan profiling CLI Prettier dengan benar, dan menemukan beberapa inefisiensi yang ekstrem
- Masalah-masalah tersebut direncanakan akan diperbaiki sebelum akhir tahun
Donasi dan Anggaran Maintenance Prettier
- Hadiah sayembara dan operasi berkelanjutan Prettier dimungkinkan berkat donasi besar dari berbagai individu dan perusahaan
-
Donasi Perusahaan Utama
- Indeed: $20.000
- Frontend Masters: $10.850
- Sentry: $10.529
- Salesforce: $10.025
- Airbnb: $8.426
- Cybozu: $6.086
-
Donasi Individu Utama
- Shintaro Kaneko: $1.635
- Suhail Doshi: $1.000
- icchiman: $500
- Mariusz Nowak: $270
- Benoît Burgener: $270
- Jeremy Combs: $270
- f_subal: $230
- Berkat donasi ini, selama 2 tahun terakhir Prettier terus merilis versi sambil membayar $1.500 per bulan kepada dua orang
- Fisker Cheung dan Sosuke Suzuki menjalankan peran ini
- Dengan anggaran saat ini, hanya tersisa runway 8 bulan, sehingga diperlukan donasi tambahan
- Jika Anda menggunakan Prettier dan terbantu olehnya, Anda dapat berdonasi di https://opencollective.com/prettier
- Open Collective sangat membantu operasional proyek
- Maintainer dapat bergabung tanpa memberikan informasi pribadi
- Berfungsi seperti bank dan dapat mengirim serta menerima uang dari seluruh dunia
- Menangani dokumen pajak dengan semestinya
- Prettier telah mengumpulkan total $110 ribu, dan mendistribusikan kembali $75 ribu di antaranya
- Hadiah sayembara kali ini bersifat sekali saja, tetapi tujuannya adalah menyuntikkan energi ke ekosistem code formatting untuk menciptakan pengalaman developer yang lebih baik
1 komentar
Opini Hacker News
Saya penasaran mengapa tim Prettier mendanai proyek lain, tetapi jawabannya belum terasa cukup meyakinkan
Mereka bisa saja memasang bounty untuk perbaikan Prettier; tidak jelas mengapa harus membuat proyek pesaing untuk menciptakan motivasi memperbaiki Prettier
Saya juga penasaran apakah tujuan akhirnya adalah menghentikan Prettier dan memindahkannya ke tool berbasis Rust, dan ini terlihat seperti memecah ekosistem yang sudah membingungkan menjadi lebih terfragmentasi tanpa perlu
Pertama, menulis formatter dengan Rust berbeda sifatnya dari memperbaiki codebase Prettier. Prettier tidak ditulis dalam Rust, dan karena Rust sudah terbukti sebagai pilihan yang solid untuk implementasi formatter, tujuannya sendiri lebih dekat ke menulis formatter Rust
Kedua, meminta orang menulis formatter Rust milik Prettier dengan $20k tidak terlalu menarik. Bagi developer hebat, itu kira-kira setara 100 jam kerja sehingga tidak cukup untuk menyelesaikan proyek, tetapi jika imbalannya adalah proyek yang mereka miliki sendiri, itu jauh lebih menarik
Ketiga, jika Prettier memiliki proyek pemenang, tanggung jawab pemeliharaan juga jatuh ke tim Prettier. Tim yang awalnya membuatnya akan berkurang insentifnya untuk terus memelihara, dan kompetisi pun hilang sehingga ekosistem menjadi kurang aktif
Tidak ada keuntungan langsung hanya karena seseorang memakai kode saya; saya bekerja untuk membuat solusi yang bisa diakses. Jika saya punya passion pada formatting kode JS, saya rasa saya akan cukup senang kalau seseorang memecahkan masalah itu dengan cara yang lebih cepat
Ini terlihat lebih seperti masalah keluar dari optimum lokal. Kita bisa melihat bottleneck performa terbesar dan mengatakan itu bisa diperbaiki, tetapi tanpa pembanding yang secara objektif lebih baik, sulit untuk yakin
Imitasi adalah bentuk pujian yang paling tulus, dan fakta bahwa masalah sulit yang sama bisa diselesaikan dalam bahasa lain juga menciptakan nilai melalui proses kompetisi
Tanpa alternatif nyata, tidak ada kompetisi yang utuh. Jika implementasi Rust bisa lebih cepat meski hanya memangkas kurang dari 5% test suite, itu memberi tahu banyak hal tentang batas teoretis masalah ini dibandingkan implementasi standar
Saya tidak terlalu mendalami area ini, tetapi saya rasa selalu ada nilai tak berwujud yang bisa didapat ketika ada implementasi serupa dalam bahasa lain
https://biomejs.dev/formatter/#differences-with-prettier
Biome tidak mengikuti keputusan yang sama seperti Prettier dan menemukan berbagai pain point yang bercabang, dan itu saja sudah cukup menunjukkan nilai pengembangan paralel
Mungkin karena tidak terjebak dalam apa yang disebut cara berpikir ala Prettier
Banyak orang menyebutkan alasannya, tetapi sepertinya tidak melihat bagian ini bersamaan: “Sambil menyesuaikan semua test, proyek Biome menemukan banyak bug dan keputusan meragukan di Prettier, sehingga hal itu bisa diperbaiki”
Bagi saya, ini berarti mereka bisa melakukan sanity check terhadap implementasi sendiri melalui implementasi lain
Saya benar-benar antusias dengan kabar ini
Tim Biome mencapai kompatibilitas 95% dengan Prettier dengan kecepatan yang mengejutkan https://github.com/biomejs/biome/issues/720
Berkat Rust, kecepatan formatting JavaScript bisa ditingkatkan secara signifikan, mengikuti arus formatter Python
ruffMeski tidak disebutkan di tulisan, Wasmer juga memasang bounty $2.500 untuk mengompilasi Biome ke WASIX, dan menyenangkan melihat tim itu mengerjakannya
Saya berharap Biome segera berjalan di Wasmer: https://wasmer.io/, https://wasix.org/, https://console.algora.io/challenges/prettier
Saya penasaran apakah pemahaman ini benar. Jika bisa mengakses sistem dan bukan sandbox sungguhan, saya tidak tahu apa keuntungan menjalankan kode di WASIX
Peningkatan kecepatan selalu disambut baik, tetapi saya berharap Prettier sedikit tidak terlalu dogmatis
Terutama terkait panjang baris, ia tidak membiarkan pemformatan saya apa adanya. Kode yang diformat dengan Prettier jauh lebih sulit dibaca daripada kode yang tidak diformat, dan ini masalah yang tidak saya alami dengan formatter lain seperti
rustfmtSaya tidak terlalu mengalami masalah seperti itu dan selama ini cukup puas dengan Prettier
print width: https://prettier.io/docs/en/options.html#print-widthSecara pribadi saya sama sekali tidak suka Prettier, tetapi saya suka Svelte, dan setahu saya formatter resmi Svelte memakai Prettier. Jadi saya memakai Prettier untuk Svelte, dan juga untuk beberapa hal lain
Jika pengguna berada dalam situasi bisa memilih alat, prinsip “sangat dogmatis, kalau mau konfigurasi silakan cari yang lain” bisa sangat bagus. Namun jika ia menjadi nyaris satu-satunya pilihan bagi kelompok pengguna tertentu, seharusnya ia sedikit lebih bisa dikonfigurasi
Prettier mengubah diff dengan cara yang tidak diinginkan
Jika satu anggota dihapus dari destructuring assignment sehingga panjangnya turun di bawah batas panjang baris, diff bisa menjadi
+1/-5, bukan0/-1. Reviewer sulit langsung melihat persis apa yang hilang di antara 5 baris yang dihapus dan 1 baris yang ditambahkanJika mencoba memperbaiki typo di commit sebelumnya dengan interactive rebase Git, Prettier bisa memformat ulang seluruh blok kode sehingga commit berikutnya mungkin tidak bisa diterapkan
Setelah membuat Prettier berjalan sebagai pre-commit hook, coba stage hanya sebagian perubahan dalam file; akan muncul masalah menarik lain. Saya pilih tidak usah
Saya masih kesal karena beberapa plugin eslint menyingkirkan linter yang baik-baik saja dan menggantinya dengan Prettier
Prettier terlalu memaksa, sulit diprediksi, dan menjadi satu alat tambahan yang tidak pernah saya inginkan
Yang terpikir hanya sesekali masalah konflik merge
Memang ada tren porting ke Rust, tetapi karena Prettier dijalankan setiap kali menyimpan, peningkatan kecepatan akan cukup besar
Saya berencana segera mencoba Biome, dan selamat untuk proyek Biome
Performa menjadi penting ketika menjalankan formatting pada seluruh repository
Untuk penggunaan interaktif, sebaiknya memakai proses yang tetap hidup dan sudah warm-up, sehingga waktu startup Node tidak penting. Idealnya, type checking, linting, highlighting, dan formatting berada dalam satu language service yang melakukan incremental parsing pada setiap ketikan dan memperbarui AST bersama
ruffSaya menantikan peningkatan efisiensi dan kecepatan yang berdampak luas
lint-stagedagar Prettier dijalankan hanya pada file yang berubah saat menyimpan, bukan semuanyaPada proyek besar, bedanya sangat besar
“Sekarang kita bisa fokus pada aspek penting berikutnya: performa. Prettier pada dasarnya tidak pernah cepat, tetapi cukup cepat untuk sebagian besar penggunaan. Hal ini selalu terasa kurang memuaskan, jadi saya ingin melakukan sesuatu. Apa cara yang lebih baik daripada kompetisi yang bersahabat. Pada 9 November, saya memasang hadiah $10k untuk proyek Rust yang bisa lolos 95% test suite Prettier”
Saya tidak paham bagaimana fakta bahwa sesuatu ditulis dengan Rust otomatis menghasilkan performa lebih baik. Orang bisa saja sekadar men-transpile codebase yang ada ke Rust dan menerima hadiahnya
Karena kalau benar-benar sederhana, tidak perlu diberi keterangan seperti itu
Dalam kasus ini, saya tidak tahu apakah men-transpile codebase JavaScript ke Rust itu sederhana. Kedua bahasa punya model berpikir, library yang digunakan, dan cara menulis kode yang cukup berbeda, dan meskipun ada transpiler JS-to-Rust, saya ragu apakah cukup tangguh untuk dipakai pada codebase sebesar Prettier
Tergantung pekerjaannya dan tidak selalu begitu, tetapi parser yang banyak melakukan manipulasi string jelas termasuk contoh kasusnya
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/fasta.html
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/knucleotide.html
https://twitter.com/Vjeux/status/1722769322299609565
Saya tidak yakin, dan sepertinya vjeux ikut-ikutan tren Rust
Proyek pemenang, Biome, adalah fork atau pergantian nama dari proyek Rome yang dimulai beberapa tahun lalu oleh Sebastian McKenzie, pembuat Babel
Sepertinya sebmck absen selama sekitar setahun terakhir, dan karena banyak hak akses ke resource proyek hanya dimiliki olehnya sehingga kontributor tidak bisa memperbaruinya, proyek itu di-fork
Saya berharap ia baik-baik saja, dan terlepas dari itu, saya senang proyek Biome tampaknya berjalan dengan baik
Saya tidak paham kenapa harus Rust
Bukankah cukup kalau sekadar “lebih cepat”? Apakah implementasi Rust benar-benar cepat? Saya juga ragu apakah keamanan memori atau kebocoran memori benar-benar penting untuk program seperti Prettier
Jadi sampai taraf tertentu, ini mungkin semacam tantangan bounty: “kalau memang begitu, buktikan sendiri”
Saya penasaran apakah benchmark Biome ada di suatu tempat
Tepatnya seberapa jauh performanya lebih baik daripada Prettier?
Mereka mengklaim 25x, tetapi angkanya sudah lama, jadi saya tidak tahu apakah masih bisa dipercaya apa adanya sekarang setelah banyak fitur ditambahkan. Meski begitu, kalau memang mendekati itu, ini pencapaian yang luar biasa