I'm on the hunt for a Python webframework that I can use to teach web development. The candidates in order of my bias are:
- Plone
- Pyramid
- Pinax/Django
- Flask
- Web2py
In general I'm looking for a framework that will reduce distraction and keep newbies focused on the task of web application development. The non-exhaustive criteria are as follows:
- Fast iterations - This means make and view changes quickly. In my experience, people learn more effectively if they can see the result of their changes quickly (as close to instantly as possible).
- Minimal deployment requirements - I measure this based on expense, initial setup time, deploy/develop cycle.
- Minimal context switching - If they can do all their development in one space this will be a good thing.
Other nice to haves:
- A framework that takes up minimal space. In other words 2MB is better than 20MB, this become especially important if we are providing a local deployment server and we have a class of 30 or more students. Or if we want to take advantage of a free hosting account.
The things that don't matter:
- Best of class security ()
- Solves all problems known to man
My Current Perspective
Plone. While I think that
Plone is an excellent platform and provides lots of useful application "infrastructure", I don't think it is the best solution for teaching beginners web development. So I've more or less scratched Plone from the list. Besides, Plone is primarily an application and secondarily a framework (I'm sure we can argue about this distinction).
Pyramid. I'm mostly impressed and for web application development (non-content management problems), it's probably where I'm headed. Pyramid is pretty powerful, I've spent some time with it and I definitely see it in my future. That said, I've decided against it because it's too large to run on super cheap/weak shared hosting because of space.
All the solutions, except Plone, claim to run on Google App Engine, that provides a cost effective option for application deployment. At this point I'm strongly leaning to Web2py because the setup and deployment experience appears to be the simplest and the data abstraction layer (DAL) is attractive for portability.
Stop me if you have some convincing arguments regarding alternatives for a 12 week, 36 hour course.