Drupal's Creator Aims For World Domination
angry tapir writes "Open-source content management system Drupal has come a long way since it was initially released in 2001. Drupal now runs 2% of the world's websites — but Drupal's creator Dries Buytaert thinks that this could easily grow to 10%. I caught up with Dries to talk about Drupal's evolution from a pure CMS to a Web platform, cracking the enterprise market, and the upcoming release of Drupal 8, which features significant architectural changes — incorporating elements of the Symfony2 Web framework to replace Drupal's aging architecture."
Does it have a sane menu system yet?
A bloated CMS is bloated no matter what language it's written in. That's like blaming the hammer for the house being crooked. :)
For PHP? Yes, if the hammer is a wrecking ball controlled via satellite from a bunker in Nevada.
For better or worse, WordPress has more marketshare than all other CMS-es combined.
See http://w3techs.com/technologies/details/cm-wordpress/all/all for an up-to-date look.
Many people still think of WordPress as a blogging platform, but it's really so much more nowadays. Security is not worse than with other solutions, it's just that (like with Windows), popularity attracts attention (and attacks), and usually poorly-made plugins are the problem (the timthumb vulnerability was the most notorious one).
I worked with many CMS solutions over the years - Allaire Spectra (anyone remember it?), DotNet Nuke, Typo3, CMS Made Simple, Joomla, Drupal, even hosted solutions like Squarespace and a bunch of others I can't even remember, but WordPress was the only one I could really develop for (functionality, themes, etc.)
PHP is not getting a lot of love, especially here on Slashdot, and Drupal is one of the reasons to blame. Sure, PHP has its fair share of design flaws, but ever since version 5, it's a decent enough language to code in and can get a lot of done.
The problem is with Drupal, Wordpress, Joomla and other very popular CMSs and frameworks which are all a strange mix of procedural and oo code, and lack a proper distinction between model, views and controllers.
Its problems are certainly not the things that are often quoted, like mysql_real_escape_string (which just follows C api and is deprecated anyway), or inconsistent naming conventions. The problems are deeper - things like lack of threads comes to mind.
Still, the reason why I like PHP is that with a good framework (e.g. Zend Framework 2 is promising, but there is also CakePHP, FuelPHP, CodeIgniter, etc.) you can build a very solid application. Procedural PHP is actually a fantastic and very powerful template engine and otherwise you can write relatively clean and easy to read code in it if you structure the program correctly. It's very simple to deploy (especially compared to e.g. RoR) and has extensions for pretty much any database or graphics library or anything else a web developer may need.
I've worked with Drupal for cms websites and seen it used on other customer sites. You should never use it, seriously. It's remarkably similar to early php in being a fractal of bad design. They are slowly trying to improve it, but their attempts at improvements are woeful. Some problems (which they've attempted to address, but many of which still plague users):
Hundreds of tables with the most Byzantine schema you can imagine, even for incredibly simple needs
Attempts to allow customers to define the db schema by adding fields etc
Code in the db - that anyone ever thought this is a good idea is a huge red flag
Upgrades are often incompatible
A horribly broken plugin system and ecosystem, resulting in sites which load hundreds of plugins to support simple tasks, and therefore have a huge attack surface and a huge amount of unmaintained, scarily bad code. I've seen sites with hundreds of these modules loaded.the learning curve is huge and the code extremely fragile due to the above decisions
Content is all stored in 'nodes' which are infinitely flexible, and therefore infinitely opaque and difficult to work with
There are no pros or professionals working with Drupal - anyone who was a pro would have run a mile a long time ago, so don't listen when someone says 'oh well you just don't know drupal well enough'
I dread to think what would happen if security professionals looked carefully at many drupal sites due to the above, particularly the modules situation. The closer you look at the code, the worse it gets
If you're thinking of using it for a php cms, think again, look at Wordpress for example - the code is relatively clean (though it is still php of course), the plugins are better maintained and fewer are required, upgrades for security are no hassle, and they didn't come up with crazy ideas like code in the db in the first place. I'd personally choose other options/platforms, but at least with Wordpress the environment is pretty sane for a small time cms, easy to adapt and friendly for an end user.
To be fair, as PHP CMS' go, Drupal is one of the better ones.
Things like Joomla really are bloated in that they basically dictate how your site must be, and sure you can change that but you have to jump through so many hoops you're probably better off just starting from scratch unless you want anything other than their boiler plate.
Drupal at least was much more modular and generic and so made it easy to pick and choose what you do and don't use, and to decide how you wanted to do things so you could do more, and do them your way. As such I'd say it isn't bloated because you can strip it down to a fairly bare bones setup and it is fairly quick and easy to do, and fairly bare bones to start with even.
But at the end of the day it's still a PHP CMS and when you have Python now (a dynamic language that has at least some solid CS understanding behind it) then there's little point using any of the PHP CMS'. I've always been a best tool for the job type of person, but as time has gone by I've found that the jobs where PHP is the best tool have rapidly begun to dwindle towards extinction, simply put, there always just seems to be a better option now.
Personally though the more large projects I've done with dynamic interpreted languages the more I prefer to stick to compiled. They're great for getting something up and running quickly but when your code base reaches any reasonable size then it's far more useful to have the compiler catching things before execution that can only turn up as uncommon and hard to reproduce bugs with a dynamic language and as your project grows, the more the scope for that increases. This means that for larger projects, compiled languages actually often make development quicker because less time is wasted debugging. Beyond small projects interpreted languages quickly start lose their benefits, though this is in part also because compiled languages like Java, C#, or even C++ seem to have better, more mature toolsets built for them.
But regardless, whether you sit on the interpreted or compiled side of the fence there's little place for PHP now given that it doesn't even have for example, any proper threading support, the sort of thing which is becoming more and more important, and is outright essential to some applications.
There is the difference that with a standard PHP setup, the whole framework must be parsed from the code
Look at APC - compile once and cache the code thereafter
establish database connections
Find out about Persistent connections
for each page view. With RoR, Django, etc., those things are only done once upon application startup and all pages are then served by the running application. Much faster.
I am not saying that PHP does not have its problems, but it is a good web platform. PHP's main problem is that there is a low barrier to entry, so people who do not have much clue can produce something ... that looks good, but is buggy with horrible security problems.
As a web developer with ~10 years professional experience, the last of 5 of which have been with Drupal, I say Drupal rocks.
Drupal is a great fit for many web development projects. It's 100% GPL open-source software with a thriving development community.
It has a solid a reliable core architecture extensible via a modular plugin system.
Although there's a learning curve, it's worth it.
Like every release, Drupal 8 is making taking steps to improve on the previous, for D8 these include.
1. Integration with the Symfony PHP framework.
This lowers the barrier to entry to Drupal by allowing developers familiar with the Symfony framework to easy transition to building Drupal websites, leveraging the power of both.
2. Enforcing MVC architecture
Drupal 8 includes a new, non-php, default templating engine called "Twig" ( http://twig.sensiolabs.org/ ). No more PHP code in templates.
3. Pure core Drupal 8 includes more in core to achieve the functional requirements, without the need for additional plugins. For example, Panels style layout builders and the Views style report query builder as well as the ctools framework are now in core, along with the usual frameworks such as the Entity and Field API.
I've used Drupal with a wide variety of government and corporate IT projects.
Common server architecture includes, Linux, Nginx, Postgres/MySQL, PHP5, APC, Memcache and Varnish.
If you're looking for a solution for your next web development project that's easy to set up, and supports and extensible and scalable architecture, checkout Drupal, it rocks!
I'd be interested to see some concrete examples, I have a hard time understanding why you would say that, save perhaps that Drupal has far more *abstraction* - that's not the same as being cleaner and leads to greater complexity if overdone. I don't really want to defend WP as it's not my idea of brilliant architecture (far from it), but they have kept it much simpler and procedural than Drupal, which is incredibly complex when it comes to rendering or even the simplest helper modules. For example:
Drupal date module: 14kloc (YES > 14,000 lines)
WP date helpers/calender: circa 1kloc
Rails date helper: 970 sloc (doesn't include visible calendar, I'd use jquery-ui for that)
Yes the above helpers probably do less, but the contrast is stark, and sometimes less is more (security, maintenance, readability). I didn't count the loc of some clients sites I've looked at, but wouldn't be surprised if it was in the hundreds of thousands for relatively simple sites due to core and modules.
Or, the quite famous PHP hammer.
PlusFive Slashdot reader for Android. Can post comments.
There's been a lot of discussion in the Drupal community recently about making major updates easier by offering backwards compatability, the consensus (best as I could tell) was that web technology is moving so fast that we need to be able to refactor quickly, though maybe in a few releases (6 years or so) Drupal will have completed the move to Symfony / OO and it will be worth looking at then.
I love Drupal & its community - I've been working with it professionally for 8 years or so, and the constant improvement in the tools keeps things interesting for me. I spend most of my time working on edge cases where modules don't quite work together and I submit a lot of small patches to improve them. I've got a lot better at grokking other peoples code - a talent I think is more valuable than 'writing my own cms from scratch', though I've done that before too. I also dabble in various other techs after hours to keep up with new languages, and run my blog on Wordpress. Wordpress horrifies me from a technical perspective, but I just want to post content, and using it keeps me focused on that, as opposed to tweaking my Drupal install all the time.
I used to freelance for smaller clients, but now i just refer them to Wordpress folks. They get better bang for their buck, and I don't have to deal with annoying budget overruns. Drupal is insanely good for big business who need complex workflows, asset management, community management, service integration and migration. Its really hard to build something that complex in a way that makes sense, stays stable and provides an upgrade path (however difficult that may be) and security support.
I feel your pain though :)
Don't point that gun at him, he's an unpaid intern!
Check out the lastest 8.x version by going to http://simplytest.me/project/drupal and choosing 8.x. The site will install 8.x-dev for you and you can play with it.
Some things to look at:
- In place editing
- CKeditor in core
- Responsive out of the box (check the new admin menu)
- Views in core
There's a heap of scary awesome changes going on in the backend though
- replacing lots of sub systems with Symfony components
- RESTFUL services by checking a checkbox.
- TWIG as a templating engine
- Configuration management initiative
- HTML5 and mobile
- Far better multilingual support than previous versions.
check out http://groups.drupal.org/drupal-initiatives for more info.
Don't point that gun at him, he's an unpaid intern!
I have been using Drupal to do site development for 5 years now. I have developed small and medium sized sites for everyone from restaurants to professional membership organizations. I use it for sites of all sizes because eventually someone asks for a feature that isn't available or is painful to implement in WP. I have written custom modules and complex themes in relatively short timeframes because of the flexibility of the platform.
You don't like Drupal - that's great, don't use it. I am not a big RoR fan. I tried it out for a new project at work and it just didn't "feel" right. I was able to get the Symfony2 framework up and running pretty quickly and we are developing a multi tiered app in house with it. I don't hate RoR and I don't need to bash it. Plenty of intelligent developers who know more than me are using it and developing kick-ass software. It just didn't fit for me.
Nah - we can't have that kind of adult response. Quit liking what I don't like!
Yes, no sites have ever been built with it, and no one ever found it to be useful ever. OK. Your argument is very sound sir, and I would like to subscribe to your newsletter.