Whither is archaic English for “where are we going”, “what comes next”? So: what does the future hold for django?
About releases: there’s about 10 months between releases. The good news is that we’re getting closer and closer to the actual planned release date every time. 1.3 was only a few weeks late.
Backwards compatibility is high on django’s list. We’re proud of it. Sometimes things changes, but with a limited amount of effort you can get everything working yet.
Another major thing to be proud of: security. No CSRF problems. No XSS. No database injections. Everything is real safe.
For certain (as they’re already committed into trunk):
Class-based form wizards.
Signed cookies.
Configurable admin filters.
Possible (because it depends on work that still needs doing, note also that this list is not fixed as Russell cooked it up himself):
App refactor. (Jannis mentioned the following two links in twitter when I asked about this: https://github.com/jezdez/django/tree/app-loading and https://code.djangoproject.com/browser/django/branches/soc2010/app-loading ).
More class-based views.
Lazy foreign keys.
… which means configurable User models!
Probably not (as it needs more work and 1.4 features ought to be virtually finished right now):
Anything from gsoc 2011:
Schema migration.
Compiled templates.
Composite keys.
Template based forms.
NoSQL/Query refactor (gsoc 2010).
Well, what’s beyond 1.4? Look at what we’re missing. Well, there’s nothing that’s fundamentally missing. There was a list from a 2004 flickr keynote. Most of those shortcomings have actually been adressed.
There are 5 interesting trends that django might have to take a look at. But note that django itself influenced the way people looked at the web. You had php and zope and both were completely different. Django was a new paradigm (just like rails and turbogears). Way smaller than the big huge zope. Completely different mechanism from php.
Better packaging tools. When other frameworks are mentioned in this context, django is often mentioned as monolithic (and if they’re particularly nasty, they’ll use the term “not invented here”). But now the packaging landscape starts to become quite good. We have the packaging tools now. We have to use it. We could split things up a bit more. Perhaps more fine-grained release cycles. Perhaps you could swap in a different template mechanism.
Deployment tools. PHP script uploading is easy. Not so with python. There’s
lots of work happening, but we’re not there yet as a broader python web
community. Look at java: you can create a .war
file and you can deploy
it. Where is our .war
file? Services like http://ep.io spring up, but
are your deployments portable between those services? Not at the
moment. Time for some standardisation? Should we push that as a community?
Microframeworks. How on earth can an april fools joke like Flask get actual traction? Turn into a popular framework? Django is lots and lots smaller than zope, but these new ones are even smaller. What is small? What is micro? Could we adopt some? Can we become more attractive? We should think about this.
Project merges. In nature, explosions of variations sometimes re-converge again. Many recent python web frameworks are merging. BFG + pylons for instance, into pyramid. Should we as django look at that too? Start using common bits and pieces? Swap out bits that are available now as generic components that weren’t available when django started?
Concurrency. Why is node.js getting so much press? Hopefully not because javascript is such an nice language to write in. Django is not in a fantastic position to do node-js like things. How does django fit into this concurrent picture? There are things in our stack that lend itself to more concurrency, like database querying. Time for creative thinkwork.
Whither means “which way are we going”. Wither means “dying on the vine”.
Do we adapt? Where are we going? How do we keep capturing all developers’ imagination? Zope was successful but it is withering now. It isn’t capturing developers’ interest anymore.
Watch out for inertia. We have backwards compatibility, but this means we’re a bit big. And it means that most work is maintenance and corner cases that need proper fixing. Not many high-stepping high-visibility heroic new things. Django is stable now! And that means a lot of work.
So we need volunteers. Django needs more. It is good that they added more core contributors last year.
Again he asks us to work with the core developers, not against them. Ask friendly.
The elephant in the room. Now is the time to start being serious about this. (Note by me: read Armin Ronacher’s recent talk at PyGrunn as background material.)
It also means that we have to start looking at django 2. Just some raw brainstorming by Russell:
Python 3? (Note: Jannis pointed me at https://bitbucket.org/loewis/django-3k/ for some previous work in this area).
Getting rid of the settings singleton?
Based on pyramid?
More modular?
These aren’t finished discussions! This is something we all have a vested interested in. The community should participate A LOT in this discussion. Django is yours, so participate!
My name is Reinout van Rees and I program in Python, I live in the Netherlands, I cycle recumbent bikes and I have a model railway.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):