Changes between Version 5 and Version 6 of TwistedWebPlan

03/11/11 05:16:50 (11 years ago)

we're going to sprint on these, right?


  • TwistedWebPlan

    v5 v6  
    11= What's Going On With Twisted Web =
    3 == The Problems ==
    5 Currently there is a lot of confusion as to what to do and where to go to get a good, supported twisted.web server.  Users are confronted with 3 options and an infinite number of permutations of those options: twisted.web, nevow, and twisted.web2.  This confusion is made manifest in the [wiki:WebDevelopmentWithTwisted lengthy explanation of web development with twisted] hosted here on this wiki.
    7 This is mostly a problem of perception, but there are some real issues.  For example, there is a lot of redundant maintenance going on in, for example: `twisted.web.static`, `twisted.web2.static`, and `nevow.static`; `twisted.python.urlpath` and `nevow.url`; `nevow.appserver` and `twisted.web.server`.
    9 == The (Current) Solution ==
    11 We are phasing out the {{{twisted.web2}}} ''namespace'' in favor of {{{twisted.web}}}.  There is a half-decent webserver in that namespace, but there is also a lot of garbage.  If this doesn't make sense to you, and you thought that {{{twisted.web2}}} was the future, consider [source:trunk/twisted/web2/ the twisted.web2.proxy] module.  There are others which are slightly less obviously bad, but the quality of {{{twisted.web2}}} is so dramatically inconsistent that we feel it would be better to evolve a working, stable, but somewhat outdated collection of functionality (twisted.web) into better shape than try to take a pile of functionality that is in some ways better but in some ways completely broken ({{{twisted.web2}}}) and make it all work.
    13 We are also trying to migrate all of the [ Nevow] application-server functionality back into twisted.web, so that Nevow is just templating.  We may, as a second, later phase, also move the templating stuff, but the main goal right now is to separate those two pieces of functionality completely, and stop maintaining a redundant one in Nevow.
    15 Nominally, {{{twisted.web2}}} was never finished, never officially released in any capacity, and never supposed to be stable.  So our compatibility policy may be slightly more lax there than on twisted.web.  However, some compatibility will be maintained, and for most users the upgrade path will be gentle as you can gradually start importing more things from {{{twisted.web}}} instead.
    17 == The Goal Of The Solution ==
    19 The goal is to have '''one supported, good web server in the Twisted community''' so that:
    21   * Users know where to start.
    22   * Developers know where to send patches.
    23   * We don't have to do the same work three times.
    25 If you are considering contributing some patches in web-land, please contribute them to {{{twisted.web}}}.  Ideally, you would contribute patches which use code from web2 to eliminate redundancy between web2 and web.
    27 == What This Means to You ==
    29 There will be some deprecation warnings in {{{twisted.web}}} for the really old stuff that we know isn't good any more.
    31 Eventually you may have to make some gradual changes to your code to use newer versions of twisted.web.  Eventually your Nevow applications will tell you that you don't need to use nevow.appserver or nevow's `IResource` any more, and you can use the versions from {{{twisted.web}}}.
    33 However, at some point in the future, there will be ''one supported, good web server in the Twisted community'', and that will be `twisted.web`.  In the meanwhile, `twisted.web2` will still be around and will still have a reasonable HTTP/1.1 implementation if you need that right now.  At no point during this transition do we intend to make a major earthquake.  You do not need to worry that your code will suddenly all be broken, but you will need to change some imports to eliminate some warnings every so often.
     3Twisted Web isn't perfect, although it often looks that way. Here are current foci for improvement.
    355== Specific Planned Twisted Web Enhancements ==
    399  * [ticket:2983 Separate the concerns in twisted.web request processing to allow easier testability]
    4010  * [ticket:288 Streaming upload handling]
    41   * Support for ''100 Continue''
     11  * [ticket:4673 Support for '''100 Continue''']
    4212  * [ticket:3711 Support Deferreds returned from IResource.render]
    4313  * [ticket:3621 Support Deferreds returned from IResource.getChild(WithDefault)]