- Caso de una portación completa del parser HTML5 JustHTML de Python a JavaScript, implementada en unas 4.5 horas con Codex CLI y GPT-5.2
- La nueva librería JustJSHTML es un parser HTML5 sin dependencias que pasa 9,200 pruebas de html5lib-tests y reproduce intacto el diseño original de la API
- Todo el proceso se realizó con 8 prompts y algunas órdenes de seguimiento, y GPT-5.2 generó automáticamente 9,000 líneas de código y 43 commits
- El proyecto quedó terminado como un open source completo, incluyendo commits automáticos, pruebas, documentación y generación de una página playground
- Este experimento vuelve a plantear preguntas sobre la productividad real de los agentes de programación basados en LLM junto con problemas de copyright, ética y confiabilidad
Resumen del proyecto
- JustHTML es un parser HTML5 compatible con el estándar desarrollado por Emil Stenström, escrito en Python y una implementación que pasa toda la suite de html5lib-tests
- html5lib-tests es el estándar de pruebas de interoperabilidad entre parsers HTML5, usado en distintos proyectos como html5ever de Servo
- Simon Willison decidió portar directamente este proyecto a JavaScript, usando Codex CLI y GPT-5.2 para hacerlo con la menor intervención manual posible
- El resultado, JustJSHTML, funciona tanto en navegador como en Node.js y está escrito en JavaScript puro sin dependencias externas
Proceso de desarrollo
- En el entorno local clonó los repositorios justhtml y html5lib-tests, y creó un nuevo directorio llamado justjshtml
- Ejecutó Codex CLI con la opción
--yolo (omite aprobaciones y sandbox) para usar el modelo GPT-5.2
- En el primer prompt le indicó que analizara el código existente en Python y redactara una nueva especificación de API en JavaScript (
spec.md)
- Como etapa inicial (Milestone 0.5), pidió implementar una versión que pasara una prueba simple de parseo de documento HTML
- Después, el desarrollo continuó automáticamente con instrucciones por etapas como “Implement Milestone 0.5” y “** commit and push often**”
- Configuró GitHub Actions para ejecutar pruebas en cada commit
- El resultado final fue de 43 commits, 9,000 líneas de código y 9,200 pruebas superadas
Resultados y entregables
- Codex CLI usó un total de 2,089,858 tokens, y se ejecutó sin costo adicional dentro de la suscripción mensual de ChatGPT Plus
- La librería terminada incluye las siguientes funciones
- Extensiones de API como stream(), query()/matches() y toMarkdown()
- Script de pruebas unitarias sin dependencias e integración con CI
- Corrección de bugs puntuales, como un error en el manejo de la etiqueta
<br>
- También generó automáticamente playground.html, que permite probarla directamente en el navegador
- El archivo README.md incluye ejemplos de uso, proceso de build y ejemplos para entornos Node.js y HTML
Implicaciones del uso de LLM
- GPT-5.2 completó con supervisión mínima cientos de llamadas a herramientas y varias horas de trabajo continuo
- Cuando es posible definir el problema con un enfoque guiado por pruebas, un agente de programación puede generar código de alta calidad de forma autónoma
- Las tareas estructuradas como la portación entre lenguajes son especialmente eficientes para un LLM
- El costo de generar código ha bajado en la práctica a un nivel casi gratuito, aunque el costo de mantener código validado sigue existiendo
Preguntas éticas y legales planteadas
- Si hubo o no infracción de copyright sobre el código fuente original en Rust y Python
- El problema de a quién pertenece el copyright del código generado por un LLM
- El impacto que este tipo de desarrollo puede tener en el ecosistema open source
- La confiabilidad del código generado automáticamente y la responsabilidad de usarlo en producción
- Si es posible compararlo en calidad con código desarrollado durante meses por expertos humanos
Conclusión
- Este caso muestra una nueva etapa de la automatización de la programación y demuestra el potencial práctico de los agentes de programación con IA
- Al mismo tiempo, deja como tarea pendiente la necesidad de establecer criterios legales y éticos y de redefinir la forma de colaboración en open source
1 comentarios
Comentarios en Hacker News
Lo más interesante de este caso es que un proyecto de portabilidad de librerías basado en pruebas independientes del lenguaje ahora se volvió mucho más viable en la práctica
La clave es html5lib-tests, una colección de más de 9,000 pruebas para parsers de HTML5. Tanto html5ever de Servo (Rust), JustHTML de Emil (Python) y también mi versión en JavaScript usan estas pruebas
Pude usar un agente de código para portar el código Python a JavaScript y hacerlo iterar automáticamente hasta pasar todas las pruebas
Este tipo de suite de pruebas estandarizada es poco común, pero donde existe muestra un potencial enorme
Ayer hice en unas horas una versión tipada en OCaml, y dejé corriendo un agente para que construya automáticamente un validador HTML5 puro en OCaml
Estoy combinando las pruebas de html5lib con las pruebas del validador para crear un validador HTML5 en OCaml con pocas dependencias
Se siente como una especie de validación de tipos al revés: converger desde hechos dispersos (las pruebas) hacia una especificación estructurada
Parece bastante fuerte para el emparejamiento de patrones entre lenguajes. Desde la perspectiva del espacio latente, tiene sentido
Da la sensación de que la era en la que la IA crea IA, como en el paper AI4AI, ya empezó
De hecho, el parser HTML5 de Firefox originalmente fue escrito en Java, y después se convirtió de manera semiautomática a C++ para Gecko
Portar JustHTML en sí fue un buen experimento, pero personalmente creo que habría sido más productivo mover el código Java a TypeScript
Si ves la carpeta correspondiente y los commits recientes, hubo actualizaciones incluso en noviembre
Me pareció interesante portar en una tarde a Python una librería que él construyó con más de 1,000 commits
Si tiene licencia MIT, hay que incluir tal cual el aviso de copyright y el texto de licencia del original
Es decir, lo correcto es agregar tu información de copyright debajo de la línea de copyright original
La ventaja de TypeScript está en mejorar la experiencia del desarrollador, pero en código generado por máquina esa necesidad disminuye
Sobre la frase “el código es casi gratis”, el costo real depende de si las personas pueden entender y modificar ese código
Incluso el código hecho por LLM termina necesitando intervención humana cuando aparecen bugs complejos o problemas de contexto
Si miras los resultados de prueba del repositorio original, pasa las 9,000 pruebas de html5lib-tests
Pero cada navegador procesa las cosas de manera distinta. Por ejemplo, selectolax marca 68% según html5lib, pero comparado con Chrome coincide en más del 90%
<svg title>es una etiqueta propia de SVG, así que el parser tiene que reconocerlo como talSería interesante correr también las pruebas en Chrome
También conecta con el post reciente en HN "El costo del software cayó 90%"
La mayoría de los proyectos no tienen esas condiciones, así que es difícil generalizar
Sobre derechos de autor y cuestiones éticas, yo estoy portando proyectos con licencia MIT a versiones en Rust/Python usando Claude Code
Creo que el espíritu del open source está en mejorar código existente y hacer crecer el ecosistema
Pero nunca porto proyectos GPL
También hubo críticas diciendo que “es irresponsable preguntar por los problemas legales y éticos recién después de hacerlo así”
Ahora me parece importante mostrar que esto “no solo es posible, sino sorprendentemente fácil”
Usar un enfoque oráculo también es práctico aunque no existan pruebas estándar
Puedes capturar las entradas y salidas del programa original y usarlas como pruebas, y con herramientas como Hypothesis generar automáticamente miles de casos
Estamos entrando en una era donde, más que el codebase, el activo principal pasa a ser la suite de pruebas misma
GPT-5.2 costó $28.31 para generar 9,000 líneas completas de código JavaScript
Con esa eficiencia, parece que en 5 a 10 años el papel de los desarrolladores junior e intermedios se va a reducir mucho
Ver este cálculo de costos
Aun así, para los lenguajes con ecosistemas pequeños sí va a haber un cambio económico grande
No todos los ports con IA son exitosos. También hay casos fallidos → The port I couldn’t ship
Si se acumulan datos sobre qué proyectos son fáciles y qué enfoques son más rápidos, saldría un análisis muy interesante
Sería realmente interesante que Simon hiciera ese tipo de experimentos comparativos