For me, Drupal is one of the granddaddies of the open source CMS world. While it might not be the oldest by any means, it is the first one I tried, and loved. Even at the time, I heard a lot of complaints about how impossibly difficult it was to get to grips with. While I never shared that sentiment, and setup a reasonably active blog-like site for myself and some friends, which served us well for a few years, this accusation of unfriendliness towards the average user has continued to plague Drupal. So, it came as no surprise that when they set out to plan and design a whole new major version of the software over 3 years ago, they made the usability their main mission.
Unlike many similar software products, Drupal’s major version numbers are a big deal because they usually break compatibility with previous versions. An upgrade involves a conversion of the database(automated) and the supporting modules to work with the new version, which has resulted in official support for two consecutive versions by the community, the old guard that is well entrenched in production sites, and the new kid, fast catching up. This idea of every version behaving like its own separate development platform puts a lot more attention on what is new and what has changed in every new version. Earlier this month Drupal 7 was finally released after its long development cycle, so I thought it would be useful to familiarise myself with what has changed.
Redesigned User Experience
The Drupal 7 User Experience Project was set up as an initiative and a targeted project team to design the new Drupal user experience (or UX, as the cool kids call it) from the ground up. The plan was to bring it in sync with newer, more pretty CMS back-ends that have become the norm in the new age of glass-button Mac styling and interactive Ajax loading technologies.
When Drupal was new, making websites was still a geeky affair, maintaining and administering them even more so. Drupal’s update methods were notoriously convoluted. The backward incompatibility between major versions means you had to step through each successive version update until you reached your final desired version, if you were out-dated by multiple versions. All updates were a matter of disabling things, uploading new files via FTP and running update scripts to regularise the changes; All perfectly acceptable at a time, when people who made websites were supposed to know what they were doing.
Now increasingly, they don’t. That combined with the fact that frequent updates and security fixes make manual file updating a chore, especially for those who run multiple sites, and you can be sure that this shortcoming had to be looked into.
The good news is that there is now an Update module in the core install which can keep track of newer versions of Themes and Modules, and warn you to update when required. The process can be carried out from the web interface. The bad news (as far as I could discover), is that core software updates still have no automated method. I’m sure this is a technical challenge, considering the frequent database structure changes that occur in the way Drupal is developed, but it is still a setback.
Modules can now be installed from the back-end by simply providing a URL to an installation archive. This, while a slightly clunky process, does keep with the more geek-friendly mood that Drupal has always had. It’s an extra step away from click-it-and-forget-it installs, but it does open up the flexibility of easily installing custom builds and alternate versions of modules, which is a welcome convenience.
The Image module is now included in the core Drupal install, which allows for easy uploading and attachment of images into content. This is a much requested addition because most people used to end up installing this module anyway, to make the back-end more useful for people without FTP access. This saves an extra setup step and also ensures that the Image module will always be kept in sync and updated with the core software.
Another module that was used by every install of Drupal that did anything beyond the standard simple site or blog, was the CCK module. It allowed the relatively easy moulding of the content types in Drupal to add custom fields and data bits to create almost any type of data-store you could imagine. CCK is one of the main reasons for the success of Drupal in large-scale customised site projects.
Now CCK and its functionality have been integrated as a core module simply called Fields. This will be another very welcome change, for all the same reasons as the inclusion of the Image module with this release.
Those are the major changes that will affect the most common level of user and administrator of Drupal. There are, however, some other additions and improvements that will be appreciated by more hard-core administrators and larger sites running the system.
Database Abstraction Layer
Drupal 7 introduces an improved database abstraction layer that untethers it from MySQL. This adds a whole new level of flexibility for those developing custom applications and sites that would be better served by other database servers with different areas of strength. MySQL has proved to be a great general-purpose database system for the web, but there are always exceptions to every rule, and this new bit of added technical flexibility will do much to make some new users take notice of Drupal as a potential development platform.
Automated test environment
The developers have created an automated test suite of scripts to test, analyse and find faults in the Drupal core code. This will speed up the development process and will also allow customisers to easily find incompatibilities and potential problems before things are put into production.
Performance enhancements with caching and CDN support
Drupal has always had a rudimentary caching system to improve performance and decrease response time during the serving of pages. The caching system has now been improved further, with more performance tweaks, and there is also support for CDNs so that your heavier data files can be stored in the cloud and response times on your site can be reduced while minimising the burden on your central web server’s infrastructure.
My first impressions of Drupal 7
Drupal 7 is a big deal in the continual development of Drupal. What impresses me about the new release, is that while such a long awaited release was bound to come with too many expectations, they stuck to very basic and solidly useful additions to the system rather than going after flashy improvements that would get them the cool badge. Having said that, I do have some reservations with the one thing that they have tried to go for the cool badge with, the new interface.
The new administrative user experience, for now feels quite alien to me. While I have not been a very heavy user of Drupal over the years, I had grown accustomed to, and even a bit fond of, its no-nonsense single-page admin interface. As long as you knew what you were doing, it was easy to figure out where to find what you needed. Now everything is hidden under a hierarchy and things float over other things with transparent bits. Cool? Maybe. More useful? Maybe not, but I think the regular user to whom this change is addressed will be the final judge. I have always been an unashamed geek and have enjoyed the technical side of these things. On a positive note, even for previous versions of Drupal, alternative admin interfaces were always available as modules, so I’m guessing there will always be options to get an interface more suited to my tastes, no matter what they do in core.
The installation procedure is improved. I never found it to be all that daunting anyway, but I’m sure it’s a relief to the suffering regular users of the world. It is still a bit disappointing that there doesn’t appear to be an automated core system update procedure, from my quick look through the interface. I am guessing part of the problem is the way Drupal’s database works, possibly making live updates a challenge, but this is one convenience I’ve learnt to love in WordPress, and it is definitely something that should be paid attention to soon.
Ultimately, Drupal 7 is a good evolutionary step forward, and a bold one in its simplicity. While I’m not convinced by the new interface yet, I will wait till I actually develop a new site with it to make up my mind. With long development cycles the issue is often that your aims are already a bit outdated by the time the features come to fruition, but if Drupal 7 has improved as a technical platform to develop new sites and applications, that’s all that will matter to its more ardent fans and users, even without the obvious wizz-bangery.
I have made tons of CMS-based sites over the years, but only a handful of Drupal ones. And yet, I do come back to it every time, because in spite of its quirks I still get that feeling when I think of Drupal which I got when I made my first test install of it on a live server. It’s the feeling that with Drupal, you could do everything.