Ludic: Nuevo framework para Python con soporte perfecto para Htmx
Impresiones generales sobre Ludic
- Framework ligero de Python que construye HTML mediante “componentes”, se integra estrechamente con htmx y utiliza Starlette y tipado moderno.
- Algunos consideran que el ejemplo de componente (un
Linkpersonalizado) ilustra bien el estilo; otros lo encuentran confuso o poco convincente como primera impresión y quieren una contextualización y documentación más claras. - Varios comentaristas valoran la idea de componentes HTML reutilizables y seguros en cuanto a tipos en Python, y ven beneficios de productividad.
HTML en Python vs plantillas
- Una división recurrente: a algunos no les gusta “meter HTML de contrabando en Python” (o JavaScript) y prefieren las plantillas tradicionales y la separación de responsabilidades.
- Otros argumentan que incrustar HTML en Python:
- Permite análisis estático (mypy, linters, formateadores, tests) sobre las “plantillas”.
- Mejora la reutilización y la componibilidad frente a muchos motores de plantillas.
- Hace más explícitos los efectos secundarios (sin llamadas ocultas a la BD en las plantillas).
- Los críticos se preocupan por el acoplamiento estrecho entre el marcado de front-end y la lógica de back-end, así como por la mantenibilidad a largo plazo, especialmente cuando los ejemplos mezclan acceso a BD con renderizado.
Sintaxis, tipado y representaciones estructuradas
- Debate sobre usar f-strings frente a representar HTML como datos/objetos estructurados (estilo SXML/hiccup).
- Quienes prefieren objetos estructurados quieren facilidad para recorrerlos, hacer pattern matching y obtener mejores herramientas.
- Restricciones del lado del autor: quiere mantenerse dentro del tipado estándar de Python; señala la falta de sistemas de macros como los de Rust o de tipado al estilo Yew/JSX.
Preocupaciones sobre async/ASGI
- Algunos dicen haber salido “quemados” por el async de Python: errores sorprendentes, depuración difícil y problemas de concurrencia.
- Los servidores async de un solo hilo al estilo aiohttp pueden sufrir head-of-line blocking y desaprovechar el hardware multinúcleo.
- Otros señalan que la concurrencia es difícil en cualquier ecosistema, no algo exclusivo de Python.
Comparaciones con otras herramientas de generación de HTML
- Se citan muchas ideas similares: dominate, hotmetal, neat-html, htpy, fast_html, Mixt/pyxl, yattag, etc., además de análogos fuera de Python (Elm, hiccup, kotlinx-html de Kotlin).
- Algunos reportan mejoras significativas de productividad y velocidad frente a plantillas tipo Jinja.
Papel de htmx y límites de integración
- htmx es elogiado por su productividad, pero se lo caracteriza como un “appliance”, no como un framework completo.
- Funciona bien cuando se usa únicamente mediante atributos HTML y fragmentos renderizados en el servidor.
- Integrar JavaScript del lado del cliente y estado más complejos (React, jQuery, etc.) puede ser incómodo por las interacciones del ciclo de vida; algunos sugieren Alpine.js, Stimulus o elementos personalizados para interactividad ligera.
Escepticismo sobre nuevos frameworks
- Algunos expresan cansancio ante los incesantes nuevos frameworks web y temen que envolver htmx en abstracciones más grandes reintroduzca la complejidad que HTMX intenta evitar.
- Parte de la preferencia se inclina por bibliotecas mínimas y componibles frente a frameworks de pila completa y con opinión marcada.