46
Audrey Roy twitter: @audreyr Python and the Web Can we keep up? Saturday, August 27, 11

Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Embed Size (px)

DESCRIPTION

My talk at Kiwi PyCon, covering the deployment revolution, front-end revolution, and more. This was the opening keynote speech.

Citation preview

Page 1: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roytwitter: @audreyr

Python and the Web

Can we keep up?

Saturday, August 27, 11

Page 2: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

About me

Python web developer by day❖ MIT ’04, Electrical Engineering & Computer Science❖ Python & Django developer for Cartwheel Web / RevSys

Open-source advocate and more by night❖ President/co-organizer of PyLadies❖ Co-creator and core dev of djangopackages.com & OpenComparison❖ Resident artist at LA's Hive Gallery❖ Fiancée of Daniel Greenfeld (pydanny)

Saturday, August 27, 11

Page 3: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Quiz: When was the first Python web app written?

Saturday, August 27, 11

Page 4: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Quiz: When was the first Python web app written?

I asked this in IRC channel #python. I was told:

“audreyr, the first person to do it probably thought somebody else did it. CGI isn’t particularly hard”

Saturday, August 27, 11

Page 5: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

CGI code from circa 1999

Was CGI hard?

#!/usr/local/bin/python import cgi

def main(): print "Content-type: text/html\n" form = cgi.FieldStorage() # parse query if form.has_key("firstname") and form["firstname"].value != "": print "Hello", form["firstname"].value, "</h1>" else: print "<h1>Error! Please enter first name.</h1>"

main()

© 1999 CNRI, Guido van Rossum

from http://www.python.org/doc/essays/ppt/sd99east/sld041.htm

Saturday, August 27, 11

Page 6: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Years of turmoil

Connecting to web servers was hard and inconsistent❖ CGI❖ mod_python❖ fastCGI❖ custom Python web servers/frameworks

Saturday, August 27, 11

Page 7: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

That was before WSGI

WSGI (PEP 333) the spec for the interface between web servers & Python web apps/frameworks

Consistency!

Saturday, August 27, 11

Page 8: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

What did we get from WSGI?

The ability to write:❖ web frameworks that work with any WSGI-compliant web server❖ web servers that work with any WSGI-compliant web framework❖ middleware that sits between any WSGI server/framework (in theory)

Saturday, August 27, 11

Page 9: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

What didn’t we get from WSGI?

The pluggable dream❖ Few truly reusable WSGI middleware packages❖ No other way to write pluggable pieces emerged

Saturday, August 27, 11

Page 10: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

The web has changed since the early days of PEP 333

Saturday, August 27, 11

Page 11: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

What makes up a Python web framework, in 2011?

Main pieces:❖ Python❖ HTML/CSS❖ JavaScript, ajaxy bits

Other pieces you need:❖ Database adapter & database❖ WSGI adapter & web server❖ Deployment system

Put it all together and you have a Python web framework.

Saturday, August 27, 11

Page 12: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Where is the web going?Beyond the limits of the WSGI protocol

Saturday, August 27, 11

Page 13: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

WSGI 2

We're not talking middleware; we're talking protocols❖ WSGI-lite to make WSGI more easily usable? (2011)❖ WSGI 2 spec to address limitations/throw out baggage?

❖ It’s inevitable❖ WSGI implementors, please speak out before it’s too late

Saturday, August 27, 11

Page 14: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Where is the Python web going?A deployment revolution

Saturday, August 27, 11

Page 15: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Devops: Everyone’s doing it

Everyone seems to be working on:❖ Automated, repeatable server setup❖ Fabric, libcloud, Chef, Puppet❖ Making deployment “easy”

❖ (well, maybe when you’ve got 20+ servers)

Saturday, August 27, 11

Page 16: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

99% of deployments are small

Most projects only need 1-3 servers.

Do we need to have this strong a community focus on large scale deployments?

Saturday, August 27, 11

Page 17: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Reproducible deployment for all

Large-scale deployment techniques are trickling down to smaller projects.❖ “Deploying the world’s smallest Django application, repeatedly”

Soon to emerge:❖ “Micro-deployment tools” - lightweight tools for small deployments

Saturday, August 27, 11

Page 18: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Another piece of the deployment revolution

Python devops teams are using Ruby more and more:❖ Chef❖ Puppet

Python has Fabric & libcloud, but nothing comparable to Chef/Puppet (to my knowledge)

One of these will happen:❖ We bring more deployment tools to Python and stay competitive❖ Or we lose the deployment revolution to Ruby

Saturday, August 27, 11

Page 19: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

After the deployment revolution

In the future, deployment & hosting of web apps will be a solved problem:❖ Shared hosting❖ Single-server❖ Multi-server configurations (db, media, app, etc.)❖ Large-scale sites

Saturday, August 27, 11

Page 20: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Who is trying to solve this, in the Python world?

PaaS companies are being forced to solve this in isolation: ❖ Djangozoom.com❖ Gondor.io❖ ep.io❖ dotCloud❖ Google App Engine❖ Stackato (CloudFoundry, open-source?)

Saturday, August 27, 11

Page 21: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Who else is trying to solve this, in the Python world?

Python devops teams are trying to solve this, in isolation: ❖ In-house Fabric scripts❖ In-house Chef recipes❖ In-house Puppet modules

Repeated re-invention of the wheel❖ Wasted Python developer energy

Saturday, August 27, 11

Page 22: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Can there be web hosting standards?

WSGI addresses the interface with the web server. It does not address:❖ Packaging up of app & dependencies ❖ Python module search paths/virtualenvs❖ Location of Python egg cache❖ Initialization of your application❖ Initialization of logging❖ Configuring web server for static media❖ And much more...

Saturday, August 27, 11

