In preparation for the meeting, I started putting together what I called "A Landscape of Python Web Development". It started with a few of the obvious tools and products that we use at Core Software Group, like Zope/Plone, Django, and boto and suds.
From there, it started becoming obvious that I needed to break down the ever-growing list into mutliple categories.
My list of products played out like this:
The Categories
- Frameworks
- CMS
- Deployment/Hosting
- Page Templates/Forms
- Databases
- Testing
- Tools/Other
- Static Site Generators
Frameworks
This list of frameworks includes some old timers, and some newer, 'lightweight' frameworks. The last one listed, itty, was mentioned in one of Raymond Hettinger's pycon videos, and seemed an interesting, super small framework to check out.
- Zope
- Pyramid
- Django
- Flask
- Bottle
- CherryPy
- web2py
- itty
CMS
I'm sure I missed some, but these seemed to be the key players that we have come across, and the interwebs seemed to point to.
- Plone
- Kotti
- Django CMS
- Mezzanine
Deployment/Hosting
The first three are cloud platforms, and the last three are samples of python tools related to deployment.
- Heroku
- Google App Engine
- Elastic Beanstalk
- boto for EC2
- fabric
- buildout
Page Templates/Forms
This list was a late addition, but is now pretty obvious. You can't do web development without page templates and forms.
- Zope Page Templates (ZPT)
- Django Templates
- jinja2
- chameleon
- deform
- z3c.form
- WTForms
Databases
While the following are not directly related to web development, they certainly come into play when building applications that require a backend database.
- sqlalchemy
- psycopg2
- pymongo
- MySQL-python
Testing
Ok, I have to admit that I'm incredibly weak when it comes to writing tests. But I needed a list of some of the tools out there.
- unittest
- doctest
- coverage
- selenium
- funkload
Tools/Other
Wow. This list could go on and on and on. I grabbed a few tools that we use, plus a few others I came across over the last month. Hopefully, we can provide some presentations about some of these in future meetups.
- suds
- requests
- twisted
- mincss
- xml.dom, lxml, etree
- virtualenv
- simplejson
- PIL/Pillow
Static Site Generators
This list of static site generators almost has nothing to do with the above items, but I couldn't resist putting the list together. I'm fascinated by the concept of someone willing to write blog entries as text files, which in turn get deployed as static HTML to some server on the web. What I really want to know is: "How many folks are actually using these kind of tools for production sites?"
- Klein - https://github.com/twisted/klein
- Pelican - http://blog.notmyidea.org/pelican-a-simple-static-blog-generator-in-python.html
- Hyde - http://ringce.com/hyde
- Cactus - https://github.com/koenbok/Cactus
- Nikola - https://github.com/ralsina/nikola
Hovercraft/impress.js
Finally, while building my presentation, I came across a Python package called Hovercraft!, written by Lennart Regebro, for generating impress.js presentations from a reStructuredText file. Awesome. And so easy to use. You can download my kickoff.rst file and the generated output for my presentation.
Our discussion at the Python Web Development meetup was interesting, and it turns out that most of categories really start to look like the definition of a "development stack" which I suppose could be used to define a set of tools that someone might use to get started doing Python based web development.
I hope you find some value in this list. If I missed some completely obvious products, please add a comment and let me know.