Frameworks are all over these days, each one does something a little bit different than the others, trying to stand out. Honestly MVC does a really good job on the web. Building a website,or application? No problem, there’s an MVC framework for that. Whether it is Zend, CodeIgniter, Symfony or any other, they are used everywhere.
But what about where they aren’t appropriate? What tools do we have for when we want to add a piece of functionality to a site that either isn’t part of a framework, or a tool in the framework doesn’t exist? Well, you are left two options, build it yourself, or find some script someone wrote and do your best to incorporate it into your site.
Now this really isn’t so bad, until you have 3, 4, or 5 of these different classes, and scripts, and then you want them to integrate with each other. That is where the kicker really comes in. Then you have to spend time digging into these unfamiliar classes to patch together a relationship that just wasn’t meant to be.
So is there a better way? Maybe, I’ve lately been pondering the idea of a facet or module driven framework. This kind of framework may still embody some of the MVC patterns (“if it isn’t broken don’t fix it”), but lends itself to being more flexible.
For example, imagine a way to decouple modules of a traditional MVC like Zend or Symfony, and be able to use them on any site with ease. But, when multiple facets/modules are brought together, they know how to talk to each other and integrate.
The first question that arises of course is, “Is it possible to do with a small enough footprint in an easy way to implement and configure?”.
I don’t know.
There is also the question of performance, if you were to place all of the components together into its full framework, how would it stack up? Likely, it would be slower, but then, the idea isn’t to use it as a full blown framework. The idea is to be able to cherry pick framework-like pieces and use them together seamlessly, without being constrained.
Over the next months this is an area I will likely explore. To anyone who happens upon this article, if such a framework/tool exists, I would be more than happy to see it.