Page 23: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

If not standards, how about one “best practice” way

Wouldn’t it be nice if Python hosting all worked the same way?❖ Do you want to be locked into 1 hosting company’s approach?❖ Or at least to the point that these are standardized:

❖ app packaging❖ dependency management

Saturday, August 27, 11

Page 24: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Let’s solve this and move on

Once we solve our deployment and hosting issues, we’ll be able to focus our energy on the avalanche that’s upon us...

Saturday, August 27, 11

Page 25: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Where is the web going?Front-end revolution

Saturday, August 27, 11

Page 26: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

What makes up a Python web framework, in 2011?

Main pieces:❖ Python❖ HTML/CSS❖ JavaScript, ajaxy bits

Other pieces you need:❖ Database adapter & database❖ WSGI adapter & web server❖ Deployment system

Put it all together and you have a Python web framework.

Saturday, August 27, 11

Page 27: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Why should we care?

Today’s web apps have ❖ rich, dynamic, responsive user experiences❖ multimedia❖ special effects

This isn’t just pretty templates anymore.

Saturday, August 27, 11

Page 28: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Why should we care?

There are some very interesting Python web issues to address:❖ UI effects require dynamic loading of data❖ large multimedia files take time to load❖ realtime chat, search, data analysis often required❖ fancy caching mechanisms are becoming more important❖ server can’t always handle processing; off-load to client side

Saturday, August 27, 11

Page 29: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Why should we care?

Plus we have to deal with mobile phones & tablets❖ Adaptive layouts with adaptive data sets❖ Device memory/power limitations❖ Limited connectivity

Saturday, August 27, 11

Page 30: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Quiz: What version of the Web are we on now?

Saturday, August 27, 11

Page 31: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

So, what version of Web are we on now?

web 2.0

Saturday, August 27, 11

Page 32: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

HTML5

New and improved web with fancy APIs❖ Drawing graphics on canvas❖ Offline data storage❖ Drag and drop❖ Multimedia❖ Semantic elements (for search engines, screenreaders) and more

Saturday, August 27, 11

Page 33: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

CSS3

The future of interaction❖ Animations❖ Special effects❖ Support for mobile browsers

❖ Media queries - see http://mediaqueri.es

Saturday, August 27, 11

Page 34: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Web Open Font Format

WOFF

“provides typographic flexibility and control far beyond anything the web has offered before”

from w3.org

‘the W3C commented that it expects WOFF to soon become the "single, interoperable [font] format" supported by all browsers’

http://en.wikipedia.org/wiki/Web_Open_Font_Format

Saturday, August 27, 11

Page 35: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

By the way, I want Python in my web browser

This work is attributed to the W3C.

Saturday, August 27, 11

Page 36: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Remember Grail (1995-1999)?

❖ Browser written in Python

❖ Lets you download Python applets

❖ Full HTML 2.0 support❖ Support for much of HTML 3.2

Saturday, August 27, 11

Page 37: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Remember Grail (1995-1999)?

Invoking a Grail applet:

<HEAD><TITLE>Grail Applet Test Page</TITLE></HEAD>

<BODY><H1>Test an Applet Here!</H1>Click this button!<OBJECT CLASSID="Question.py">If you see this, your browser does not support Python applets.</OBJECT></BODY>

Saturday, August 27, 11

Page 38: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Python in the browser?

Why does it have to be JavaScript?❖ It makes me sad❖ Skulpt: was an interesting idea; lost momentum❖ Pyjamas: great idea that lost momentum too❖ Pythonistas are so desperate for an alternative that they’ve settled for

CoffeeScript

CoffeeScript is the closest successful implementation❖ But it’s not Python

Saturday, August 27, 11

Page 39: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Wish list: Python in the browser

In jQuery:$(document).ready(function() { // Initialization code goes here});

In CoffeeScript:$(document).ready -> # Initialization code goes here

In PythonInTheBrowserScript:jq(document).ready: # Initialization code goes here

Saturday, August 27, 11

Page 40: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Who’s going to help with the front-end revolution?

Look for new ideas. Be first to bring them to Python!❖ HTML5 spec❖ CSS3 spec❖ JavaScript community❖ Ruby community❖ Other communities

Saturday, August 27, 11

Page 41: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Where is the Python web going?More packages, more contributors

Saturday, August 27, 11

Page 42: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Diversity of Python packages (and contributors)

See videos of my PyCon AU talk:

“Diversity in Python: it’s about untapped resources”http://www.slideshare.net/audreyr/pycon-australia-2011-keynote-audrey-roy

Saturday, August 27, 11

Page 43: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

The Python community needs you

Opportunities for leadership in❖ Mobile❖ Real-time web❖ Complex UI interactions❖ Open-source standards/protocols❖ Python in the browser

Don’t be shy, implement it.

Saturday, August 27, 11

Page 44: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

More leaders are emerging

The open-source Python community can always use new leaders❖ Implement a new idea❖ Release a package❖ Give a talk❖ Demonstrate the possibilities

Saturday, August 27, 11

Page 45: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

To all “PyLadies” in attendance

❖ Come and talk Python with me anytime!

❖ Informal breakfast for all female Python developers, planned for tomorrow morning:❖ Kiallas Cafe in Newtown❖ Sunday, 7:30am onward❖ 5 min walk from Kiwi PyCon

Saturday, August 27, 11

Page 46: Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Audrey Roy@audreyr

Thank You

We’re going to shape the future of the web together :)

HTML5 & derivative graphics attributed to the W3C.Python logo attributed to the PSF.

Special thanks for your help: Christine, Danny, Esther, Graham, Grant, Jess, Katharine, Michael, Sophia

(this graphic is a parody, but the intended message is real)

Saturday, August 27, 11