Choosing a New Web Stack

I like building web sites, a lot. Usually every few years I need to re- evaluate the stack I use for a side-project. Joshua’s Stack Parts site is handy for this.

At Mozilla Webdev we stick to redis + mysql + elasticsearch + celery + rabbitmq + memcache + git + virtualenv + python + django + jinja2 + modwsgi + commander + puppet + apache + less + jquery as our go-to stack. It’s tried and true and it’s been working and been evolving for two years.

So I’m at re-evaluation time. The first element of the stack I needed to decide upon was the web framework. I initially thought I’d use Django, and maybe alternate a few supporting libraries just to color my experience. But Flask caught my attention.

Flask is from Pocoo who have given me great things like:

  • lodgeit
  • Werkzeug
  • Jinja2
  • Sphinx

It was a microframework, which meant that it didn’t contain as many things as Django, but at the same time, I didn’t use that much of Django.

Flask was a nice way to stay mostly in my comfort-zone, and in some ways, focus me on just writing an app, and not working in a framework. Since it’s python, if I start to miss Django, I can probably rewrite my code without too much effort.

Overall I’m excited, and I just got past, “Hello World.”

I’m not sure what my stack will look like, I’m imagining it will evolve into:

postgresql + memcache + git + flask + jinja2 + gunicorn + fabric + puppet + nginx + less + backbonejs + jquery

This will give me a chance to learn more about things I’m interested in, and utilize what I think might be better options along the stack.