5 | | * **ASGI Support**: Having Django speak the ASGI (async successor to WSGI) protocol. This is landed in 3.0. |
6 | | * **Async views**: Allowing for {{{async def}}} views. |
7 | | * **ORM**: Making the ORM async-capable. |
| 5 | Complete: |
| 6 | * **ASGI Support**: Having Django speak the ASGI (async successor to WSGI) protocol |
| 7 | |
| 8 | In progress: |
| 9 | * **Async views**: Allowing for {{{async def}}} views |
| 10 | |
| 11 | Planned/Future: |
| 12 | * **ORM**: Making the ORM async-capable |
| 13 | * **Templating**: Making templates async-capable |
| 14 | * **Cache**: Async cache abstraction (get/set/etc.) |
| 15 | * **Test Client**: Better async support for tests |
| 16 | |
| 17 | Other areas of Django also need attention; this is by no means the full set of projects that need tackling. |
| 18 | |
| 19 | == How to help |
| 20 | |
| 21 | These are the areas we currently need help in; if you're interested, please email andrew@aeracode.org (we'll get a better way of organizing this done soon). |
| 22 | |
| 23 | === Test failure chasing |
| 24 | |
| 25 | The current async views branch runs code mostly successfully, but some Django tests fail, occasionally in odd ways. There's a lot of valuable work in taking a test failure and working out the root cause so it can be fixed in the async views patch. This is especially important to trace down places where database connections are accessed from more than one thread (which is invalid, but happens with incorrect use of sync code in an async thread). |
| 26 | |
| 27 | === Benchmarking |
| 28 | |
| 29 | Performance regressions are the one thing we want to avoid, and so the djangobench (https://github.com/django/djangobench) project needs modifying to add an ASGI benchmark path and the ability to compare sync-via-sync, sync-via-async and async-via-async paths through Django, as well as between 2.2 and 3.0/3.1 with the async views changes applied. |
| 30 | |
| 31 | === Documentation |
| 32 | |
| 33 | We need a significant amount of new documentation about asynchronous code and when it makes sense (and cruicially, when not to use it). This could potentially take the form of a new tutorial section, more narrative-style documentation, as well as more notes about Django's internals and how they are changed. |
| 34 | |
| 35 | === Test writing |
| 36 | |
| 37 | We need some more tests written for the async support already in Django 3.0, as well as the asynchronous view code that's currently in a branch. Ideally we want tests for both the sync and async paths, and more tests that run things in parallel to verify there's no concurrency issues. |
| 38 | |
| 39 | === Example projects |
| 40 | |
| 41 | A well-documented example project with a good use of async could be a very valuable resource for people to learn from. |
| 42 | |
| 43 | === ORM/Template/Cache project lead |
| 44 | |
| 45 | If you're experienced enough in large codebases and async code, these projects can each be tackled and run separately and we'd benefit a lot from doing them in parallel. Templating and the ORM especially need research and prototyping as a first phase before we work out what the best solution is. |
| 46 | |