I made a comment, but it turned into a posting, so here are some questions to ask yourself before writing your own framework (as opposed to using M2/MG/FB/CB/etc.).
There are are a number of reasons NOT to use a community framework. A general framework simply can't be the optimal solution to every use case. However, you need to think very carefully before writing your own framework for a production application. It is not a trivial choice and is akin to deciding to build rather than buy your next home. It isn't wrong (for everyone), but it isn't a trivial choice.
The questions I would ask someone thinking of writing their own framework . . .
1. Can you write a better specific solution than the "community" generalized solution? The vast majority of developers just don't have the skills required to do this successfully even though they are focusing on a more specific problem set.
2. Are you sure you fully understand your problem domain? It is possible that the community framework has flexibility you don't require for your use case. It is more likely that it simply has flexibility that you don't realize you will require because you have less experience in architecting applications than the sum of all of the community developers who have helped to shape the framework.
3. Do you understand exactly how the current frameworks work, why they work and which patterns you can safely remove (along with which patterns you might want to add)? To create your own framework without at least playing with and pulling apart current community frameworks is the height of folly. You may not need everything the community frameworks do and some of their generalized patterns may not be optimal for your problem space, but you can't even start to write a better framework for your use case unless you've ripped apart the code base for the community frameworks and really understand exactly what they do and why you would choose to do things differently.
4. Is it worth the time? It takes a LOT of time to write a solid framework (probably about ten to fifty times as long as you expect). And then you need to create documentation that is at least as comprehensive as that for the community projects. Wouldn't you be better using that development time to leverage existing community assets? Perhaps you could extend the community frameworks for your own use or even submit code for possible inclusion into the frameworks themselves.
5. Is it worth the learning curve? Not only you, but everyone else who has to work with the framework is going to have to learn your framework whereas many of them may already be familiar with MG or M2. Every time you hire a new contractor or developer you're going to have to teach them your framework. Is it really worth it?!
There are LOTS of reasons to use a community framework, but there is absolutely nothing wrong with writing your own (every application uses a framework - the only questions are whether they wrote it or leveraged an existing one and whether it is a good one or a hacky one). As always - it depends.
ColdFuion gets a lot of grief compared to other languages because there is a LOT of bad CF code out there. Custom frameworks get a lot of grief because most custom frameworks are not very good. That does not mean there is never a reason to write your own framework. if that was true, Model Glue and Mach-II wouldn't exist - we'd all still be using Fusebox as the teams behind MG and M2 "broke the rule" and wrote their own framework, so it clearly isn't always the wrong thing to do.
But remember, writing Model Glue or Mach-II is kind of like creating Amazon.com - it is way harder than you'd expect. The vast majority of e-commerce start-ups will not become Amazon, and the vast majority of custom frameworks will not become M2, MG or Fusebox level popular.
One other comment. There is NOTHING wrong with writing your own framework as a learning exercise. In fact, for anyone who has the time, I don't think anything could make you a better programmer than creating a framework (or set of frameworks) to replace MG, ColdSpring, Reactor and the various other community tools out there. I don't know that you could justify it on company time, but as a learning exercise it is a great way to really understand what you are doing.
So, without getting into the usual silly flame wars, does anyone else have any other specific heuristics they have used when deciding whether or not to use a community framework for a specific use case?