I thought a while about this, and tried to come up with such a list. Without luck. Not because there are no “must haves”, there are, but because the most important points are fuzzy and difficult to describe.
If I look back at the time when I decided to use CakePHP, it seems quite irrational that I have chosen CakePHP as my main framework. The only constraint was PHP4 support (though the only project that required it died shortly after the decision *g*). On the other hand, CakePHP contained only a fraction of today’s features, it was very buggy, there was no documentation beside the blog tutorial, and only a few people used it. And still, I liked it, and spent a lot of time with it.
Now, some years later, I’m more conscious about my own values, and so I want to use a framework that’s more aligned with those values. As I care about software design and good code, I want to see those things in the framework I use. And because details matter to me, the framework developers should also care about details and not only “make it work”.
So, in a nutshell, my top “must have” for a framework is a development philosophy that strives for the following topics:
- Good design
- Good code
- Caring about details
However, there is one point which is even more important than what I listed above: you must like the framework. It’s that simple. The best framework is worthless if you don’t like it. Or do you really want to spend much time with something you don’t like?