Plain is headed towards 1.0! Subscribe for development updates →

About

Where Plain came from, and where it's going.

Origins

Plain was forked from Django in 2023 by me, Dave Gaeddert. I've been using Django for over ten years for all kinds of projects. Which is not to say that I'm an expert — just that I'm comfortable enough to be dangerous.

I really like Django. In fact, I still use Django today for the same reasons that you might — it's stable and I know it well!

But the long history and large userbase of Django comes at cost.

You can think of Plain as a "what if?"

  • What if you didn't have to worry about deprecation policies?
  • What if there were no committees?
  • What if you could change anything without consequence?
  • What if Django wasn't originally built for a newspaper circa 2003?
  • What if you had a clean slate, but a proven head start?

That's what Plain is going to pursue. Not because I hate Django, but because I like it so much.

(I also like Python.)

To fork or not to fork

I actually tried not to fork Django for quite a while. On the surface forking seemed like a dumb idea, and sometimes still does.

The first thing I tried was building around Django by writing third-party packages, as is generally suggested. I've done different levels of that over the years, ultimately even trying an entire set of packages named "Forge" (for various trademark reasons...).

That was an interesting experiment, and a lot of that work carried forward into Plain, but Forge was really a "meta-framework" working around the fact that there were deeper changes I wanted to try.

You might be thinking, as I did, that contributing to Django ought to be the next logical step. But I've been following the Django mailing list for years and, to be honest, it just doesn't inspire me. And I don't mean that as an attack on anyone personally — but more of a reality of where Django is at today. You can no longer just go change stuff on a whim, and for good reason! But working through years of incremental progress and committees, with a very real possibility of some things never happening, is just not for me.

Credit where credit's due

Django has hundreds, if not thousands, of contributors from over the years. And all that work is essentially the starting point of Plain. Leveraging existing open source work is a reality of every project or product these days. But when you fork something, that history is directly inherited in yours, and I want to make sure that it's acknowledged.

In any case, I plan for Plain to be a friendly fork, and continue to pull in "upstream" changes from Django if it makes sense to do so. I don't know if anything from Plain will ever make it back into Django, but it can at least serve as a concrete example of inspiration or failed ideas.

(Plain also includes some code forked from whitenoise and pytest-django.)

BDFL

If you've been around programming for long, you've probably heard the term BDFL. And it applies here.

For now, this is my project. And I intend to run it just like I would my business.

You are more than welcome to make suggestions — the only person you have to convince is me!

Kansas

Sidenote: The fact that Django was created in Kansas, and I live in Kansas, has always been an interesting connection to me. The person who introduced me to Django also knew one of the core developers, so it's always felt like one of those "small world" Midwest family/friend connections that drives other parts of my life. I like knowing that important pieces of technology don't have to come from the US coasts.