Porting JustHTML dari Python ke JavaScript: Selesai dalam 4,5 Jam dengan Codex CLI dan GPT-5.2
(simonwillison.net)- Kasus porting penuh parser HTML5 JustHTML dari Python ke JavaScript, diselesaikan dalam sekitar 4,5 jam menggunakan Codex CLI dan GPT-5.2
- Library baru JustJSHTML adalah parser HTML5 tanpa dependensi yang lulus 9.200 pengujian dari html5lib-tests sambil mereplikasi desain API asli secara utuh
- Seluruh proses dilakukan dengan 8 prompt dan beberapa perintah lanjutan, dengan GPT-5.2 menghasilkan otomatis 9.000 baris kode dan 43 commit
- Proyek ini selesai dalam bentuk open source yang lengkap, termasuk auto-commit, pengujian, dokumentasi, dan pembuatan halaman playground
- Eksperimen ini kembali menyoroti produktivitas nyata agen coding berbasis LLM, sekaligus memunculkan pertanyaan baru soal hak cipta, etika, dan reliabilitas
Gambaran proyek
- JustHTML adalah parser HTML5 yang patuh standar yang dikembangkan oleh Emil Stenström, ditulis dalam Python dan merupakan implementasi yang lulus seluruh html5lib-tests
- html5lib-tests adalah standar pengujian interoperabilitas untuk parser HTML5, digunakan oleh berbagai proyek seperti html5ever milik Servo
- Simon Willison memutuskan untuk melakukan porting proyek ini sendiri ke JavaScript, memanfaatkan Codex CLI dan GPT-5.2 dengan intervensi manual seminimal mungkin
- Hasilnya, JustJSHTML, dapat berjalan di browser maupun lingkungan Node.js dan ditulis dalam JavaScript murni tanpa dependensi eksternal
Proses pengembangan
- Di lingkungan lokal, ia meng-clone repository justhtml dan html5lib-tests, lalu membuat direktori baru justjshtml
- Codex CLI dijalankan dengan opsi
--yolo(melewati persetujuan dan sandbox) untuk menggunakan model GPT-5.2 - Pada prompt pertama, model diminta menganalisis kode Python yang ada dan menulis spesifikasi API JavaScript baru (
spec.md)- Sebagai tahap awal (Milestone 0.5), model diminta mengimplementasikan versi yang lulus pengujian parsing dokumen HTML sederhana
- Setelah itu, pengembangan otomatis dilanjutkan secara bertahap melalui perintah seperti “Implement Milestone 0.5” dan “commit and push often”
- GitHub Actions dikonfigurasi untuk menjalankan pengujian pada setiap commit
- Hasil akhirnya mencakup 43 commit, 9.000 baris kode, dan lulus 9.200 pengujian
Hasil dan artefak
- Codex CLI menggunakan total 2.089.858 token, dan dijalankan tanpa biaya tambahan dalam langganan bulanan ChatGPT Plus
- Library yang selesai mencakup fitur berikut
- Ekstensi API seperti stream(), query()/matches(), dan toMarkdown()
- skrip unit test no-deps dan integrasi CI
- Perbaikan bug rinci seperti kesalahan penanganan tag
- playground.html dibuat secara otomatis sehingga bisa langsung diuji di browser
- Dapat dijalankan melalui GitHub Pages di https://simonw.github.io/justjshtml/playground.html
- README.md mencakup cara penggunaan, proses build, serta contoh untuk lingkungan Node.js dan HTML
Implikasi penggunaan LLM
- GPT-5.2 mampu menyelesaikan ratusan pemanggilan alat dan pekerjaan berkelanjutan selama berjam-jam dengan pengawasan minimal
- Jika definisi masalah bisa dibuat dengan pendekatan test-driven, agen coding dapat secara mandiri menghasilkan kode dengan tingkat kematangan tinggi
- Pekerjaan yang terstruktur seperti porting antarbahasa sangat efisien untuk dikerjakan oleh LLM
- Biaya pembuatan kode pada praktiknya turun ke tingkat 'hampir gratis', meski biaya pemeliharaan kode yang tervalidasi tetap ada
Pertanyaan etis dan hukum yang muncul
- Apakah ada pelanggaran hak cipta terhadap kode sumber Rust dan Python asli
- Masalah kepemilikan hak cipta atas kode yang dihasilkan LLM
- Dampak model pengembangan seperti ini terhadap ekosistem open source
- Reliabilitas kode yang dihasilkan otomatis dan tanggung jawab penggunaannya di produksi
- Apakah kualitasnya dapat dibandingkan dengan kode yang dikembangkan berbulan-bulan oleh pakar manusia
Kesimpulan
- Kasus ini menunjukkan tahap baru dalam otomatisasi pemrograman dan membuktikan potensi praktis agen coding AI
- Pada saat yang sama, kasus ini menyisakan tantangan berupa perlunya standar hukum dan etika yang jelas serta pendefinisian ulang cara kolaborasi open source
1 komentar
Komentar Hacker News
Hal yang paling menarik dalam kasus ini adalah bahwa proyek porting library berbasis pengujian yang independen dari bahasa kini menjadi jauh lebih realistis
Intinya adalah kumpulan lebih dari 9.000 pengujian parser HTML5 bernama html5lib-tests. html5ever milik Servo (Rust), JustHTML milik Emil (Python), dan versi JavaScript saya semuanya menggunakan pengujian ini
Dengan agen coding, saya bisa mem-porting kode Python ke JavaScript dan menjalankannya berulang secara otomatis sampai semua pengujian lolos
Test suite yang terstandarisasi seperti ini jarang ada, tetapi di tempat yang memilikinya, potensinya sangat besar
Kemarin saya membuat versi bertipe di OCaml hanya dalam beberapa jam, dan menjalankan agen untuk otomatis membangun HTML5 validator murni OCaml
Saya sedang membuat validator HTML5 OCaml dengan dependensi minim dengan menggabungkan html5lib tests dan validator tests
Rasanya seperti validasi bentuk terbalik — proses mengerucut dari fakta-fakta yang tersebar (pengujian) menuju spesifikasi yang terstruktur
Sepertinya cukup kuat dalam pattern matching lintas bahasa. Jika dilihat dari sudut pandang latent space, itu terasa masuk akal
Terasa seperti zaman AI yang membuat AI, seperti dalam makalah AI4AI, sudah benar-benar dimulai
Sebenarnya parser HTML5 Firefox awalnya ditulis dalam Java, lalu kemudian dikonversi secara semi-otomatis ke C++ untuk Gecko
Porting JustHTML sendiri adalah eksperimen yang bagus, tetapi secara pribadi saya rasa memindahkan kode Java ke TypeScript akan lebih produktif
Jika melihat folder terkait dan commit terbaru, ada pembaruan juga pada bulan November
Rasanya menarik untuk mencoba mem-porting library yang ia bangun lewat lebih dari 1.000 commit ke Python hanya dalam satu malam
Jika lisensinya MIT, maka pemberitahuan hak cipta asli dan teks lisensi harus tetap disertakan apa adanya
Artinya, yang benar adalah menambahkan informasi hak cipta Anda sendiri di bawah baris hak cipta asli
Kelebihan TypeScript adalah peningkatan developer experience, tetapi untuk kode hasil generasi mesin, kebutuhan itu berkurang
Terkait ungkapan “kode itu nyaris gratis”, biaya sebenarnya bergantung pada apakah manusia bisa memahami dan memodifikasi kode tersebut
Kode yang dibuat LLM pun pada akhirnya tetap memerlukan campur tangan manusia ketika menghadapi bug yang rumit atau masalah konteks
Jika melihat hasil pengujian di repositori asli, semuanya lolos untuk 9.000 pengujian html5lib-tests
Namun setiap browser memiliki cara pemrosesan yang berbeda. Misalnya, selectolax hanya 68% menurut html5lib, tetapi jika dibandingkan dengan Chrome, kecocokannya lebih dari 90%
<svg title>adalah tag khusus SVG, jadi parser harus mengenalinya sebagai ituAkan menarik juga jika pengujian yang sama dijalankan di Chrome
Ini juga selaras dengan tulisan yang baru-baru ini muncul di HN, "Biaya perangkat lunak turun 90%"
Sebagian besar proyek tidak memiliki kondisi seperti ini, jadi sulit untuk digeneralisasi
Soal hak cipta dan etika, saya sedang mem-porting proyek berlisensi MIT ke versi Rust/Python dengan Claude Code
Saya menganggap semangat open source adalah memperbaiki kode yang sudah ada sambil memajukan ekosistem
Namun, proyek GPL sama sekali tidak saya porting
Ada juga kritik bahwa “baru menanyakan soal masalah hukum dan etika setelah membuatnya dengan cara seperti ini adalah tindakan yang tidak bertanggung jawab”
Menurut saya saat ini penting untuk menunjukkan bahwa hal seperti ini “bukan hanya mungkin, tetapi juga sangat mudah”
Dengan memakai pendekatan oracle, ini tetap praktis bahkan tanpa pengujian standar
Anda bisa menangkap input/output program asli dan menjadikannya pengujian, lalu memakai alat seperti Hypothesis untuk menghasilkan ribuan kasus secara otomatis
Sekarang kita memasuki masa ketika test suite itu sendiri menjadi aset utama, bukan lagi codebase
GPT-5.2 menghabiskan $28.31 untuk menghasilkan 9.000 baris kode JavaScript lengkap
Dengan efisiensi seperti ini, tampaknya dalam 5–10 tahun peran developer junior dan mid-level akan sangat berkurang
Lihat tautan perhitungan biaya
Meski begitu, akan ada perubahan ekonomi besar untuk bahasa dengan ekosistem kecil
Tidak semua porting AI berhasil. Ada juga contoh kegagalan → The port I couldn’t ship
Akan sangat menarik jika terkumpul data tentang proyek mana yang mudah, pendekatan mana yang lebih cepat, dan seterusnya
Akan sangat menarik jika Simon melakukan eksperimen perbandingan seperti itu