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 Link personalizado) 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.