Drupal or some other popular PHP framework?
Howard Tyson at BADCamp this past weekend summed up the question fairly succinctly. “Let’s race. We’ll build a flickr clone. I’ll take Drupal, you pick Zend Framework, or Symphony, or Rails. Whatever you want - let’s just see who wins.” It might seem overly confident, but it’s true.
But before I get totally flamed by someone with use cases that Drupal can’t satisfy, I concede that there are many such cases. But if you look at the true reason most people lean to one or the other, it's sometimes as simple as what they know.
When I was a kid, I made all sorts of things out of wood with my father’s woodworking tools. I was proud of my creations (monstrosities?), but thinking back, how many times did I spend too much time cutting something with the wrong saw blade only because that’s all I had? Even a good quality saw blade was inappropriate if it was the wrong one for the job. Usually I could make it work...eventually...but mostly it was a product of nothing more than sheer will (square peg, round hole you might say).
The cuts were always rough (and it looked the part I can assure you) and I probably went through five saw blades when it should have taken just one. And in those days, I had all the time in the world so none of that even mattered. I only cared that the final result matched what I had envisioned.
In the real world though, there are many more things that are important: how long the manufacturing/development process takes, what tools to use, how refined the final product is, how well it functions. These aren’t experiments anymore - we’re dealing with the success or failure of your project - and we must pick the right tool.
Sometimes, I’ll admit, you need to control every part of the application stack (maybe when you’re site isn’t structured around content or when you have a very specific performance scenario). And in those cases, it might make sense to use something other than Drupal. But the use cases seem to get less and less as time goes on - and frankly, the new advancements of Drupal are actually shrinking that gap with each passing day.
Why? Because many (many-many-many) people use Drupal and they help fill in those missing gaps by writing contributed modules or helping to improve Drupal’s core code. Drupal 8 is even starting to take advantage of specific parts of Symphony, which will make Drupal even more powerful...truly the best of the worlds of performance and abstraction.
When considering a framework over Drupal, it’s important to keep in mind that in order to really achieve the benefits of something like Zend Framework (which in theory has all sorts of functions for every scenario, but in practice doesn’t quite work out that way), you really need an experienced person to leverage the full power of it - and that person is rare and expensive. Truly, it takes a much more experienced programmer to knit your application with a framework because he/she is required to engineer more from scratch. And it takes longer to boot.
With Drupal though, so much of the work is already engineered by experienced people using it all around the world. It’s not just lines and lines of contributed code from engineers around the world. Rather, it’s something more: combined and united experience about how websites work and flow.
Any good engineer can build a login system. But what then? Drupal is a consortium of experts: from coders, to designers, to themers, security experts, user interface engineers, content strategists, and even businessmen and entrepreneurs. They all bring their backgrounds to Drupal in order to push, pull, and twist this movement into the hands of the next person who needs a website or app tomorrow - better, faster and easier to deploy than ever before.
When considering the undertaking of a new project, whichever route you chose, keep in mind that the most important factor is a good team. Put even the best tool in the wrong hands and it won’t matter how good it is. Drupal and the frameworks I’ve just mentioned all have both successful and failed projects under their proverbial belts. Your team should have experience with many tools in order to know what’s best...otherwise knowing the best framework for the job is simply not possible. Pick your team wisely. Then let them pick the tool.