After reading posts like http://news.ycombinator.com/item?id=712975 and http://news.ycombinator.com/item?id=750142, I find myself facing a decision regarding what technology to build a new project on. Rather than simply understanding numbers on how many of you use framework X, I'm far more interested in
why you use it. Questions such as:
* What was your decision-making process when evaluating frameworks?
* Was your ultimate choice made simply because the framework was the defacto in your language of choice? In other words, did you choose Rails for Ruby, Django for Python, Cake for PHP, just because the language itself was what you knew?
* Assuming you're sufficiently experienced in framework X now, what are your regrets? What makes the other frameworks look like greener grass?
* If you could start your project over again, would you chose the framework again?
* Did you choose framework X secretly because you just wanted to learn it? In other words, was it attractive to you just because all the cool kids were doing it and you wanted to add it to your toolbox? Be honest.
Thanks!
I prefer to start small, and add libraries as I need them.
For example, for my current project I was at the point where I needed to add authentication/authorization, preferably with openid support and fallback to a simpler system for development/test installs. I've been able to implement most of this with very little effort by using repoze.who and repoze.what (python). They're flexible enough to do a few things which would be harder to do in a framework where components are written to interface with other parts of the framework, instead of being really generic.
Apart from those two libraries I use beaker for sessions, werkzeug for dispatch, couchdb as a database, mako for templating, my own forms library, etc..
Basically I put together my own framework from already existing components, with a few components of my own for those tasks where I feel the existing solutions aren't good enough or don't solve my problem.
With this approach it does take longer to get up to speed, but you're not tied to any particular way of doing things and can replace any part as needed.