Plain – a web framework for building products with Python

What Plain Is

  • Widely recognized as a direct fork of Django; some missed this initially because it’s prominent on the marketing site but absent from the GitHub README.
  • Code examples and structure are very close to Django; many commenters see it as “Django + a curated set of packages and defaults.”

Motivations for the Fork

  • The “About” page describes frustration with Django’s slow, committee-driven process, strict deprecation policies, and difficulty landing larger changes.
  • The fork is framed as a “what if” experiment: moving faster, breaking compatibility when useful, and rethinking Django’s 2000s-era assumptions.
  • Several readers say these motivations are understandable but still don’t see concrete, architectural changes that truly require a fork.

Concerns About Forking Django

  • Major worry: splitting community effort and losing Django’s core strengths—maturity, security processes, and an enormous ecosystem of third-party apps.
  • Fear that Plain will diverge enough that upstreaming Django changes, or sharing extensions, becomes impractical; Plain’s own FAQ says extensions won’t be compatible.
  • Some see the fork as a marketing/commercial move (backed by a SaaS) in a broader “Vercel-playbook” trend; others counter that this is legitimate experimentation.

Perceived Gaps in Django

  • Repeated complaints: lack of first-class REST/HTTP APIs, background tasks, modern auth/authorization for multi-tenant SaaS, richer template/component primitives, and better typing.
  • Counterpoint: many of these are intentionally left to third‑party packages; what some call “stagnation,” others call “maturity and stability.”

Plain’s Features and DX Choices

  • Praised items: built-in structured logging, opinionated integrations, HTMX-friendly approach.
  • Criticisms: missing bits (e.g., non-DB cache backends), incomplete docs for some packages, intrusive dev setup (auto mkcert + /etc/hosts changes, SSL by default).

Typing and Modern Stack Debates

  • Thread branches into debates on static typing in Python vs using a statically typed language, and Django’s partial typing support via stubs.
  • Broader discussion on monolith vs JSON-API backends, async frameworks, and comparisons with Rails, Laravel, FastAPI, and lighter Python stacks.

Overall Sentiment

  • Mixed but leaning skeptical: many appreciate the ambition and ideas, but would prefer them as Django packages/templates rather than a hard fork that sacrifices compatibility.