Wordpress vs Drupal: Developer's Edition
In my last blog post, I talked about the difference between Wordpress and Drupal in terms for everyday users. In this post, I would like to highlight some of the differences when you're a developer and possibly some advantages you might see in Drupal when compared to Wordpress. Now, put on your developer hat for a moment. You just signed a client and went over the site requirements and they want their site on a CMS. Do you go with Drupal or Wordpress?
Plugin Saturation
One of the biggest problems I see with Wordpress is the plugin saturation in the Wordpress plugin directory. Let’s say you’re building a site and get to the point where you need to add functionality and you require Facebook authentication. If you go to the Wordpress plugin directory and search "Facebook", you will get literally over 3,000 results, and you can only filter by the popularity tags on the side. If you perform the same search for modules on Drupal, you will get around 240 results. If we’re on Drupal and using version 7.x and need it for user authentication, we add those filters and now we're down to 15 results.
How do you know which plugin is the right one for you? The Wordpress market is saturated because it's much easier to get a plugin in the directory. Essentially Wordpress is just hosting it for you. In order to get a module into Drupal.org, you need to first gain access by submitting your module for review to allow other developers to look over and make sure you are writing secure code and following standards. This process ensures that duplicate modules aren't being submitted, allowing for higher quality. Instead of building a new module, the community would rather you improve on existing projects.
Wordpress has been praised for being able to easily upgrade from one major version to the next, but not all plugins are compatible with the next version. So what's the point? I've also heard the complaints on how upgrading Drupal to the next major version is a severe pain and sometimes impossible, which is true. Of course, it's not always easy upgrading from Windows 98 to XP to 7 either. In Drupal, modules are made for major versions, and are meant to stay on the major versions. Updating the core version of Drupal, such as security patches, is not meant to break existing modules (even though I won't say that doesn't happen). In a recent article from Darren Mothersele, David Axmark of MySQL commented on the Drupal's policy of not requiring backward compatibility.
The Drupal thing with not being backward compatible, is an absolute pain for people who need to upgrade, but it also ensures innovation… if you have to be backward compatible for a very long time … what you can do gets more and more limited and Drupal not having to be backward compatible allows for more innovation, which is why Drupal is where it is.
David Axmark, co-founderMySQL
A problem in Wordpress is that there could be many different plugins you could try that all work a little bit differently, but may not have everything you need. The Drupal community would rather you collaborate than compete to continue building on great ideas. This brings me to my next point.
Wordpress developers are sharks
To me, Wordpress sharks are people who are out for themselves, and themselves alone. This is a sense you get when needing support for a plugin or looking in the forums. I'm not saying that there aren't helpful Wordpress people in the forums or on Wordpress Answers. There are, but it just seems that a common answer to plugin additions is along the lines of, "Just write a few lines of PHP yourself and you can have that sorting function." Obviously, this is probably the case for free plugins and I understand the reasoning - what's the motive to give something out for free when it can earn money? For example, how many paid Drupal modules do you see compared to paid Wordpress plugins? Not very many. Not even close. Wordpress developers are here to make money, not to give out free support - and I'm okay with that.
But I also believe one the strongest features of Drupal is the community itself. Even when there is a specific functionality a company needs, the module is essentially sponsored by the company to build and then given back to the community in the form of a contributed module.
What's the point? This debate has been going on for such a long time. The question is, why should we open source something? I listened to Travis Tidwell speak about this at Dallas Drupal Days last year and his answer, "If you don't, someone else will." If you're the first to open source a module that has a lot of functionality, you are now the resident expert, the go-to-guy. This comes with a lot of responsibility such as module maintenance, but it also comes with a lot of praise and recognition. Do I believe Drupal modules should be sold? I think they can be, but to make any money it needs to be from the sale of an API, not the module itself. Our own Brent Bice talks about this very same idea of selling APIs and third party services.
Mobile Integration
I don’t have to say this because we all know it, but mobile is definitely becoming the priority these days, in some cases higher than desktops. Being able to integrate and use your website as a mobile backbone can be really helpful. By using a CMS as a backbone, we can integrate our data with an app very easily using PhoneGap. Wordpress has a Rest API available, as well as a plugin (JSON API) to retrieve and change content. Unfortunately, it hasn’t been updated since January 2011, and there are only a few articles online with PhoneGap/Wordpress tutorials unless you want to buy the book.
Luckily in the Drupal realm, there has been a ton of support for this integration. There is an entire project, Drupal Gap, dedicated to bridging Drupal sites and mobile applications through the use of Drupal modules and PhoneGap. Not a PhoneGap fan, but still want to build a hybrid mobile app? Try Drupanium, which is an API to link Drupal and Appcelerator’s Titanium. Even if you’d like to stay native, you can use the Services and Services Views module to create a Rest API endpoint, and do the rest natively. Jeff Linwood, a native iOS developer in Texas, used the same approach when building an iPad app for the Kimbell Art Museum in Ft. Worth.
Distributions
As far as I can tell, this is only a concept in the Wordpress world (except for maybe Jetpack). If I'm wrong, please tell me in the comments below as I couldn't find anything about this in my research, except a 2009 article from David Coveney. In Drupal, this is one of the most awesome features. A distribution in Drupal is basically a set of features, modules, themes, and configurations all packed into a single installation built around a specific purpose, such as ecommerce or a community. Examples include Commerce Kickstart, Drupal Commons, or even our very own Open Enterprise. This allows you, as a developer, to have a starting point of more than just standard core, significantly cutting down your development time.
All things considered
If you're a hardcore Wordpress developer, I probably won't change your mind and that's okay. I'm used to Drupal and trying to move to Wordpress was difficult for me, so I understand. Drupal isn't Wordpress, and sometimes isn't even considered a CMS - but a CMF (Content Management Framework). Drupal is literally capable of building Wordpress. Larry Garfield of Palantir makes a very good point, Drupal can be used to build a tailored CMS. If you're teetering on the fence of which way to go, just consider taking Drupal for a spin.