Switch from Plone to Drupal

Last weekend, I switched the website from Plone to Drupal.  I know some people are contemplating this switch, so I thought I'd write about my experience so far.

Why did I decide to stop using Plone?

The most important reason I switched was performance.  Plone, for me, was running terribly slow.  I'm not sure why, because at my prior employer, I ran a huge (in amount of content) Plone site with many installed Products, and it performed fairly well.  It ran on Windows, whereas this machine is on Ubuntu Linux.  Perhaps ActiveState Python on Windows is much faster than Python on Linux?  I don't know.  I spent probably 50-100 hours working on Plone's performance, mostly installing and configuring Cache-fu and Squid.  I had it all working, but Plone was still unacceptably slow.

Also, I have difficutly customizing Plone.  Plone and it's Zope underpinnings are extremely complicated (which perhaps is necessary to support the features it has).  Customizing any given aspect of Plone is found in a different place, making it extremely time consuming to learn where everything is found.  Some things are on the Properties of a given object.  Some things are in the skins (and editing them is a complicated process in itself).  Some things have to be changed in a "Products" code itself.  Some customizations are in the Control Panel.  And the list goes on (no, really it does).  For my personal website, it was just getting to be too much time to accomplish the things I wanted.

On the customization subject, I had the desire to put a new skin in place, but that is not easy in Plone.  Sure, you can customize colors.  But at the end of the day, your site still looks like the Plone default with a new paint job.  Seriously, look around the Plone community.  You'll see all the sites look pretty much the same.

A big problem I had with Plone was my ability run a proper weblog on Plone.  I searched, and the best blog Product I found was CoreBlog2.  But CoreBlog2 has no captcha.  And without captcha, I was getting hundreds of spam comments and trackbacks per week.

Another important problem for me, I frequently had problems with Plone after installing a new product or upgrading to the most recent version of Plone.  Granted, I'm not a Python guy.  I have a slight understanding of Python, and I struggle to fix problems as a result.  But, many of these problems are not in the Python code.  They were in page templates (that have their own language), inconsistencies in the data, or a number of other places.  For instance, after my last upgrade, many of the folders in the navigation tree would have no text.  I never did figure out how to fix it.  If you search long enough, you can usually find a fix, but it's very time consuming.

And on the Product subject, dependeny hell!  Oh my word, what a mess the dependency situation is on Plone.  Every product depends on a dozen other projects, and if any one of them are the wrong version, you're in for some hurt.  Plone and Zope have no dependency management, so it's all up to you.

Let me finish by saying, I'm not trying to bring down Plone.  It's an amazing open-source project, and I think it is a great solution for many situations.  And the developers behind it are some of the smartest, kindest people I've met in the Open Source world.  One of the core developers on the project has helped me with my problems without any of the usual "RTFM" crap.  I just think I made a mistake by using Plone for my small personal website.  The right tool for the right job, and all that. 

Why did I choose Drupal?

After deciding I wanted to move off of Plone, I had to choose between the huge variety of Open Source CMS products available.  For a large part, I chose Drupal due to the amount of community buzz around Drupal (something I also enjoyed about Plone).  I find it's often a good indicator of the quality of an Open Source product.  I believe OSS is a survival-of-the-fittest community.  If your project isn't that good or isn't as good as another product in the same market,  it usually doesn't get talked about and used less, and linguishes in obscurity.  This evolutionary control leads OSS to produce better and better software as time goes by.  This exists somewhat in commercial software, but this is not always the case (the abomination that is PVCS comes to mind).  But, I digress.

Another reason I chose Drupal was simply because I couldn't find a Java CMS I was satisfied with.  As a Java developer, that would've been ideal.  But I looked at about 30 Java CMS's and installed many, and I just couldn't find one I liked.  The same could be said about the community backing.

Drupal seemed to be easy to set up.  And when I looked at Drupal-driven websites, I liked the way they looked.  And, more importantly, I liked the variety of looks.  They look very different from site to site.

Finally, Drupal appeared to have Modules that supported everything I wanted on my personal website.

My experiences so far

Drupal is pretty good for personal website use.  Installation was pretty straightforward.  I didn't want to use the older version that is currently in the Ubuntu repos, I downloaded it and installed it myself.

