I'm going to withdraw the Channels patch for consideration for 1.10; there's a lot more concern and uncertainty around it than I had anticipated, given the reaction up until this point, and it's clear I have some more work to do at convincing the community and proving the design.
Instead, I will take the path-most-trodden for me and large Django features, which is to run it as an external package, compatible with 1.8 through 1.10 (which the package already is), and let it mature and develop outside of core, before coming round to look again at inclusion for 1.11 or 2.0.
My reasons are thus:
- Trying to push it into 1.10 is either going to delay the release or result in a rush job. We have time-based releases for a reason, and stopping "big-name features" from sinking a release is one of those reasons.
- There are numerous objections to the design, some well-founded. I'd like to take time to prove out these decisions (or, indeed, refine them) with channels in a more production situation and after a battery of load testing and analysis.
- Being almost purely an addition to Django, even though it technically inserts a new layer, makes it more well-suited to live externally than many other features. While the external package will have to monkey-patch a few things, it'll be relatively minor.
- The faster release cycle an external package can bring will almost certainly be useful.
However, the step I'd like to take instead is moving Channels and its associated project repos (daphne, asgiref, asgi_redis, asgi_ipc) under the Django organisation on GitHub and discussing them openly in Django blog posts, documentation and other places as the Django project's official way to get WebSockets working - after all, we are paying people to work on it, and I still remain convinced we need a solution.
I think this is a good mid-step, and given that you would have had to `pip install` extra dependencies to get django.channels to run anyway, no more complicated to use. I'd also propose that these external projects have their own, shorter backwards-compatibility and security guarantees, essentially running on a quicker, lighter version of the main release cycle.
That discussion is upcoming, but I wanted to retract the patch now because I don't want us to get to the 15th May and be unsure about what's going on, and there's plenty of other work we need to do to prep for the alpha.
Sorry about the drama I've stirred up these last few weeks; I had misjudged the situation, and was more confident in the design and code than I maybe should have been. A lot of the goals I want to achieve with Channels can be done as an external package for now, and hopefully it will prove the correct decision to take.