7 poin oleh GN⁺ 2025-12-19 | 1 komentar | Bagikan ke WhatsApp
  • 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
    Iklan
  • 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
    Iklan
  • 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

 
GN⁺ 2025-12-19
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

    • Jika digabungkan dengan spesifikasi WHATWG dan html5lib tests, hasilnya jadi jauh lebih kuat
      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
    • Kemarin saat mem-porting dari Python ke Rust, LLM sama sekali tidak bisa menemukan masalahnya. Pada akhirnya, begitu saya menyalin sumber Python ke proyek Rust untuk dibandingkan, masalahnya langsung terpecahkan
      Sepertinya cukup kuat dalam pattern matching lintas bahasa. Jika dilihat dari sudut pandang latent space, itu terasa masuk akal
    • Langkah berikutnya tampaknya adalah mengubah pengujian yang bergantung pada proyek menjadi format independen, memverifikasinya terhadap sumber asli, lalu melakukan porting
    • LLM sangat kuat untuk porting lintas bahasa. Di benchmark seperti MLE-Bench, agen sudah mencapai tingkat mampu menyelesaikan kompetisi Kaggle hingga peringkat peraih medali dalam 24 jam
      Terasa seperti zaman AI yang membuat AI, seperti dalam makalah AI4AI, sudah benar-benar dimulai
    • Karena alasan inilah saya memutuskan untuk tidak membuka pengujian proyek saat ini. Biasanya saya merilisnya sebagai open source, tetapi kali ini saya sedang mempertimbangkannya kembali
  • 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

    • Yang mengejutkan, parser Java milik Firefox ternyata masih dipelihara sampai sekarang
      Jika melihat folder terkait dan commit terbaru, ada pembaruan juga pada bulan November
    • Ada banyak cara yang lebih baik, tetapi saya menyukai desain API Emil sehingga menjadikan JustHTML sebagai dasar
      Rasanya menarik untuk mencoba mem-porting library yang ia bangun lewat lebih dari 1.000 commit ke Python hanya dalam satu malam
    • Dari sudut pandang hukum, kode yang dipindahkan dengan mengganti bahasa tetap merupakan karya turunan
      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
    • Dari sisi debugging dan audit, saya rasa menulis dalam JavaScript lebih baik
      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

    • Tetapi mungkin suatu hari nanti akan datang dunia di mana membuat ulang dari nol lebih murah dan lebih cepat daripada memelihara
  • 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%

    • Ini adalah masalah penanganan namespace. <svg title> adalah tag khusus SVG, jadi parser harus mengenalinya sebagai itu
      Akan 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%"

    • Namun tulisan itu terlalu menyederhanakan. Eksperimen Simon bisa dilakukan karena ada 9.000 pengujian yang independen dari bahasa dan desain API yang sudah ada
      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

    • Apa pun lisensinya, hak cipta harus dihormati, dan porting yang dibuat LLM juga dianggap sebagai karya turunan
    • Pengembang yang memilih GPL memiliki niat yang jelas, jadi mencoba mengakali lisensi dengan memanfaatkan LLM berarti merusak semangat tersebut
  • Ada juga kritik bahwa “baru menanyakan soal masalah hukum dan etika setelah membuatnya dengan cara seperti ini adalah tindakan yang tidak bertanggung jawab”

    • Tetapi saya sengaja mengambil risiko itu untuk memicu diskusi
      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

    • Bahkan muncul pikiran apakah seluruh aplikasi bisa dibuat hanya dari pengujian
  • 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

    • Tetapi ini adalah kasus ideal berupa porting proyek yang sudah ada. Membuat library baru dari nol tetap hal yang berbeda
      Meski begitu, akan ada perubahan ekonomi besar untuk bahasa dengan ekosistem kecil
    • Konsep “software engineer” tidak akan hilang, hanya peran dan ekspektasinya yang akan berubah
    • Ada juga bantahan, “apa kita seharian cuma melakukan porting bahasa?” Realitasnya jauh lebih kompleks
  • Tidak semua porting AI berhasil. Ada juga contoh kegagalan → The port I couldn’t ship

    • Keberhasilan sangat dipengaruhi oleh rasio pengujian terhadap source code
      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