Using Drupal is also pretty simple.  Customization is fairly simple and straightforward.  Skinning the site was fairly easy for someone like me who has a firm grasp of HTML and CSS.   I took a skin I liked, and customized it to my preferences.

Installing modules has been really simple, and, unlike Plone, I never seem to have problems that bork the entire site.  Hopefully that's a trend that continues.  And Modules don't seem to have the dependency hell that Plone has.  Out of the modules I've looked at, only a handful have any dependencies.

Through installation of a few modules, I was able to get most of the features I really need in a CMS.  Built in features is certainly something that Plone wins in.  Plone has so many features!  In comparison, Drupal lacks true content-management.  There are no workflows, there is no versioning, and non-HTML content is stored on the file system, not a repository.  I like that about Plone, but it was one of the things I really don't need for my personal website.

Not everything is perfect.  I really miss that Plone automatically created nice, friendly URLs for every bit of content (sorry Drupal, /node/128 may be what you call a Clean URL, but it isn't friendly).  You can accomplish this in Drupal using the URL aliases module (which is exactly what I've done) by giving a URL alias every time you create content, but it was nicer when my CMS did this for me. (Update: As sepec says in a comment below, the Pathauto module does this quite nicely.  It's not perfect - it also blow away my own custom paths sometimes - but it does a pretty good job).

Speaking of the URL alias module, it is a pretty sweet feature of Drupal.  In moving from Plone to Drupal, I was able to map all my old content to the exact same URL it was at before.  Now, links to my content from anywhere on the web (especially Google) will continue to work.  As a result I won't lose PageRank, and people won't get alot of 404s.

To get the photo support I wanted, I had to install a separate peice of software, Gallery2, and then link it to Drupal through a integration module.  Plone had photo support built in.  I'm not sure how I feel about that arrangement.  Basically, Drupal proxies the page views of Gallery into it's main content area.  As a result integration isn't terribly good.  You can't search the photo content.  The content doesn't register as a hit in the Drupal statistics module.  And, my attempts to turn off right-hand Blocks when using the Gallery pages doesn't work.

Performance, my biggest issue with Plone, is excellent.  Even without Squid and without turning on Drupal's own caching, Drupal runs extremely fast. 

Overall, I'm very satisfied with Drupal.  It is the right balance of features and simplicity I need to run my personal website.

heh heh. Welcome to Drupal

heh heh. Welcome to Drupal land

sorry Drupal, /node/128 may be what you call a Clean URL, but it isn't friendly

Almost, not quite :)
Normal URL: /?q=node/128
Clean URL: /node/128

Clean URL is when there is no ?= in the URL.

If you don't like the /node/128 turn on Path module as you have done. If that is to much effort, download pathauto and set your path content rules as you desire.

Drupal has a learning curve, learning the contrib modules is one of them. Learning which contrib modules are 'well maintained' is another.

Hope you continue to have fun with Drupal.

Oh yes, don't forget to subscribe to the security list.

I have built sites on 4

I have built sites on 4 different releases of drupal and integrated gallery2 with it, and as a java developer I am still looking for an acceptable java based CMS. I do like the acegi login system and do wish I could run on tomcat instead of apache. But lately I have started using python at work. I am a PHP programmer, and have much chagrin over issues like security in the PHP world. Python itself is impressive in many ways. Try doing a multi-threaded app or a popen or a subprocess fork/exec in PHP. So I do wish there was a good CMS in python. Plone seems the most robust, but it has some real issues to the point I wouldnt touch it. Sadly, I still feel stuck with drupal due to ease of use of drupal. The main problem with drupal is the drupal community people seem to be so incredibly incredibly incredibly lame and amateurish as developers. They seem to not understand any of the rules of software projects. Many contribs are such crapola. The good news is the roadsend PHP compiler gives me some hope for the future of PHP. I am just now starting to play with it so the jury is still out.

Thanks for the article. I

Thanks for the article. I enjoyed reading it. I've also been converting a site from plone to drupal. Re workflow, have you tried the drupal workflow module -- http://drupal.org/project/workflow ? It worked well for some simple workflow tasks I needed to support.