Over the last few years I started working extensively with Drupal. I first started with Drupal 6 and late last year got into Drupal 7. Drupal has seen widespread growth and I only see the system improving going forward.
This isn’t to say that Drupal is the only system you should use. But when looking at the system objectively, I think there are some advantages and disadvantages in choosing Drupal 7.
Drupal 7 Advantages
- Admin Power: If you have experience creating PHP programming websites from scratch, than you know how much work it can take in programming a website. Drupal 7 takes care of 90% of what most people need in a website and provides the ability in having the website content updated through an easy to use admin interface. In fact, the UI interface from Drupal 6 to Drupal 7 has become much more user friendly. What took 20 hours to implement via a totally custom solution, now takes 30 minutes. This is probably the biggest advantage in using Drupal 7.
- Contributed Modules: When Drupal 7 first came out, most of the major contributed modules were still in beta. However, it finally seems like the modules are in stable releases and more contributed modules are upgraded more frequently now.
- Theme Layer: The default theme layer uses PHPTemplate, but other engines can be used. It provides a flexible way for non programmers to create and modify the design of the site without requiring PHP knowledge (even though some helps).
- Active Community: With this type of system, you want people actively working on the system and modules so that bugs and security flaws are ironed out quickly. With Drupal 7, we’ve seen updates to core come out every 1-2 months since the stable version has launched.
- Custom Programming: Drupal 7 has added many hooks that allows a PHP programmer to tap into the system and contributed modules to modify behavior. This allows for extreme flexibility. In the case where you need to create a custom module from the ground up, the Drupal form API becomes a very useful and secure tool at your disposal.
- Fields: With Drupal 7, fields became widespread across the system. You now can add fields to pretty much everything: nodes, users, comments, custom entities, etc… This allows for easy customization throughout the system and is a very handy feature.
Disadvantages of Drupal 7
- Learning Curve: Once you get familiar with the basic mechanics of the system, it becomes second nature in how to do the most common things via programming. However, getting to that point requires referencing the documentation a lot in the beginning. The curve has steepened with Drupal 7, with the introduction of entities…but in most cases you won’t need to create a custom entity. Also learning how to best use the theme layer can take time in figuring out.
- Security Concerns Just like any other shared code, the risk of someone taking advantage of a security flaw is greater than it is with a totally custom system. You can minimize this risk by keeping the code up to date with security updates. With this said, I have not come across a drupal site that has been kept relatively up to date.
- Updating: Updating the core code is not difficult. But when compared to WordPress, it is a little more time consuming…especially when you do it via FTP. There are ways in speeding up this process. But most people won’t know how to take advantage of these techniques.
- Lack of Documentation: When Drupal 7 first became stable, there was very little as far as completed documentation. This made the learning curve even more difficult. Be prepared to have to do multiple Google searches in finding sample code that helps you along. Hopefully in the next year this will not be an issue.
- Speed: There is a performance hit when using a system like this with all of the moving parts of the system. The cache does help things, but it still is not the fastest system out there. I do see this improving, up through Drupal 8.
All in all, I believe Drupal 7 is a great option for most websites. It is flexible enough to handle complicated websites with a huge user base and combined with the contributed modules, most things can be handled without needing any PHP programming. The user interface has become much more user friendly since Drupal 6.