Plain is headed towards 1.0! Subscribe for development updates →

FAQs

Some things you might be thinking, and some quick answers.

Why fork Django?

In short, I wanted to change some stuff and didn't see any other way to do it. That's not necessarily a critique on how Django is run, but a reality of its success.

Also, I like Python and think it has a pretty bright future. I don't want to jump ship to one of the other "cool" frameworks in a different language.

More here.

What about async Python?

Django has made some good progres towards async, but I stripped it out of Plain.

I expect this will come back around, but to be honest, I just haven't had a real need for it yet myself and it feels like it overcomplicates things.

Is Plain compatible with third-party Django packages?

Nope.

Why split it into multiple packages?

There have been a number of times in the past where I've started a project, picked Flask for the simplicity, and then inevitably switched to Django once it got off the ground.

You don't have to do this with Plain.

Splitting the packages up also tends to encourage good "boundaries" between the features, and (I think) better design because of it.

Lastly, freedom. Plain can add (and remove!) packages without every decision being a "core" decision.

Why isn't Plain on PyPI?

The main reason is that I couldn't find a name I liked that didn't already exist.

More broadly speaking, namespacing an ecosystem is a bit of a bigger problem. It seems likely that PyPI will add support for organization namespacing at some point, but it's not here yet and there are other challenges.

Installing from GitHub is not the most well-supported workflow, but it does have a lot of advantages.

I'm not sure what the best solution is in the end, yet.