WebApp Frameworks.notes

Thursday, March 24, 2005

TITLE OF PAPER: PyWebOff: Mapping the Python Web Application Frameworks
PRESENTED BY: Michelle Levesque (ml@cs.toronto.edu)

DATE: Wednesday, March 23, 2005
LOCATION: GWU Cafritz Conference Center, Amphitheatre

{If you've contributed, add your name, e-mail & URL at the bottom}

Problem: So Many Web Frameworks, scary, intimidating
Enabler: I'll write my own, that'll solve the problem

When ppl keep reinventing the wheel, you block a lot of progress

PyWebOff:  What frameworks support what, and what are they good for?
    Webware, Quixote, CherryPy, Twisted, Zope, Karigell, CGI (control set)

...more cute stick figures...

Start with a simple problem, Web Lending Library

What is not tested:
 * Performance
 * Security
 * Robustness
 * ...

The W. Richard Stevens approach to framework analysis - start from a new user perspective, write everything down, and save your final code in a public repository.

Everything blogged - lots of response

Not talking about Zope, Karigell or the CGI control in this talk

    MiddleKit - Decide on objects
    WebKit - All pages are subclasses of the default page
     * Your pages can be subclassed as well

    Must conform to the Quixote-way of organizing your pages
     * Once you do, things work better.. :-)
    Best features: widgets
     * Fast way to create HTML forms
     * Provides an object which displays, and then captures the output
    Persistant layers: Durus
    Doesn't support session persistence: you do it yourself
     * much cleaner code
     * took a lot of time to learn
     * Serious learning curve, but worth it

    Lightweight, compared to other frameworks    
    Standard 'form action is method name' paradigm
    Has a nice templating system, if you like that sort of thing
        Very clean
     * Intuitive system
     * Template system: cool
     * Potential lack of documentation

Twisted + Nevow:
    The uber-framework, way overkill perhaps for just a web framework
    Useful for Practical Internet Groupware
    Powerful, complicated, templating system
        * (nbastin) Probably worse than just using XSLT directly
General issues with Python web frameworks
    Lack of support
        * IRC (not good way of giving support)
        * mailing lists (better, but still not the best)
        * documentation assumes you already know what they're talking about
            * not new-user friendly

Next steps:
 * Finish the analysis of the frameworks still on the list
 * Add more frameworks to the list...
 * Need to have 'official' frameworks, or some sort of stamp that indicates the     
   one with the best documentation and active development
 * Put more effort into the winners
 * Do Not create more frameworks
 * Need to reduce the framework set to a few simple buckets
   * Speed, heavyweight, simple, etc.

Q & A Points:
 * Difficult to install a lot of frameworks, also, tutorials are good, but
   should not be relied on

 * Is it appropriate to add a web framework to the standard library?
   * no, but have some frameworks that are "Python-sponsored"
 * Book promo spam for "Python Cookbook"
 * Is there a mature Python alternative to Rails?
   * no single answer
 * Is there one that interfaces well with a database (SQL)
  * Don't know how RoR does it, but they do all at least interface with a database

 * Sean kills the Q&A period

REFERENCES: {as documents / sites are referenced add them below}

ml@cs.toronto.edu (Michelle Levesque)
http://pyre.third-bit.com/pyweb (PyWebOff site)


CONTRIBUTORS: {add your name, e-mail address and URL below}
Nick Bastin (nick.bastin@gmail.com) <http://www.nickbastin.com>
Linden Wright (lwright@mac.com)
Nate Silva (nate@northwe.st)

E-MAIL BOUNCEBACK: {add your e-mail address separated by commas }

A headline (like a field in a database) will be CAPITALISED
    This differentiates from the text that follows
A variable that you can change will be surrounded by _underscores_
    Spaces in variables are also replaced with under_scores
    This allows people to select the whole variable with a simple double-click
A tool-tip is lower case and surrounded by {curly brackets / parentheses}
    These supply helpful contextual information.

Copyright shared between all the participants unless otherwise stated...