Django Developers Survery Results
docs.google.com
docs.google.com
TLDR; I would like Django to be more accessible not just to beginners but especially to advanced starters.
Like learning any serious language/framework, it requires a relatively large-scale project to really understand all of the moving parts. Project Euler isn't going to cut it, but most web-application ideas you might have should expose you to quite a bit. To-do lists, workout logs, weather trend tracking, etc. would all be decent learner projects. Basically anything with somewhat normal data that multiple users can input & view.
It's obviously more complex than something like Flask, but it's definitely not as convoluted or unintuitive as Twisted. Django covers a lot of territory with the number of features it provides (ORM models, URL routing, request-handling views, templating, management commands, middleware, etc.), but each of those features is well-isolated and reasonably easy to grok if you focus on one at a time.
We even have custom libraries for Django such as Django-pusherable https://github.com/pusher/django-pusherable
Associated blog post at https://blog.pusher.com/django-pusherable/
I also did a talk at this year's DjangoCon Europe about building realtime apps in Django which covers integrating Swampdragon[1] and Pusher in Django.
Video of the talk isn't up yet but the slides are on Speakerdeck[2] and my example code is on Github[3].
[1]: http://swampdragon.net/ [2]: https://speakerdeck.com/aaronbassett/effortless-real-time-ap... [3]: https://github.com/search?q=user%3Aaaronbassett+djangocon
In terms of ease of use, Pusher is easiest to setup as it is a PaaS service so you don't need to install anything. Swampdragon has a slight advantage that you can run it locally without any outside dependencies, which is nice for development.
Scaling and cost, well it depends on your current architecture. Swampdragon you'll need to scale out/maintain your own Redis and Tornado servers whereas with Pusher it's a fixed cost and you don't have to worry about scaling/bursting etc.
A pattern I've seen personally is people start with self-hosting until they reach more concurrent connections than a single server can comfortably handle and then switching to a PaaS service like Pusher.
This is not a cop out, either. In a multi-tiered architecture, it's preferable to avoid stateful sessions between the edge and backend.
I tried with Atom and (jedi) plugin, get this `CharField([Ctrl+Space]`, it fills me with `CharField( * args, * * kwargs)`, sigh.
Then it's not python
I love people trying to shove static typing onto python when there's a multitude of other choices to pick.
The alternatives suck exactly because of that.
If you want static typing go use Java, Go, etc.
I think annotations would be useful in very few cases, since interfaces are not bound by types and that's what's good about python
Guido is pushing to standardize mypy as static analysis for py3k, but it is taking so damned long, meanwhile something like TypeScript is already superb with it's compiler service architecture providing great tooling for all kinds of editors & IDE.
PEP484 is simply too little, to get good tooling it requires compiler service (API for IDEs), and we are long way from that.
I found it amusing people are split between 6 and 12 month for release cycles.
There are few other changes for release, notably SemVer adoption. For detailed Roadmap, see https://www.djangoproject.com/weblog/2015/jun/25/roadmap/
Love django been using it for 5 years, go to web framework
Does the Rails community do a similar survey?
Also I find that some of these 3d party apps use a notation like >= Django 1.X but that's not really true because of backwards incompatibility. A clearer way to know what exact version Django apps are compatible with would already be really helpful.
Currently 112 packages on the index classify as Django 1.8 compatible:
https://pypi.python.org/pypi?:action=browse&c=605
So encourage package maintainers to use those classifiers, and you'll be able to tell easily which packages are and aren't compatible :)
I'd have to agree with simonlebo - it's getting harder to find packages compatible with the latest version. Some of these are just slow at updating, but will eventually get around to it at some point. However given how old Django is now, there's going to be plenty of old projects which clutter up search results for packages which are no longer maintained.
Maybe djangopackages.com could add support/filtering to hide outdated Django projects. Or perhaps the encouragement could come in a more official way with a Django Package Index - a site which uses PyPI data, but with filtering biased towards the current released version of Django to encourage people who maintain those packages to get a new version out with support for the latest version.