Nerds who love the symfony-project
16 Nov
Drupal has become the most sophisticated piece of PHP software that non-PHP programmers are aware of. Therefore, increasingly, when decision makers are comparing technologies, Drupal is the one they use as their PHP reference. Consider this line from Sam Ruby (who is a brilliant technologist, but who does not know much about the world of PHP):
But the more interesting trend is that the language choice itself is no longer as primary as it once was, the real choices are increasingly drupal, django, and rails, with the language being a consequence of that choice.
He is comparing a framework (Django) to a CMS (Drupal). Obviously PHP looks bad when that kind of comparison is made. Ideally, the comparison would always be between a framework like Django and a framework like Symfony. But I get the impression that PHP frameworks are almost unknown outside of the world of PHP. Wait, I’ll amend that, even in the world of PHP, almost no one has ever heard of Symfony. Yesterday I was at WordCamp, New York, 2009, and no one that I spoke to had ever heard of Symfony.
Birdhouse offers another example of Django versus Drupal:
Every web shop has its favorite tools and languages. Settling on just a few keeps toolchains, deployment, and development workflows sane. At both the UC Berkeley Graduate School of Journalism and the Knight Digital Media Center, we’ve settled on a mix of:
WordPress for basic sites and “modest” online publications
Django for sites with more complex needs or non-standard data models
For example, it makes sense to build student magazines, handbooks, FAQs, and blogs with WordPress. But it’s simply not possible to build an equipment checkout system, or a course evaluation system, or a student/faculty/staff directory with WordPress — not while trying to preserve your sanity anyway. That’s because WordPress assumes so much about the structure of your data — it thinks every piece of content has a title, a summary, an author, etc. Start to veer away from that basic data structure and you find yourself quickly needing a platform that doesn’t make assumptions about how things should be done. For those kinds of problems, we use Django.
…To be clear on terms:
WordPress is a simple content management system.
Drupal is an advanced content management system.
Django is a framework.
At no point is a PHP framework compared to Django. Instead, Drupal is used and loses almost every comparison:
Object Orientation:
Python (the language on which Django is built) is extremely object-oriented, and thus so is Django. This means that data objects, querysets, variables, templates and arguments can be passed around in the codebase easily….
Drupal is not object-oriented.
Templating System
Django is famed for its super-clean, inheritance-based templating system, which makes it almost trivially easy to nest templates within templates, use different templates for different parts of the site, and to completely eliminate any redundancy in template code….
In contrast, a common complaint about Drupal is that templates can be difficult to customize. In fact, there are entire books about working with templates in Drupal.
Performance:
…Bruno Desthuilliers: I recently had to work on a not-so-complex (functionaly-wise) Durpal project, and the response times on my local station – all caches disabled of course – turned the development process into a sluggish nightmare. Never had this kind of problems with Django, even for far more complex apps.
Then there are some responses from other developers:
Preston Holmes: What happens is that non-developer/technical decision makers will evaluate Drupal and think that all their needs will be met out of the box. When they find out they aren’t, they need to hire developers, and then those developers have to massage existing modules to customize and tweak. Then at some point they have this monster of hodgepodge code. But its that entry point that is the key to Drupal’s popularity. … I don’t think people appreciate how much Drupal development is spawned by this existence of a usable entry point for Drupal by non- developers. (and that it has 1-click installs on hosts, and in general uses the far more common infrastructure of PHP-MySQL).
I get why Drupal is the point of comparison that most non-PHP people use to reference PHP. Jacob Coby pointed me to this comparison on Google Trends. Clearly, Drupal is way, way ahead of the PHP frameworks. The situation here is very different than the world of web development using, say, Ruby, where the usage of CMSes is dwarfed by the framework everyone uses to do Ruby web development.
I’m not sure what the answer to this is. Symfony can not even lose these comparisons, let alone win them, until more people have heard of it, and the comparison of technologies becomes more of framework versus framework, which would be more fair than the current framework versus CMS comparisons. (When the Django versus Symfony comparison is made, Symfony is at least able to hold its own, with at least a few areas where it is superior to Django) More so, as I meant to imply with the title of this post, I believe there is a self-reinforcing dynamic at work. The more frequently that the Python versus PHP (or Ruby versus PHP) comparison consists of comparing a framework to a CMS, the more reinforcement is given to the idea that PHP can be used to build CMSs, but not necessarily the kind of complicated software for which one would naturally prefer a framework. In this regard, I think the prominence of Drupal is actually doing harm to the growth of the PHP frameworks.
How to break this cycle? Possibly some sort of killer app, built around Symfony, would afford an easy point of reference for the public, but I’d have thought Yahoo Bookmarks and Daily Motion would have offered us that, and yet, so far, Symfony still lacks mindshare, even among technically savvy people.
I’d be curious to hear, in the comments below, people’s ideas for promoting Symfony.
22 Responses for "Drupal’s prominence is hurting the growth of the PHP frameworks, such as Symfony"
[...] a new post up at Symfony Nerds, this one about the extent to which Drupal’s prominence limits the growth of PHP frameworks. I’ve seen a number of Django versus Drupal comparisons, which are a bit unfair, since they [...]
This is a topic that’s been hot on my mind for quite some time now. I think the answer is to make symfony more accessible to medium-sized projects where Drupal currently wins.
This is where I’m hoping something like Sympal can help out - to ease the creation of medium-sized sites with a fairly common feature set. Until we’ve got something like that, we honestly can’t compete with Drupal for a large number of sites. And if we can’t compete, we’ll stay in the shadows…
… when doing research for an old project of mine, I went through a lot of different PHP frameworks, downloaded them, installed them, looked at the datamodel, all in comparison with the features and ER model of the project.
Interesting here is that I looked at drupal, but choose not to use it, instead, Symfony was the choice.
The two biggest reasons was 3rd party integration with quickbooks and scalability, we were afraid that drupals datamodel would cause us headaches at the end.
This was for http://www.ted.com, and it’s still being developed upon, creating new features etc. It’s is now 2+ years running and have hundred of thousands registered users.
lawrence - I’m very aware of Symfony and other PHP-based frameworks. Sorry my piece made no mention of them, other than to say “We felt we were done with PHP.”
As for comparing frameworks and CMSs, I’m aware that there’s an apples-oranges problem there, but I think my piece made clear why I felt it was justified to make to make that comparison. Managers certainly don’t care about such distinctions (sometimes what you want to compare are types of fruit), and these systems all blur the lines between CMSs and frameworks anyway…
Ryan, good point. I actually agree with Birdhouse’s reasoning regarding WordPress versus a framework:
1.) Use WordPress for simple sites
2.) Use a framework for any site where the data model demands more flexibility than what WordPress can offer
But for me, when I move to a framework, the framework of choice is Symfony rather than Django. You make a good point that having a CMS built on top of Symfony would probably make Symfony much more competitive relative to Drupal, and Jonathan Wage’s work on SymPal is a good step in that direction.
Hey, there was at least one other person at WordCampNYC that knows about symfony… me! I even had the opportunity to meet Fabien at ZendCon last month. I consider myself a PHP guy who knows Drupal.. and snuck into WordCamp NYC.
But yes, you are correct. More and more people are making the comparison of one of the big CMSs against one of the frameworks but it goes a step further… At DrupalCon DC this year, I talked to numerous people who claimed to be “Drupal developers, not PHP developers” which still doesn’t make sense to me.
Overall, it concerns me because of your points above and also because of the lessons that each side is missing. The WordPress and Drupal guys are trying to solve many of the same problems - performance, caching, optimization, good design practices - that the PHP community as a whole has solved and they’re trying to do it on their own. At WordCamp Mid Atlantic this spring, only a few of the WordPress developers had heard of APC. And on the flip side, these groups *know* how to build communities, engage people, and keep things moving in (roughly) the same direction.
There are some lessons both sides can learn..
@Ryan - Sympal looks promising, but has anyone tried Apostrophe Now? http://www.apostrophenow.com looks like a very promising CMS plugin that can be used with Symfony
If Sam Ruby doesn’t know much about the world of PHP, you don’t know much about its history: http://php.net/credits.php
Sam was one of the original contributors.
@Karl - I think TED is great. I’ve seen a bunch of the videos. Good material. I think you sum up the CMS versus framework debate when you say “we were afraid that drupals datamodel would cause us headaches at the end”.
@Scot - thanks for clarifying that. I understand your reasons for comparing the options that you chose. I’m simply disappointed, as a Symfony developer, that Drupal gets attention even in cases where I think its use would be inappropriate - especially in projects that need a more flexible data model than any one CMS can provide.
@Keith - next conference perhaps we will have a chance to meet. Are you in the New York area? Myself and a few other developers go out for drinks twice a month - a mini New York developers meetup. Anyway, you make an important point about the redundancy of efforts now occurring in the PHP world - “The WordPress and Drupal guys are trying to solve many of the same problems… that the PHP community as a whole has solved”. Other languages tend to have a single dominant framework - Ruby/Rails, Python/Django, Groovy/Grails, etc. I wish the world of PHP was less fractured.
@eHabib - thanks for pointing out Apostrophe. I was aware of Tom Boutell’s pkContextCMS plugin since he’s written about on the Symfony Users mailing list, but I wasn’t aware that they’d turned it into a more general CMS.
@Nate - I appreciate what Sam Ruby has done in the past for PHP. More recently he put in major effort to try to bring WordPress to a point where it could be compatible with HTML 5. But I don’t think he follows the world of PHP enough to know what object oriented frameworks are competitive with non-PHP technologies. I read his blog religiously, and the only times I’ve ever heard him mention PHP, he’s been talking about WordPress or Drupal.
My two cents :
I was at first a rails developer so I prefer to use rails when I can use a framework. But this is not always the case. Often, I can’t control server config and virtualhosts. So at this point, I use PHP, but still can’t use Symfony (in a clean way, since it requires virtualhosts) and use a CMS (TYPOlight instead of Drupal) not to waste time writing all from scratch. So yes, in my mind, PHP == CMS. I guess I’m not the only one in this case, the problem you expose is more for pure PHP developers.
Another thing I want to say is that there is no need to have such a gap between CMSes and frameworks. Sure, they’re not the same kind of application, but CMSes could be just an additional abstraction layer on top of frameworks. We don’t like CMSes, but this is mainly because of their poor coding. We could build good and extendable CMSes on top of frameworks. This would ensure the good coding style of frameworks, and the “focus on specific features” gift of CMSes.
A few thoughts….
First, a question should be asked. Why is Drupal getting all the hype it gets? Understanding why others get the hype can help the Symfony community learn how to hype what they have and it’s worthy of more hype.
Some of the CMS are built on Frameworks. Joomla is an example of that. Joomla 1.5 has an underlying framework. Joomla has more users and downloads than Drupal. What about a CMS built on the Symfony framework? Or, some other popular type of thing that regular people can download and install? It would be a great way to show off the power of Symfony.
Drupal lets you do framework type things. You can build content types (objects), assign fields to them (properties), and do things similar to methods all without writing a line of code. For many developers this may be a negative. For people who want to build sites without being a developer this gets them excited.
At the end of the day decision makers want shiny thing that help them meet their goals cost effectively. When I first looked at Symfony I didn’t see anything about it that said this to me. How do you change the message Symfony says to decision makers and what should that be?
I would love to see Symfony take on a bigger role in building web products. Best of luck to you.
hi. i’m mainly a drupal developer that sometimes enjoys using symfony for projects that require a high degree of customization (i can say good and bad things about both worlds). i think that the drupal “supremacy” can be gathered from this page: http://drupal.org/project/usage.
there are thousands of plugins that often covers 90% of the end user need cutting down development time a lot (which is, alas, the most important requirement in the “real world”).
@oelmekki - I’m glad you mentioned the issue with server config and virtual hosts. I suppose that is the area where PHP has the greatest advantage, being installed everywhere - at the low end. Frameworks like Rails and Symfony tend to be used for larger projects where the developer probably has control of the server, so PHP’s ubiquity is less of an advantage in that scenario.
@Matt - thanks for the heads-up about Joomla. I had absolutely no idea how popular it was. I was surprised to see it rank so highly on Google Trends:
http://www.google.com/trends?q=symfony,+zend+framework,+drupal,+joomla,+wordpress&ctab=0&geo=all&date=all&sort=0
I do think CMS built on top of Symfony, like what Jonathon Wage and Tom Boutell have done, may help Symfony’s profile, though I suspect that is not the whole answer itself. I don’t think Symfony will ever be able to offer the one-click install that some PHP CMS’s offer. I think the argument has to be something like: “Symfony is an excellent object oriented framework written in the most popular web development language, and therefore allows ease of development for sophisticated software in a language that has a great abundance of programmers.”
Our company forced us (developer) to switch from symfony to drupal. Their excuse was that switching from 1.1 to 1.2 was time consuming. But the real reason is because they are still hoping for fast automagical CMS that would met all requirement. Look with drupal they could even ‘develop’ some piece of the website (in fact they are breaking it most of the time).
This switch is a complete nightmare, we are loosing huge amount of time on trivial functionality. Even worse internationalisation sucks so hard i couldn’t believe it.
Html intégration is ugly because you never know where to overide this markup or removing the junk autogenerated.
Guess what happened? Our manager nearly get fired and we are reswitching under Symfony.
Bah, use the right tool for the job. Anything other than that, and you are setting yourself up for failure. This sounds a lot like “me too”. There is so much hubris here, it’s suffocating. “My tool is better than drupal, and you should know that!” I agree, Drupal should not be compared to true frameworks (it’s a content management framework at best). However, stop blaming Drupal for your inability to get the word out about your project of choice. You are responsible for your own PR.
Thanks for the kind words about Apostrophe! By all means please try Apostrophe if you are looking for a CMS that is deeply integrated into the Symfony framework.
For Symfony devs, the killer feature of Apostrophe is probably support for “engines,” standard Symfony modules bolted directly into the CMS page tree wherever the admin wishes to put them. For your clients, the killer feature is strong in-context editing, picking up where sfSimpleCMS left off. We’re also pleased with the HTML filter that cleans up any messes left behind by the rich text editor. If you’ve ever had a client’s site break because they pasted some stuff from Word, you’ll appreciate this feature.
You can check it out here, both a live demo and links to the code:
http://apostrophenow.com/
Definitely check out the installation section and take advantage of the ‘cmstest’ svn project. We’ve already dealt with all of the dependencies there, and we’ve also released a script to duplicate the project in your own repo with svn externals intact.
It’s not out of the question that we’ll do a single-click install for folks who don’t know Symfony at all. Try our demo for an example of that: it spins up a new and completely distinct CMS site on the fly. But right now we’re reaping the benefits of engaging with the Symfony developer community by releasing our CMS in a form that works for Symfony developers. That has generated great bug reports, feature requests and even bug fixes for us.
Drupal’s creator, Dries Buytaert, repeatedly refers to Drupal as a Framework: http://buytaert.net/8-steps-for-drupal-8
In many senses, it can be used a framework, so I don’t see a problem with referring to it as such if that is how you are using it.
However, that said, I agree with Jared, stop blaming Drupal for your inability to do PR, it makes me less likely to want to explore Symfony.
[...] recent blog post at symfonynerds stated that the popularity of Drupal was hindering the success of PHP frameworks, especially [...]
Yeah I can definitely understand this pain. Right now their are lots of CMS platforms: Drupal, Joomla, DotNetNuke, etc. that has 80% of website features out of the box. Often times you can use thinks like CCK and views to get some of that extra 20%… but sometimes that 80% is a real pain in the ass to customize. That’s when you look and see if Django or RoR or Symphony can give you a framework that can get you what you need in less time and perhaps give you more flexibility. It’s so many trade offs, really i guess it’s the build versus buy argument.
I agree that there is a mass-misconception in the PHP space about what a framework is versus a CMS. My suspicion is that many consider them one in the same and are ignorant to the benefits that a true framework can provide.
Most website developers want to bring products to market quickly and with as little learning curve as possible. In other words, they don’t want to learn a framework and they want to make fast money. Drupal can be the answer if these are the questions you’re asking.
What are the questions asked that lead to the answer of ‘Symfony’, ‘Cake’, or ‘Solar’? I have a feeling they would entail infinite extensibility, unit testing, bridging with other libraries, optimization and security, to name a few.
[...] Last month I complained about the prominence of Drupal. The comments in that thread show that Drupal has some very strong supporters. However, Drupal started life as a CMS, and still shows some traces of that, in terms of assumptions about database structure. Also, its files live within the directory of the server that is made available to the public on the web, something I regard as a security risk. Karl made a good point in a comment in that thread: Interesting here is that I looked at drupal, but choose not to use it, instead, Symfony was the choice. The two biggest reasons was 3rd party integration with quickbooks and scalability, we were afraid that drupals datamodel would cause us headaches at the end. [...]
Leave a reply