Plain – a web framework for building products with Python

2025-03-293:55310160plainframework.com

Plain is a fork of Django, bringing new ideas to established patterns in the Python landscape. Build a new business, an internal tool, or something for yourself.

Plain is a fork of Django, bringing new ideas to established patterns in the Python landscape. Build a new business, an internal tool, or something for yourself.

Plain was forked inside of PullApprove — a revenue-generating SaaS with Fortune 500 customers.

Local development with a single command. Go to production with dashboards, feature flags, and more.

Plain is split into multiple first-party packages. Major features are optional and new ideas can evolve independently.

Building blocks for products

Authentication you can trust (and host yourself)

The backbone of your back office

A tailored local development experience

Modern tools for modern user interfaces


Read the original article

Comments

  • By miiiiiike 2025-03-298:502 reply

    Related, "Django's REST (Framework) Problem" — https://news.ycombinator.com/item?id=43510495

    I'm not sure that many people who rely on Django Rest Framework are aware that last month the bug tracker was made private and the project is looking for new maintainers.

    I love Django but the project needs to go through something similar to Angular's renaissance (and Angular needs to learn from Django docs.) I'd love to help but it seems that most of the efforts to address the issue have been stalled in committee.

    A fork probably isn't the answer but something needs to be done. If it's a money issue, pass the plate! Whenever I talk to Django devs about contributing the feeling that I'm left with is that I could put in years of work, jump through every hoop, and at the end of it they may still say "We're not sure."

    The feeling that I've gotten is that the Django dev community is very small and tight-knit. Whenever I've talked about helping out on various projects I've walked away with the feeling that their friend is handling it and they'd rather leave them to it. The community has been trained, through years of reinforcement, to wait instead of getting involved.

    • By grahameb 2025-03-2917:262 reply

      Yep – I've been using Django since 2007. The big win used to be the admin, ORM, database migrations... but now oddly enough a lot of that has become a pain. I'm someone who knocks small solutions together for fun or to scratch and itch, so I'm looking for low maintenance. The problem I need solved has shifted and now Django is too much boilerplate (APIs and models are perhaps too distant as concepts), and too much maintenance work. Auth is perhaps underemphasised as an area for improvement. The built in auth isn't really fit for purpose anymore, and the various extensions for federation / passkeys take work to integrate and change a lot.

      None of this is to write off Django or the people who've worked on it: I'm genuinely grateful for the framework. It's let me build open source things that help people out. The typical problems most of us standing up small-to-medium solutions need solved by a backend have just shifted underneath the framework, and it hasn't had the resourcing to keep up.

      I've been looking at Pocketbase as a replacement. I think I'd prefer something that uses Postgres rather than sqlite, but it's pretty awesome as a solution for those two or three day projects, and the maintenance burden looks like it's pretty low on an ongoing basis.

      • By dplgk 2025-04-0520:14

        What's become a pain about DB migrations? They've barely changed and they are still so amazingly useful that you forget it's something you have to think about until you move to another framework that doesn't have them.

      • By throwaway519 2025-03-300:42

        Django dying the Drpal death of becoming a generalised case of nothing but itself?

        Try Flask.

    • By simonw 2025-03-2911:152 reply

      Jacob Kaplan-Moss gave a great talk at the last DjangoCon about money - what Django would do with an increased budget and how to get there: https://jacobian.org/2024/oct/8/dsf-one-million/

      Video: https://www.youtube.com/watch?v=5nS1SSuHk9I

      • By miiiiiike 2025-03-2912:531 reply

        I saw the talk last year. Let's do it.

        If I had $100,000 to spare I would give it to Django as an unrestricted donation. It would be worth every penny. But I'm a solo-dev and don't have that kind of cash on me.

        Here's what I can do. I will send you $1,000 today if you can get something like a `django.contrib.rest` package (i.e. official rest api support) on the roadmap and secure matching funds. I'll make it a recurring donation if development gets going.

        I don't want to support other REST libraries because there's no consensus. One app ships DRF views, another Ninja, and that one over there still has a Tastypie dep. Remember Piston? Using multiple rest packages means that figuring out how to create a consistent error format, etc is an exercise left to the reader.

        Django makes great design decisions that the majority of devs can get behind. I'd love to have an officially supported REST package that feels like the rest of Django.

        `django-tasks` is a good recent example. I was reading through the code a few months ago and I was impressed.

        • By miiiiiike 2025-03-2913:292 reply

          Another project I'd fund: Making Django an async-first (not async-only) framework over the next decade. It's easier to mix sync code into async than the other way around.

          • By JodieBenitez 2025-03-309:08

            If one can make it without breaking the API too much, why not.

            The #1 reason I use Django is stability. I have projects that span 4 major Django version without any significant break. That's quite a feature.

          • By zzzeek 2025-03-2919:171 reply

            So glad that's not actually true so I didn't have to rewrite sqlalchemy from scratch

            • By miiiiiike 2025-03-2920:17

              It's more straightforward to call a sync function from an async function than the other way around. That's a pretty uncontroversial statement. Adding async support to a library doesn't mean starting starting over.

              I'm not fully understanding your thought. Can you say more?

      • By miiiiiike 2025-03-2914:151 reply

        I just setup a $83/month ~$1,000/year recurring donation.

        https://www.djangoproject.com/fundraising/ if anyone else depends on Django.

        • By jimmydoe 2025-03-2917:20

          thanks for sharing this, just donated too.

          I read thru Plain's doc, it is not bad at all, but I really hope Django can be much better than it is now.

  • By mariocesar 2025-03-2915:121 reply

    I've some mixed feelings about this fork. On the one hand, I get the motivations, there is alway a lot of value in experimenting outside of a legacy project. But at the same time, I cant help but feel uneasy seeing something I've deeply respected and used on for years being split off in this way, "fork of Django" is a big statement.

    Part of that discomfort comes from a sense that the collective effort into Django is being sidestepped rather than built upon. It feels like a "saas-fication" effort, like Ruff, Docker, Terraform, etc but instead of going from creating something new it replaces something that already works. I worry about the potential for a more commercial or narrow direction that doesn't embody honestly the open, thoughtful mission thats made Django so special.

    I'm in love of boring software.

    I care about Django more than I realized. Seeing this has actually pushed me with a gut emotion to want to get more involved contributing code, writing, or just participating more with Django

    It's not about the tool or the language, I want to feel different about the community that is open and respectful of contribution and values long term relations.

    It's not fun to be boring, but boring is good

    • By davegaeddert 2025-03-2918:31

      Hey! I'm the creator (fork-er?) of Plain. I have mixed feelings too — if all this does is help spur some new activity around Django, that would be a good outcome!

  • By sroerick 2025-03-294:472 reply

    As a guy with a lot of hours into Django, I will echo that I don’t quite understand the “why” here.

    I think there’s a number of areas where Django falls a bit short and other web frameworks excel. For example, task workers are not first class citizens and require Celery or another task manager. REST APIs are a similar situation. Celery and Django REST are great, but they do feel a little ham handed. I’ve seen other frameworks handle this in ways that really seem to work great.

    I guess auth is prioritized here? But I actually like the barebones Django auth and find it useful in many situations where I don’t need full OAuth.

    I’m not saying this isn’t needed and it looks cool and nice - but for the use cases where I’ve struggled with Django, it seems like this would actually increase complexity, as the 3rd party ecosystem would obviously not be robust.

    It looks like the author has a perfectly good workflow and use case for this, but it’s not clear from the homepage or the “about” page linked elsewhere in the comments exactly what this is for

    • By phonon 2025-03-295:55

      FYI https://github.com/RealOrangeOne/django-tasks will be included in Django once it is ready.

    • By graemep 2025-03-299:27

      Django have been by bread and butter work for a long time, and I do not really get the point of this.

      There are bits I agree with but nothing like enough to be worth losing compatibility with third party packages.

HackerNews