With the final Drupal 7 release only days away, it’s about time for me to get up to speed with the latest and greatest release. I’ve had my head down on a massive Drupal 6 project lately, and this has kept me from spending too much time with Drupal 7. Upgrading this site has been a crash course in Drupal 7’s many changes.
First impressions of Drupal 7
Compared to previous upgrades, going from D6 to D7 has been remarkably pain-free. Not all of the old modules have D7 equivalents yet, but a considerable number of them do – more than enough for a fairly basic site like this one. Great work has been done by many module maintainers in ensuring that the long wait for module upgrades that plagued D6 isn’t being repeated. Unsurprisingly, all of the Drupal core upgrades went without a hitch.
Drupal 7 also feels a lot friendlier. The new admin themes (Seven is my favourite) are pleasant to look at and easy to use, and the garish nightmare of Garland everywhere is thankfully banished. The admin screens have been rationalised, and a handy toolbar is provided which makes navigation around the admin screens easy, although I’m not convinced that it’s better than the admin_menu module was in D6. Commonly-used options are easy to get to and the whole system feels a lot more “joined up” than previous releases did – little things like being able to get to the configuration or permissions screens for a module directly from the Modules page contribute to a sense of a cohesive system.
Since my main interest is as a developer, I also had to get my hands dirty with some module and theme code. So far, this has resulted in the Github module, a small-but-useful module that lets you easily display the “fork me on Github” ribbon on your site (I’m working on some other Github-based ideas too), and the currently-unpublished Slide Box module (which you’ll see in action when you reach the bottom of this post). Neither module gets beyond the surface of Drupal 7’s APIs, but the basics of Drupal module development don’t seem to have changed dramatically – and all of the changes I’ve seen have been improvements. Again, small API changes add up to a sense of a much better-designed system. I can already tell that the new database abstraction layer is going to make module development easier.
Theming has changed too, although I’ve spent less time looking at this and resultingly don’t have anything dramatic to say. For the site re-launch, I decided to take an off-the-shelf Drupal theme (Dingus) and modify it to suit my needs. Drupal 7’s theming feels a bit more modular and decoupled than Drupal 6’s did, and that’s a good thing in the long-term.
Ready for the big time?
So is Drupal 7 “ready”? Well, I’m still seeing some occasional PHP warnings, and some of the modules I’m using only worked if I took the latest version from CVS, but overall Drupal 7 feels a lot more stable than I expected. If I were starting a big project now, I’d give serious consideration to starting with D7 rather than D6, depending on when I expected to launch. The benefits of a nicer UI and improved APIs offset some of the trouble that can be expected from bleeding-edge code, and once developers get used to the new improved APIs it will be hard to go back to the old ones. All in all, I’m impressed.