Re: WSGI 2.0 Round 2: requirements and call for interest

"Amber \"Hawkie\" Brown" <[email protected]> Wed, 6 Jan 2016 19:34:16 +0800
Newsgroups gmane.comp.python.web
Message-ID <[email protected]>
--===============0732310526311752424==
Content-Type: multipart/signed; boundary="Apple-Mail=_683F79C8-0225-4BD3-A5E4-E1D38C605603"; protocol="application/pgp-signature"; micalg=pgp-sha256


--Apple-Mail=_683F79C8-0225-4BD3-A5E4-E1D38C605603
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8


> On 4 Jan 2016, at 20:27, Cory Benfield <[email protected]> wrote:
>=20
> All,
>=20
> **TL;DR: What do you believe WSGI 2.0 should and should not do? Should =
we do it at all?**
>=20
> It=E2=80=99s a new year, and that means it=E2=80=99s 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.
>=20
> 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=E2=80=99s deficiencies is Andrew =
Godwin=E2=80=99s channels work[0] for Django, which represents a =
paradigm shift in application development that takes it far away from =
what WSGI is today.
>=20
> For this reason, I think we need to try again to get WSGI 2.0 off the =
ground. But I don=E2=80=99t 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=E2=80=99d had on this thread: however, I=E2=80=99m 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.
>=20
> This WG already had a list of requirements, which are as follows:
>=20
> - 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=E2=80=99.)
> - Continue to support lightweight shims being built on top such as =
https://github.com/Pylons/webob/blob/master/webob/request.py
>=20
> I believe that all of these requirements are up for grabs, and subject =
to change and consensus discussion. In this thread, then, I=E2=80=99d =
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 =C3=A0 la Django's channels? Should =
we simply adopt Andrew Godwin=E2=80=99s ASGI draft[1] on which channels =
is based and call *that* WSGI 2.0?
>=20
> Right now I want this to be very open. I=E2=80=99d 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=E2=80=99re done with that, if the consensus is that this work is =
worth pursuing, I=E2=80=99ll come up with an initial draft that we can =
start making concrete changes to.
>=20
> In the short term, I=E2=80=99m 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=E2=80=99d some people that I believe need to be =
involved in the discussion, but please reach out to others as well.
>=20
> I=E2=80=99d really love to come to the end of 2016 with a solid =
direction for the future of web programming in Python. I=E2=80=99m =
looking forward to working with you all on achieving that.
>=20
> Thanks,
>=20
> Cory
>=20
>=20
> [0]: https://channels.readthedocs.org/en/latest/
> [1]: https://channels.readthedocs.org/en/latest/asgi.html

Hi all! Due to some dubious life choices, I've decided to take part in =
this discussion!

I have very much a vested interest in async making sense in a new WSGI, =
and personally would go so far to say that a WSGI revision that does not =
include asynchronous support is a WSGI revision not worth having. But, I =
am also not sure if it should be a WSGI revision -- as Graham has =
mentioned, such a radical revision that (I personally) believe is =
required is likely to go poorly if we call it WSGI, because now we have =
all this "WSGI" stuff that doesn't actually speak WSGI 2.

I'm looking forward to future developments, and hopefully we can finally =
unify the synchronous and asynchronous worlds of Python web programming.

- Amber Brown


--Apple-Mail=_683F79C8-0225-4BD3-A5E4-E1D38C605603
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP using GPGMail

-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJWjPu4AAoJECMItHnTkkoR02YH/2OOGuY0sTtqQGF/j6XClSmN
WYc3huOYjeRvovH2u/szV6ZosX4xp1EYdQywZodWzNkmy1VsmDpG/EiKFk0jJpd0
Tmzh8TOiaFNIKk0nlAE72jGxPudUWd2omujxq+RZAD7egf6G42m03OmRWcWZaHJQ
W5IYKAyuZHN7G6kaHhFgWU+uDJURM+Iq9YjpZ7yR4d+5EKVKQbgSaTAMVg6fujOE
ZAOpNLwRhGanxSYiET8VQsVEz/vcY9G33zo9R1k9L8M1app1o5V8ZtBrhXm74OG4
ZLSyLzMK1xbqEGN5vd7V80tShwD7htW6zPfjecL/8EH1L9Dx8gkMaNAjL3N0ppc=
=FzF9
-----END PGP SIGNATURE-----

--Apple-Mail=_683F79C8-0225-4BD3-A5E4-E1D38C605603--

--===============0732310526311752424==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Web-SIG mailing list
[email protected]
Web SIG: http://www.python.org/sigs/web-sig
Unsubscribe: https://mail.python.org/mailman/options/web-sig/gcpw-web-sig%40m.gmane.org

--===============0732310526311752424==--