I built one of my final university projects on Pyramid (I wanted to use Python but at the time didn't like Django) and ended up regretting it. There weren't a lot of resources out there to work from - be it projects on github, blogs and I found the docs themselves were lacking sometimes.
My own fault given that I'd only built a couple of small apps on it before, but it does show that it's quite difficult to get into without knowing Pylons/zope/repoze or one of it's other forerunners.
I have not used Pyramid or Flask framework in production, but I have played with both and watched their development over the years.
Flask is easier to learn and you could probably master it. It is well suited to projects with a smaller scope. (I leave it to you to decided how small is small, and how big is big. There is no clear cut line.)
Pyramid's documentation has been -- relative to Flask -- difficult. I know that the Pyramid team has been working to improve the documentation and the linked page looks like part of that effort.
The name Pyramid dates to 2010, prior to which it was know as repoze. It has even deeper roots and includes ideas and code from many prior projects: Zope, Plone, Grok, Pylons and probably more. However, working with Pyramid is more like Flask than Zope, more of a lightweight framework than a giant monolith. It is my understanding that Pyramid can draw on a much larger set of tools to build complex websites that require complex security, workflows, scalable servers, etc.
This is false. Pyramid was not known as "repoze" which is a project to port interesting/good pieces of code from Zope to be standalone libraries of code.
Pyramid used to be known as repoze.bfg or just bfg. It made liberal use of modern "light-weight" framework architecture decisions along with much more advanced and flexible workflows and code introduced through other repoze.* libraries (from Zope).
In general though, I agree that Pyramid is well suited for large projects and ill-suited for small ones. Although I do use it for my small projects.
The major benefit (for me) of Pyramid is the security system. You can setup the routing infrastructure to check access control lists on anything, you could make sure a user has access to a file on disk or a certain row in the database and thats all built-in and easy to use even though Pyramid relies on no auth system or database.
Which really shows the power of Pyramid.
Flask and Bottle have Authentication and Authorization extensions but they just aren't as flexible or as powerful as Pyramids.
A lot of the power of Pyramid (especially the security system baked in) comes from its long history and the large applications built on top of Zope, Pylons, and repoze. The knowledge and experiencing coming from those frameworks shines through when you start building something larger than a blog or todo list and you have "real world" requirements.
Also, the amount of tests, documentation, and hard work that goes into supporting Python3 are great benefits of using Pyramid.
Excellent point. It took me a long time to figure out the authorization mechanism of Pyramid, but the power it gives you as a developer is definitely worth the learning curve.
Pyramid has come off as a very well engineered framework from the get go since I started using it 1.5 years ago.
I've been a Pyramid user for over a year now, I'm active on IRC and the mailing lists, I do not "follow" pyramid on github.
Statistics like this are silly because they rely on people actually wanting to use GitHub and I don't feel the Pyramid community of developers really cares that much for it outside of being a host of the repository.
How about comparing the number of real-life web applications (i.e., not counting final year projects) in each framework, or the number of users each of them serves?
BTW, I've been a long time Pyramid user (since the Pylons days) and can't be happier with my choice.
Yes and no. Yes, because popularity of a given technology is usually related to the size of its ecosystem/number of tutorials. No, because we are talking about micro-framework, which architecturally use a bunch of loosely-coupled Python components, so having "plugins" is less important than for other frameworks for many use cases.
2) pyramid does not have anything to do with zope other than its transaction extension. uhm and some core developers being ex zope devs. repoze.bfg had. after the merge between pylons and repoze.bfg pyramid was born. it merged the code base of repoze.bfg and the philosophy of pylons.
3) pyramid is not just a framework. it is a framework with which you can build your own framework as well or enjoy it like the way it is.
My own fault given that I'd only built a couple of small apps on it before, but it does show that it's quite difficult to get into without knowing Pylons/zope/repoze or one of it's other forerunners.