Snakes on the Web

15,933 views

Published on

The history and future of Python web development. A talk given at PyCon Argentina and PyCon Brazil, 2009.

Published in: Technology, Lifestyle

Snakes on the Web

  1. Snakes on the Web: The history and future of Python on the web Jacob Kaplan-Moss http://jacobian.org/TO http://www.flickr.com/photos/kejhu/3751877257
  2. Web development sucks.
  3. “ How can I make this suck less? ”
  4. 1. What sucks now? 2. How will we fix it? 3. Can we fix it with Python?
  5. In the beginning… http://www.flickr.com/photos/tonythemisfit/2904911703
  6. Hand-rolled HTML “The Stone Age”
  7. The Stone Age http://www.flickr.com/photos/schoschie/3421072476/
  8. Suck.
  9. “ What if we didn’t have to write HTML by hand? ”
  10. CGI “The Bronze Age”
  11. Suck.
  12. “ How can we make CGI better? ”
  13. (Not really a big question.) http://www.flickr.com/photos/randomurl/446209957/
  14. PHP “The Iron Age”
  15. Same idea, (slightly) better tech. http://www.flickr.com/photos/jerhoyet/2377140741
  16. Page-oriented http://www.flickr.com/photos/just_jump/2972461681
  17. “ “What if we thought of these as applications, not pages?” ”
  18. Frameworks “The Industrial Revolution”
  19. The modern web framework:
  20. High-level http://www.flickr.com/photos/nikonvscanon/2128705916
  21. Application-oriented http://www.flickr.com/photos/joelaz/2868356069
  22. http://www.flickr.com/photos/ppdigital/2329405081/ Large building blocks
  23. http://www.flickr.com/photos/jasephotos/2913135232/ Rapid development
  24. http://www.flickr.com/photos/nattu/1190083977 Fun!
  25. What’s next?
  26. What sucks?
  27. Interoperability sucks.
  28. Frameworks: good. http://www.flickr.com/photos/amberandclint/3266859324/
  29. Lock-in: bad! http://www.flickr.com/photos/striatic/2191404675/
  30. Rule 1: Don’t piss off your users.
  31. Software becomes domain-specific.
  32. Cede control gracefully. http://www.flickr.com/photos/aidan_jones/3575000735
  33. Framework inter-op: http://www.flickr.com/photos/kpwerker/421386062/
  34. Django’s not helping. http://www.flickr.com/photos/mafleen/1694900141/
  35. WSGI sucks. http://www.flickr.com/photos/jacobian/408227408
  36. Rack’s better. http://www.flickr.com/photos/lependu/3563742168/
  37. Gateway ≠ API
  38. Inter-language inter-op:
  39. VMs, Proxies, SOA, ROA, …
  40. Gateway ≠ API !
  41. http://www.flickr.com/photos/vgm8383/2381791019/ This’ll be hard to fix
  42. Disparate, mostly volunteer communities.
  43. Little overlap.
  44. Rich applications suck.
  45. HTML 5
  46. The best thing to happen to web frameworks?
  47. Current frameworks don’t fit. http://www.flickr.com/photos/oskay/156280584/
  48. State of the art:
  49. 1. Parallel MVC stacks Lots of work to keep in sync.
  50. 2. Coupled frameworks (GWT, Cappuccino, SproutCore)
  51. 280slides Create beautiful presentations, access them from anywhere, and share them with the world. With 280 Slides, there's no software to download and nothing to pay for – and when you're done building your presentation you can share it any way you like.
  52. 280 Slides: a site so complicated it needed a new language!
  53. Python?
  54. Deployment sucks.
  55. Writing the app is easy…
  56. The rest is hard!
  57. • API Metering • Distributed Log storage, analysis • Backups & Snapshots • Graphing • Counters • HTTP Caching • Cloud/Cluster Management Tools • Input/Output Filtering • Instrumentation/Monitoring • Memory Caching • Failover • Non-relational Key Stores • Node addition/removal and hashing • Rate Limiting • Auto-scaling for cloud resources • Relational Storage • CSRF/XSS Protection • Queues • Data Retention/Archival • Rate Limiting • Deployment Tools • Real-time messaging (XMPP) • Multiple Devs, Staging, Prod • Search • Data model upgrades • Ranging • Rolling deployments • Geo • Multiple versions (selective beta) • Sharding • Bucket Testing • Smart Caching • Rollbacks • Dirty-table management • CDN Management • Distributed File Storage http://randomfoo.net/2009/01/28/infrastructure-for-modern-web-sites
  58. Lots of pieces http://www.flickr.com/photos/restlessglobetrotter/448362507/
  59. Huge opportunity http://www.flickr.com/photos/nuclearsummer/2665337803/
  60. Python’s been a very good glue language…
  61. It could be again.
  62. Scaling sucks.
  63. Web audiences
  64. Complexity
  65. Traffic
  66. Generic doesn’t scale.
  67. Generic Specific Simple Complex
  68. Specific Generic My first blog Simple Complex
  69. Specific Generic Public launch My first blog Simple Complex
  70. Specific Average site Generic Public launch My first blog Simple Complex
  71. Specific Twitter Average site Generic Public launch My first blog Simple Complex
  72. Specific Twitter Frameworks Average site Generic Public launch My first blog Simple Complex
  73. Most sites aren’t big.
  74. http://www.flickr.com/photos/b-tal/163450213/ What do we do?
  75. Concurrency sucks.
  76. All roads lead to multi-core. http://www.flickr.com/photos/marc_buehler/3053243413
  77. I’m scared. http://www.flickr.com/photos/amatuer_44060/2831112854/
  78. Nehalem
  79. UltraSPARC T2
  80. 128 hardware threads
  81. http://www.flickr.com/photos/daninrgb/3406117892 Ted thinks we’re screwed
  82. StartServers
128
  83. I don’t think so.
  84. Lots of exciting work in concurrency today:
  85. Actors STM Persistent data structures Dataflow Tuple spaces
  86. Ted Leung, A survey of concurrency constructs http://tinyurl.com/mmbqe6
  87. Scala Erlang Clojure Haskell
  88. Python?
  89. Unladen Swallow?
  90. No more GIL!
  91. No more GIL?
  92. Better threads. http://www.flickr.com/photos/splityarn/3469596708/
  93. Threading sucks. http://www.flickr.com/photos/sillydog/9844703/
  94. I want actors! (Or STM, or whatever.)
  95. Help! http://www.flickr.com/photos/zaia/3475695085
  96. 2020
  97. I want to be using Python!
  98. Let’s make Python kick ass in 2020.
  99. “ Good software takes ten years. Get used to it. — Joel Spolsky ” http://tinyurl.com/ca4pr
  100. So we need to start now.
  101. 1. Better inter-op.
  102. WSGI 2
  103. Django needs to do better.
  104. We need leaders. http://www.flickr.com/photos/salimfadhley/26306549
  105. http://www.flickr.com/photos/psd/3649586425/ A BDFL?
  106. 2. Get in front of HTML 5.
  107. 3. Rethink web development, again.
  108. Pages
  109. Applications
  110. Sites
  111. Full deployment stack, highly integrated, centered around WSGI 2?
  112. Yes, please!
  113. 4. Scale from day 1.
  114. Be skeptical. http://www.flickr.com/photos/colorblindpicaso/2747637336
  115. Plan to be replaced. http://www.flickr.com/photos/taurusaficionado/2099239684
  116. Holy crap please give me better concurrency!
  117. Thank you! Me: Jacob Kaplan-Moss This talk: http://jacobian.org/TO Email: jacob@jacobian.org Twitter: @jacobian

×