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.