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 is one of the original developers of Django. His dictatorial voice is often the one settling arguments once and for all.
I don't know! There's no general agenda. Django is driven by community, we listen to what people want.
This is not in any way an "official" position but here are some:
- replace auth with something better, flexible
- Django is not suited very well for real-time web, it'd be good to have it
- …and though it's not a personal wish, a NoSQL support seems to be what a lot of people want
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.
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 is a long-time Django hacker with an area of expertise spanning the whole framework. He's also the president of Django Software Foundation.
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:
- using the new Python packaging system more
- right now Django doesn't do real-time web good but WSGI won't let us redesign the framework for that.
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 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.
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.
No, there shouldn't be Django 2.0 Rewriting is forgetting things learned.
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.
The core is actually fine, so our main goal is making various components inside Django more useful. "Ajaxy" things are not very important.
The most problematic part is template system. It's basically the same as it was in 2006 and it needs improvement.
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.
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!