All,

**TL;DR: What do you believe WSGI 2.0 should and should not do? Should we do it 
at all?**

It’s a new year, and that means it’s time for another attempt to get WSGI 2.0 
off the ground. Many of you may remember that we attempted to do this last year 
with Rob Collins leading the charge, but unfortunately personal commitments 
made it impossible for Rob to keep pushing that attempt forward.

Since then, the need for a revision of WSGI has become even more apparent. 
Casual discussion on the web has indicated that application developers are 
uncomfortable with the limitations of WSGI. These limitations are providing an 
incentive for both application developers and server developers to take an 
end-run around WSGI in an attempt to get a framework that is more suitable for 
the modern web. A great example of the result of WSGI’s deficiencies is Andrew 
Godwin’s channels work[0] for Django, which represents a paradigm shift in 
application development that takes it far away from what WSGI is today.

For this reason, I think we need to try again to get WSGI 2.0 off the ground. 
But I don’t believe we can do this without getting broad consensus from the 
developer community that a revision to WSGI is needed, and without 
understanding what developers need from a new revision of WSGI. This should 
take into account the prior discussions we’d had on this thread: however, I’m 
also going to actively solicit feedback from some of the more notable WSGI 
implementers, to ensure that whatever comes out of this SIG is something that 
they would actually use.

This WG already had a list of requirements, which are as follows:

- Support servers speaking HTTP/1.x, HTTP/2 and Websockets (potentially all on 
a single port).
- Support graceful degradation for applications that can use HTTP/2 but still 
support HTTP/1.x requests.
- Graceful incremental adoption path - no upgrade-all-components requirement 
baked into the design.
- Support Python 2.7 and 3.x (where x is not yet discussed)
- Support the existing ecosystem of containers (such as mod_wsgi) with the new 
API. We want a clean, fast and approachable API, and we want to ensure that its 
no less friendly to work with than WSGI, for all that it will expose much more 
functionality.
- Apps need to be able to tell what protocol is in use, and what optional 
features are available. For instance, HTTP/2 PUSH PROMISE is an optional 
feature that can be disabled by clients. Websockets needs to expose a socket 
like object, and so on.
- Support websockets
- Support HTTP/2
- Support HTTP/1.x (which may be just 'point at PEP-3333’.)
- Continue to support lightweight shims being built on top such as 
https://github.com/Pylons/webob/blob/master/webob/request.py

I believe that all of these requirements are up for grabs, and subject to 
change and consensus discussion. In this thread, then, I’d like to hear from 
people about these requirements and others. What do you believe WSGI 2.0 should 
do? Just as importantly, what do you believe it should not do? What prior art 
should we take into account? Should we bother revising WSGI at all, or should 
we let the wider application ecosystem pursue its own solutions à la Django's 
channels? Should we simply adopt Andrew Godwin’s ASGI draft[1] on which 
channels is based and call *that* WSGI 2.0?

Right now I want this to be very open. I’d like people to come up with a broad 
statement listing what they believe should and should not be present in WSGI. 
This first stage of the work is very general: I just want to get a feeling for 
what the community believes is important. Once we’re done with that, if the 
consensus is that this work is worth pursuing, I’ll come up with an initial 
draft that we can start making concrete changes to.

In the short term, I’m going to keep this consultation open for **at least two 
weeks**: that is, I will not start working on an initial draft PEP until at 
least the **18th of January**. If you believe there are application or server 
developers that should be involved in this discussion, please reach out to them 
and point them to this list. I personally have CC’d some people that I believe 
need to be involved in the discussion, but please reach out to others as well.

I’d really love to come to the end of 2016 with a solid direction for the 
future of web programming in Python. I’m looking forward to working with you 
all on achieving that.

Thanks,

Cory


[0]: https://channels.readthedocs.org/en/latest/
[1]: https://channels.readthedocs.org/en/latest/asgi.html

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
Web-SIG mailing list
Web-SIG@python.org
Web SIG: http://www.python.org/sigs/web-sig
Unsubscribe: 
https://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com

Reply via email to