Why Pyramid

To recap: in late 2008, my boss and I were discussing Zope 2, and the fact that it had pretty much lost all momentum. I was asked to select a new web application framework. I started by listing the things I needed in a framework:

And there had to be no fighting against the framework to use alternative persistence engine or to import/use a third-party library.

I looked at about a dozen open source systems. On first pass, the most interesting systems were the merb, pylons, and dark horse werkzeug. The merb, just as I was getting interested in it, decided to fold into Rails. Rails was far too opinionated for my purposes, and I did not see how the merb could service intact after the merger (it did far better than I guessed).

Werkzeug looked very interesting, but appeared to be only a request/response system, and meeting the rest of the looked like it would require a lot of work. It was just too low level.

Pylons was really interesting, and had a fair amount of momentum. But, the documentation was not very good. The authentication story was not very good, at all, and almost 100% of my work requires authentication and authorization. In fact, the general recommendation for authentication was to look at something called repoze.who.

That lead me to look look seriously at the repoze site. I had looked a couple of times, earlier, but was not particularly interested in their original mission "Plumbing Zope into the WSGI Pipeline". I was trying to leave Zope! But, I saw that they were starting a new framework, called repoze.bfg. It looked really interesting, in fact it was a 100% fit to my requirements list. By May 27, 2009, I was using bfg in anger (well, actually mostly in pleasure).

Bfg grew, through hard work and persistence, into pyramid.

If you are an experienced web developer who knows or is willing to learn python, I whole-heartedly recommend pyramid for custom development work. It is really good for this kind of work. It is utterly unopinionated, but manages to feel integrated. If you are interested in taking this path, read the documentation at https://www.pylonsproject.org/. Be sure to look at the "Pyramid documentation" and the "Pyramid Cookbook". The documentation is fairly complete. Then get yourself to irc.freenode.net in channel #pyramid. Ask questions (don't ask to ask), just ask. There are some real heros in the channel, mcdonc (Chris McDonough, the pyramid lead), raydeo, chrisrossi, RaFromBRC, blaflamme, and others whom I should probably have remembered to mention. You will get help. Although, maybe there will be some grumbling, and maybe you will have to put up with some juvenile humor.

Pyramid has some other advantages. It is one of the faster, if not the fastest, python-based frameworks available. There is a strong goal of breaking backwards compatibility only with great reluctance. It runs on a fair number of different python versions. The code has great test coverage, and a strong testing culture. It can reasonably scale, and I have never had a problem with keeping it running. I used to run multiple Zope-2 sessions primarily for failover. I only run one production session of pyramid.

I have to admit, I have an important role in pyramid: that of dunderhead-in-chief. My job is to make the people who get things done explain them to the point that I am no longer totally confused.