First of all, thanks to everyone who read and commented on the original post. If nothing else, I got some (angry) tips for how to improve my Drupal experience when I do have to use it. It reminds me of this bash.org gem: Start the sentence with “Linux is gay because it can’t do XXX like Windows can”, and you get Linux geeks rushing to angrily help you. So again, thanks everyone.
That said, I haven’t changed my general opinion about Drupal, and this week I’ll be addressing some of the recurring points from the comments.
Let’s start with:
Q. What do you recommend in its place and under what circumstances?
A. If you’re building a web app with complex requirements, build from scratch.
I’m a programmer by trade so I’m usually inclined to “roll my own”. If your project is less “website” and more “web app” with many custom features, you need an architecture to work around your requirements, not the other way around. There are plenty of frameworks—Rails, Symfony, Django, to name a few—with enough plugins that you’ll get many of the same features that Drupal offers, such as user management and authentication, without sacrificing flexibility.
More importantly, rolling your own leaves you in charge of deployment procedures. My number one issue with Drupal is deployment. Storing configuration in the database makes deploying a Drupal site across multiple environments a huge PITA. There is a module dealing with this—of course—but it’s still in active development. And as far as I’m concerned, the sheer fact that this has to be dealt with through a third-party add-on is evidence of bad design.
In the original post I wrote that it’s possible to code up a custom CMS in a couple days, and I stick to this statement. No, it’s not possible to code up a Drupal replacement, i.e. a CMS that can be used for “anything”. But it’s definitely possible to code a basic custom CMS for *one* site. And custom-tailored suits, if well-sewn, are superior to off-the-rack jackets. This is hard to dispute.
Blogging? Use a blogging engine.
Use Wordpress, Typo or any of the other excellent ones out there. I happen to use WP but don’t have a particular bias.
Simple content site? Off-the-shelf CMS (including Drupal) is fine
If you’re aiming for something a tad more complex than a blog, but that is still limited to presenting content to a limited audience, and you don’t need much flexibility beyond the front end, and you don’t have complex deployment procedures, and you don’t have a team of developers working on the site, and there won’t be much post-launch development (that’s a lot of ifs) by all means use a general-purpose CMS. This can be Drupal (I said as much in the original post), but in the comments I’ve also seen people recommend these, in no particular order:
(I’ve excluded Joomla, a big ball of spaghetti fail. Wonder when the hate mail will start for that one…)
In short, I stand by my statement. Use an off-the-shelf CMS if you don’t need to do anything fancy. And if you’ve tried ay of the Drupal alternatives I mentioned above, please write in with your opinions.
19 Comments
Drupal is PHP right? You were right in the first post: It sucks.
Another useless, uninformed post by a person with NIH syndrome.
Enjoy wasting your time rewriting everything. The rest of us will enjoy Drupal, Joomla, etc.
Sure will, especially when “rewriting everything” takes less time than configuring an off-the-shelf CMS to do what you want. And no one “rewrites everything” anymore. That’s what we have plugins for.
I think ExpressionEngine is an interesting one, especially with it’s new plugin: Structure.
MODx needs a kick in the ass. Drupal FTW!
I agree with you. Drupal has so many problems with its 3rd party “non core” items being Pieces of Crap that to use many modules outside of core (which you MUST use if you are to have a decent operating site: Views, image handlers, CCK, etc) you run the increasing risk of site failure and at the very least slowness.
Drupal is more promise than anything, but it fails to deliver. Strangely, my most lucrative clients ARE Drupal clients, who constantly call me confused and needing repair or support. All my projects that are over-budget and missing deadlines are Drupal-based. Adding Drupal “experts” at $150/hr hasn’t solved any problems yet.
CMSMadeSimple.org
A CMSMadeSimple site is not nearly as full featured as Drupal + dozens of modules site, but CMSMadeSimple does work right away and is easy for clients to use.
One of the most fascinating and brilliant about CMS Made Simple is the idea of internal linking. This means that if a page called “My Page” is located in a certain part of the sitemap and it moves to another part of the sitemap and even changes name/url…all other internal pages that link to this page will AUTOMATICALLY update their link to find the destination page at its new location. Eat your heart out Drupal!
Thanks for a calm and reasoned analysis. I whole-heartedly agree.
I just did an audit for a failed project that attempted to use Drupal, am saving another Drupal project that went awry, and am trying to decide next week if I have the stomach to bailout yet another client who got sold on Drupal, configured a few things, and is now lost. All in the span of 1 week.
The majority of the failures/overruns are people trying to use the wrong tool for the job. ie. Trying to force Wordpress into a CMS, trying to force Drupal into a web app framework, using a CMS when all you have is a static site with maybe 1 or 2 changes a year, etc…
I come from a sw engineering background and like you have experience with a wide variety of tools and frameworks, plus years of experience. I pick the tool based on the requirements and am not married to any one framework, tool, or language.
BTW, if you are looking for an minimalistic, intuitive CMS that hits the sweet spot for sites without a lot of heavy CMS baggage, have a look at Radiant.
And are you confused and in need of repair?
That Drupal requires 40 or so database queries for even the most simple of pages and hundreds for more complex pages, tells you all you need to know about that pile of garbage and the people who wrote it.
Thank you for this article. I tried using drupal for one of my sites and it was a huge learning curve. The most simple activities such as removing “view” from the my account page was a nightmare and I still have not got round to doing this. Thanks for the interesting advice. I will check out those other links.
This might be helpful reading for someone:
http://www.ibm.com/developerworks/ibm/library/i-osource1/#N10245
I think Drupal is widely accepted as one of, if not the most complex, but most powerful open-source CMS available. It comes with its own terminology and way of thinking which even experienced developers have to get their heads around, so there is a learning curve for everyone.
Having been part of a team that has rescued many failed Drupal sites, we know what it looks like when the wrong people get their hands on it, and yes it can turn into a nightmare. However if you know what you are doing, Drupal is a dream to use, and actually really helps budgeting and project planning.
Escuse me, but I think you dont’ know well what you are talking about.
Drupal has been used in enormous project of huge complexity; rewrite everything?
database abstraction layer, user, management, modularity, and more important visual project and customization: often you don’t have to write a single line of code.
http://www.whitehouse.gov is drupal based: think about it.
The Drupal fan boys miss the point. I’ve used Drupal and find it useful, but it’s not very user friendly or intuitive for that matter. Drupal 7 is meant to be a big improvement, but I’ve not sat down to use it yet.
In fact the company I work for uses Python so I’m learning Python because I, like the author of this post think that for some projects writing your own is better than trying to bend a CMS to your requirements.
Python seems quite good so far, and Django is meant to be a good framework too.
It all comes down to what you are trying to achieve and what your budget is. For simple sites that only require minor updates every so often simple CMS’s look good. For complex community driven sites Drupal may be the trick. Each project will have different needs so you can’t paint them all with the same brush.
I will say that I’ll never use Joomla ever and I mean ever! Life is too short to use bad software.
I agree with everything in this. Having worked with Drupal, Django, Silverstripe and Codeigniter I’d like to think I know a bit about what is best.
I used to use Drupal a few years back, before I had been introduced to these other frameworks and tools. I thought it was the bees knees, you can install these modules and override just about everything. But when I started working with other platforms I quickly changed my mind.
Drupal takes the worst aspects of a framework and combines them with the worst aspects of a CMS. Configuration is a huge pain in the ass, since it’s stored in the database. It’s generally hard to use and slow. The api is very procedural and ugly.
The queries for your content will usually do over 5 or 6 joins, which is horrendously slow.
Drupal is for people who want to build a whole website by clicking buttons. You could say it is the Dreamweaver of the CMS world. Developers are far better off using a framework where your work is done with clean code. If you use version control this is a huge win. Maybe if you’re not a developer it will be good for you because of this. However it is not a tool any professional should ever use.
Django or Silverstripe introduced me to clean object relational mapping, classes, simple templating (Drupal templates are very hard) and scaffolding. I prefer Django, because python is far superior to PHP, and the community is much larger. However silverstripe is both a great CMS and framework for content driven websites. To be honest I think Silverstripe stole a few ideas of Django. In either of these frameworks one just quickly write some fields into a model class and have the administration backend generate the forms and navigation to manage the content. Compare that with clicking 20 times to make your CCK model in Drupal.
Django, Rails, C# .NET are all used for large *dynamic* websites. Just because the white house puts up a news site they cache the shit out of doesn’t mean Drupal is a good solution. Also, PHP sucks balls. It’s 2011, move on from this legacy language. Until the Drupal fanboys have given the alternatives a try they should STFU.
my 2 cents…the problem is not Drupal, but spend a lot of time learning useless things, that will be died very soon in the future…we like to spend time in meaningful things. If was possible learn drupal in 1 or 2 hours, ok, this is a great framework and i can use it in some of my projects, even the hard ones…but 1 or 2 weeks for only a scratch in the surface…omg, every minute learning drupal seems absolutely a waste of time, and the consequence is angry and frustation.
The idea of a one-size-fits-all CMS is a weird one. Some people use Drupal as a CMS, others as a framework. As others have said, the problem isn’t Drupal, it’s PHP.
If you have to stick with PHP, use PIMCORE or roll your own with Zend.
Typo3 is a pig. Don’t try to use it unless you have a lot of serious resources. Joomla is a bad joke. A total nightmare. Wordpress is fine for a blog (if you don’t mind being pwned), but a bad idea for a complex site. Use blog software for blogs, not for other kinds of sites. CMS Made Simple was headed in the right direction, but then they ditched their “let’s re-architect this like sane people” 2.0 project, and most of the best people have left the building. If they sold stock, I’d short it. Does anyone seriously look at projects like MODx or Website Baker? If so, they need help.
2 Trackbacks
[...] Edit: First followup posted. [...]
[...] Drupal Sucks ou “Drupal Sucks” Followup: Drupal Alternatives par Mariya [...]