Ludic: New framework for Python with seamless Htmx support

Overall impressions of Ludic

  • Lightweight Python framework that builds HTML via “components,” integrates tightly with htmx, and uses Starlette and modern typing.
  • Some find the component example (a custom Link) illustrative of the style; others find it confusing or underwhelming as a first impression and want clearer framing and docs.
  • Several commenters like the idea of type-safe, reusable HTML components in Python and see productivity benefits.

HTML-in-Python vs templates

  • A recurring split: some dislike “sneaking HTML into Python” (or JavaScript) and prefer traditional templates and separation of concerns.
  • Others argue embedding HTML in Python:
    • Enables static analysis (mypy, linters, formatters, tests) over “templates.”
    • Improves reuse and composability versus many template engines.
    • Makes side effects more explicit (no hidden DB calls in templates).
  • Critics worry about tight coupling of front-end markup and back-end logic and long-term maintainability, especially as examples mix DB access with rendering.

Syntax, typing, and structured representations

  • Debate over using f-strings versus representing HTML as structured data/objects (SXML/hiccup-style).
  • Proponents of structured objects want easy traversal, pattern-matching, and better tooling.
  • Author-side constraints: wants to stay within standard Python typing; notes lack of macro systems like Rust’s Yew/JSX-style typing.

Async/ASGI concerns

  • Some report being “burned” by Python async: surprising bugs, difficult debugging, and concurrency pitfalls.
  • aiohttp-style single-threaded async servers can suffer from head-of-line blocking and underuse multi-core hardware.
  • Others note concurrency is hard in any ecosystem, not unique to Python.

Comparisons to other HTML generation tools

  • Many similar ideas cited: dominate, hotmetal, neat-html, htpy, fast_html, Mixt/pyxl, yattag, etc., plus non-Python analogs (Elm, hiccup, Kotlin’s kotlinx-html).
  • Some report significant productivity and speed gains over Jinja-like string templates.

htmx’s role and integration limits

  • htmx is praised for productivity but characterized as an “appliance,” not a full framework.
  • Works well when used purely via HTML attributes and server-rendered snippets.
  • Integrating more complex client-side JS and state (React, jQuery, etc.) can be awkward due to lifecycle interactions; some suggest Alpine.js, Stimulus, or custom elements for light interactivity.

Skepticism about new frameworks

  • A few express fatigue with ever-new web frameworks and worry that wrapping htmx in larger abstractions reintroduces complexity HTMX tries to avoid.
  • Preference from some for minimal, composable libraries over opinionated, full-stack frameworks.