This post is for everyone who is currently making a decision whether to use Drupal 7 for a new project (or to upgrade Drupal 5/6 based project to Drupal 7) or not. Drupal 7 have been released more than a month ago and have already created a big buzz in the community. I tried to accumulate the knowledge I received during the reading of tons of blog posts, forum comments and making my own experiments.
Before starting to offer my clients projects based on Drupal 7, I decided to try it first on my own and upgraded this blog to Drupal 7 a while ago. The upgrade went smooth except an issue with filefields (later in this post). I moved this blog to my own dedicate server to make it run even faster than Drupal 6. As a result of this process, I collected some Drupal 7 facts you must consider before deciding whether to go with Drupal 7 or not.
1. Drupal 7 became more user friendly. After a big work made on Drupal 's UI, the system became a more user-friendly and the admin interface is really sexy now. Everything is more intuitive to the end user.
2. Drupal is more scalable now. Thanks to architecture improvements, Drupal is more scalable now: CDN files hosting, offloading certain heavy- database tables to no-sql db engines like MongoDB or using Oracle/MSSQL instead of MySQL isn 't a big deal for D7. However, you need to note, that scalability isn't a synonym of a performance. People often confuse both this meanings. If you'll scale an elephant it doesn't mean he is going to run faster. To make him do this we need to give him magic pills. More on this later in this post.
1. Drupal 7 is slower than Drupal 6 out of the box. Yes it is. And don 't listen to people telling you the opposite. It's just that. There are many discussions on this topic and I even created two similar threads to discuss this on drupal.org and linkedin.com. Take a time to look them through to get a picture of what people are thinking about D7's performance.
2. Drupal 7 isn 't for a shared hosting. At least today. Nowadays shared hosting providers give too few resource power to make Drupal 7 run perfectly (at least, equally to Drupal 6). Due to Drupal's architecture changes, Drupal took a load off the database engine (yeah, no more 300 requests per page!) but put more load on PHP part which means more CPU intensity. But thanks to the technical progress, CPU power becomes cheaper day by day and maybe in a year time we'll see a variety of good Drupal 7 shared hosting packages for a sweet $9.99 price tag. But until this, consider to spend at least $19.99 per month on an entry level VPS. UPDATE: There are people who tell that they have Drupal 7 perfectly running on a shared hosting. Unfortunatelly I wasn 't able to find such a hosting, so please, give a link to your Drupal 7 website and the name of the shared hosting you use. Later I will compile Drupal 7 friendly hosting list.
3. Drupal 7 needs a performance tune. Installing Drupal 7 on a VPS/Dedicated server will make your website run fast, but in order to make it run even faster or to be able to sustain higher loads you need to tune your VPS/Dedicated server. This is one of the reasons why shared hosting won 't work here: you just can't install an opcode optimizer as APC (a highly recommended ingredient) on a shared hosting. Varnish, Memcache are also a great help in order to make Drupal run fast like a cheetah, but they make sense for projects with a high amount of traffic.
4. Drupal 7 has some difficulties with upgrading from Drupal 5/6. Well, the core will update nicely. But if you have many third party modules installed, make sure they have D7 versions or D7 equivalents. The bigger problem is with CCK fields. CCK is now in the core, so content types with simple fields like textfield, textarea, number will upgrade without any problems. Another story happens with file fields. Filefields have been moved to Drupal Core, but a module to provide an upgrade path has not yet been created. So in order to upgrade file fields while updating this blog to Drupal 7 version, I had to move file fields data manually. Of course, this approach makes sense when your project has around 10 - 20 images like this blog has, but if the number of file records for your project is really big you will have to write some custom migration script. It 's not a big deal for a good programmer ;)
5. Drupal 7 is still not completely ready for SEO. There is still no robust solution for managing meta tags in Drupal 7. Meta tags module (nodewords Drupal 7 version) is under development and there is no even an alpha release. However, there is a Metatags Quick module http://drupal.org/project/metatags_quick which isn 't a perfect solution, but at least, it let's you to set meta tags for node pages. SEO is a very important aspect for any web project and meta tags aren't the least important ingredient. So you need to consider the current situation with meta tags.
My list contains more negative facts then positive in my list, but the weight of positive facts is more solid. Add to this further development and more attention from drupal module developers in the future and you will get the winner. However, there are cases which are in need of more proper recommendations:
1. You are on a limited budget and you 're going to build a simple website which consists of news, an about page, several content pages and a contact form. No further development is projected. In that case you can go with Drupal 6. It consumes less resources and runs well on $9 shared hosting. In the future, you can easily upgrade from Drupal 6 to 7. Due to the simplicity of your web project it won't require too much time.
2. You have a complex project based on Drupal 5/6 which runs ok and doesn 't have scalability problems. In that case I wouldn't rush to upgrade to Drupal 7, because not all necessary modules are in the stable phase, upgrade path for some CCK Fields like filefield is missing. It is worth to wait at least till the end of the summer before deciding to upgrade.
3. You have a complex project based on Drupal 5/6 which has scalability problems. In that case, upgrading to Drupal 7 may be worth of efforts, because the scalability is one of the new strengths of Drupal. Just make sure that all modules your project uses are upgraded to Drupal 7 and work without major issues. If not, then it is worth to wait for another six months or help module contributors to fix major issues.
4. You 're going to build a project from scratch which isn't a dog's owner page. I'm not against dogs and their owners. I just wanted to say, that it is worth to go with Drupal 7 if you're building a brand new project which is going to become complex or which is simple at the start but is intended to evolve into something big in the future. In this case Drupal 7 fits the best. You can install it on VPS which will cost you $19 - 29 a month (agree with me, $19 a month shouldn't be a big obstacle when you're building a serious project) and tune the server for the optimal performance. In forthcoming weeks I will write more on Drupal 7 performance optimization, so stay tuned. Missing modules and unstable version shouldn't be a big problem too, with time they will become stable and you can always develop missing modules contributing them back to community.
While making your choice, remember about cool modules which are available for Drupal 7 only (like Media module http://drupal.org/project/media or Commerce module http://drupal.org/project/commerce). And there are going to be more of them, developed only for Drupal 7. So starting with Drupal 7 makes sense in the long term and I'm pretty sure, that when you decide to build a web project you think long term.
In any case, if you need an advice or help with upgrading/installing, optimizing for performance or developing a Drupal 7 based project feel free to contact me.