The Django team is pleased to announce that the Channels project is now officially part of the Django project, under our new Official Projects program. Channels is the effort to bring WebSockets, long-poll HTTP, and other non-request-response protocol and business logic handling to Django, as part of our ongoing effort to establish what makes a useful web framework in 2016.
Official projects, like Channels, do not merge into the core django repository but instead remain as separate repositories and packages, living under the Django organization on GitHub. They have their own release schedule and backwards compatibility policies, but fall under the main Django security policy and oversight, and are guaranteed to work with the currently supported versions of Django.
While the Channels project was initially targeted to be included in Django 1.10, it didn't make it for a variety of reasons. We decided that the best move would be to bring it under the Django umbrella, but keep it separate from the core repository, and so DEP 7 and the Official Projects track was born to enable this. DEP 7 describes what it means to maintain a Django package, so we can make sure they stay updated, have security issues patched, and work with current Django releases.
Whether Channels continues as a separate package or is merged into the core repository in the future isn't yet decided, but you can expect to see a 1.0 release very soon, and with that, a stable platform to build applications against, though we'll be keeping backwards compatibility (or, if needed, implementing clear deprecation warnings) for code written against existing Channels releases.
The five packages now under the Django project are:
- Channels, the Django integration layer
- Daphne, the HTTP and Websocket termination server
- asgiref, the base ASGI library/memory backend
- asgi_redis, the Redis channel backend
- asgi_ipc, the POSIX IPC channel backend
There's still plenty of work to be done, both on the Channels side, to fix bugs, implement features, and improve our documentation, and on the Django side, to help weave mentions of Channels into the main documentation and make sure people are aware of their options. If you're interested in contributing at all, please read the Channels contribution documentation.
If you're interested in learning more about Channels and what it can do, take a read of the documentation, or have a look through some well-commented example projects.