During recent DjangoCon I caught some of the core developers and asked them to share their views on the future of Django. The idea is hardly original — every leader of something is constantly being pestered about THE FUTURE. But I had a personal interest too. After being away from Django development for some time I was wondering where things are going and was also looking for new motivation to jump back on the train.

It's worth noting that all interviews were independent from each other and my interlocutors didn't know of them in advance. I recorded our conversations in an old-fashioned low-tech way with notes on a sheet of paper, so what follows are notes, not their exact words.

Jacob Kaplan-Moss

Jacob is one of the original developers of Django. His dictatorial voice is often the one settling arguments once and for all.

What's next for Django?

I don't know! There's no general agenda. Django is driven by community, we listen to what people want.

What things in Django would you like to see personally?

This is not in any way an "official" position but here are some:

Will there be a backwards incompatible "Django 2.0"?

No, there shouldn't be a backwards incompatible release. Some projects tried to break things (notably, Python) but we don't want to do it. Gradual replacement of old things with new ones works for us best.

At Yandex we never had a truly backwards compatible upgrade, though…

It's okay to break some things here and there, just not all of them at once. We have deprecation warnings to give people time to change them.

This "not breaking things" is why we have such a good community.

Russel Keith-Magee

Russel is a long-time Django hacker with an area of expertise spanning the whole framework. He's also the president of Django Software Foundation.

What's next for Django?

In general, it's expanding communities. W we should start market to government and enterprise users. This is a job for DSF, it should not be only about Django itself.

Technologically, there are some things to do:

Should we start from scratch and make a backwards incompatible Django 2.0?

No. Most of Django core is actually pretty good. Some mistakes were made — like model validation — but mostly it's good.

Python 3 may be the reason for Django 2.0. But backwards compatibility is why we lasted so long. Also, enterprise doesn't like changes. Gradual two-step upgrade process works for us.

Alex Gaynor

Alex is a very (the most?) prolific of core developers, driving scary refactorings of big subsystems. Recently he's also knowing for doing a lot of work for PyPy.

What's next for Django?

Fix settings!

We talked right after Glyph Lefkowitz's keynote where he condemned Django's settings as "a giant global mutable variable where everything happens" and suddenly it became apparent that everyone else hates it too.

Also on the list is app refactoring. We probably should look at Flask's app object, at least for inspiration.

Another big refactoring is the template tag API. Which is actually a dependency of template compilation, we should have the new API first.

Should we have a backwards incompatible Django 2.0?

No, there shouldn't be Django 2.0 Rewriting is forgetting things learned.

Andrew Godwin

Andrew is the original author of the famous migration tool South. Working at ep.io he is also a guru of massive automated deployment of Django sites.

What's next for Django?

The core is actually fine, so our main goal is making various components inside Django more useful. "Ajaxy" things are not very important.

What's the worst part of the core in your opinion?

The most problematic part is template system. It's basically the same as it was in 2006 and it needs improvement.

Should we have a backwards incompatible Django 2.0?

No, I feel we could go happily step by step, like we did with "newforms" when they were first introduced with the new name and then changed to just "forms" after some time. Django 2.0 will just occur naturally.

Final thoughts

Core developers panel at DjangoCon 2011

The most interesting thing for me was that of four people nobody voted in favor of breaking backwards compatibility. And though I didn't have a chance to catch all of the core team I'm pretty sure right now that everyone would say the same. This unanimous opinion is a remarkable thing given that Django now has a dozen core developers instead of a few as just a year ago (IIRC).

Another notable thing is that Django is a fairly stable platform in several senses. In terms of not crashing your site in production it was stable for ages. Then, after 1.0 it became formally stable regarding published APIs. Now it's clear that it won't have any significant architectural revolutions in the foreseeable future either.

Whether it's a good thing or bad depends very much on who you are. If you are a business you can invest in Django and safely plan your hiring strategy for a couple of years. If you're a hacker eager for reinventing the Web — better fork it or start your own framework :-).

And the last but not least, it was really good to talk to those guys :-). Thank you!

Comments: 1

  1. protractileaigu

    Nice write up, thanks for sharing.

Add comment