At long last, Drupal

Posted by Andrea

And now, the post you’ve both been waiting for: Drupal!

To recap, my odyssey started in 2008 with WordPress. WordPress was my thrilling introduction to the world of content management systems, and being able to switch graphic themes at the touch of a button was like magic. But I ran into its limitations within a few months, so I built my next site in Joomla. Joomla was much more extensible than WordPress but I found it deeply clunky, and I didn’t like how many of the add-on components were commercial (i.e. not free).

I was a little nervous about trying Drupal. I’d heard it had a steep learning curve, and the themes I browsed at drupal.org seemed pretty lame compared to the ones available for WordPress and Joomla.

But it was also kind of cool! I set up a practice site (using Fantastico Deluxe, the newbie’s best friend), and I was impressed by the unobtrusive AJAX interface and the clean look and feel. Drupal felt as smooth as WordPress but as expandible as Joomla.

Fine-grained permissions

What really dropped my jaw, though, was the Permissions page. Unlike Joomla and WordPress, which just have a few standard roles with varying levels of power (“Administrator”, “Editor”, “Author”, etc.), Drupal allows you to create custom roles with exactly the permissions they need.

If this doesn’t seem important to you, consider these two scenarios:

  • The user needs to be able to create, publish and edit their own blog posts, but you don’t want them to be able to tinker with anything else on the site. On my Joomla site for a mural and faux finishing business, I had to give a user the “Publisher” role in order for her to publish blog posts without admin approval, even though it gives her way more access than she actually needs.
  • The user needs the power to administer other users (add new accounts, delete accounts, etc.), but they are not very technically adept and would get overwhelmed if you gave them access to the entire admin interface.

Unlike WordPress and Joomla, Drupal handles those cases perfectly.

Content Construction Kit

The other thing that initially impressed me about Drupal was the Content Construction Kit module (CCK). The title didn’t initially grab me, but once I understood its purpose I was hooked. Allow me to explain:

In WordPress, you can create a “page” or a “post.” A page is exactly what it sounds like — an example would be an “About this blog” page. A typical post is often a blog entry, which might appear on the front page of the site with other blog posts. Alternatively, if you click on the headline you’ll see the post on its own page. For an example, see the front page of the WordPress site Waiter Rant (http://waiterrant.net/), which has several posts appearing in row, as opposed to an individual post on the same site (http://waiterrant.net/?p=1684). Posts can be easily organized into a blog archive, classified with tags, etc.

In Joomla, on the other hand, everything is an “article.” You can group multiple articles on a single page or display an article as a stand-alone page. You can also put articles inside of modules, which are blocks you can set to appear on different parts of the page, such as the sidebar, footer, etc.

The problem with Joomla articles is that the workflow can get tricky. You can set the category and section of an article, which will dictate where they appear on the site, whether you see a teaser or the entire article, the publication order, etc. But this can be hard to manage, particularly if you want to hand the site off to a client who’d like to maintain it themselves.

None of these problems with Joomla are unsolvable, but they can be a major hurdle, particularly for a non-tech-savvy client. Just last month I was making small talk with someone who runs a non-profit organization; apparently his organization did a big site redesign into Joomla, but they’re having a lot of trouble adding content, and it’s basically no better than the static site that preceded it.

Drupal’s Content Construction Kit, amazingly enough, addresses this problem. It allows you to create a fully-customized content type for all the different kinds of content you’d like to add to the site. For example, you could make a “Press Release” content type, with custom fields for release date, contact information, a downloadable PDF, etc. Then, you’d give your client permissions to create a new press release (but not every other kind of content), so they’d see a link when they log in that says “Create new press release” which would then walk them through a tailored form for adding a press release.

A further advantage of breaking the press release data into separate fields (instead of just lumping it all into the press release body) is that your client will be less likely to wreck the consistency of the site’s look and feel. For example, if they put the release date, contact name and number, etc., straight into the body of the press release, it may not look the same from one release to the next. But if they enter that data into individual fields, you (the site designer) can set it up so each field is styled consistently every time.

I used CCK to great effect on an internal site for the Warwick Historical Society. Volunteers in this small Massachusetts town are working on cataloging the strange and varied contents of their drafty historical society building, and I created a custom form for them using CCK which makes it easy even for minimally-trained users to enter the name of the item, select the approximate date from a drop-down menu, assign it to one or more categories, write a brief description, and upload a photo (which is automatically resized). The best part is that it will be easy to migrate the data from Drupal into any other database, since everything has been separately stored in its own field.

Apparently Joomla and WordPress have third-party tools similar to CCK (see Joomla extensions for content construction and Pods CMS for WordPress), but compared to CCK they seem like a real hack. Every Drupal site worth its salt uses CCK, and in Drupal 7 (coming out later in 2010) CCK will be fully integrated into Drupal core.

So far I’ve only scratched the surface of what distinguishes Drupal from WordPress and Joomla. But I think I’ve begun to demonstrate why Drupal is soaring in popularity and giving even commercial content management systems a run for their money. For more on this, I recommend reading Drupal creator Dries Buytaert’s 2009 retrospective and also Drupal’s relative growth in job listings.

To be fair, I’ll summarize Drupal’s pros and cons.

Pros:

  • Fervently open source, meaning that virtually every third-party module is free of charge
  • Very easy for clients to add content to the site, once you’ve handed it over to them
  • Fine-grained permissions and the ability to add custom roles
  • Good multi-lingual support (more on this later)
  • Search-engine friendly URLs
  • It’s teh awesome!

Cons:

  • Available themes aren’t as good as for WordPress or Joomla (although this is changing fast)
  • No built-in WYSIWYG tools, and the third-party modules can be tricky to configure
  • Astonishingly enough, no native image handling. This feature is coming in Drupal 7, though.

Although I am quite enamored with the Drupal community, I’m not going to say that it’s better than the Joomla or WordPress communities since I haven’t plunged as deeply into those. I will argue, however, that hosting all themes and modules on Drupal.org instead of on disparate sites has the benefit of pulling the Drupal community closer and making it easier to find answers to issues.

Incidentally, one problem with all three systems is that they are written in PHP and use MySQL, which is not an ideal security combination. Drupal can be made to work with PostgreSQL, which is somewhat less vulnerable to injection attacks than MySQL, but it’s not the default. I’d feel more comfortable if Drupal were written in Python, and I’m a little curious to try Plone as it matures, but I sleep fairly soundly as long as I keep up with security releases and database backups.

Anyway, I haven’t come close to singing all of Drupal’s praises yet. In future rants I’ll rhapsodize about the Views module, multi-lingual support, easy search engine optimization, and more.

The Joomla! Rant

Posted by Andrea

“Andrea, you promised to bore us with blog posts about Joomla and Drupal, but that was over a month ago. What gives?”

The sad truth is that I am so unenthusiastic about Joomla that I couldn’t even muster up the energy to rant about it.

It wasn’t always like this. When I first used Joomla in the summer of ‘08, I thought it was the bee’s knees. Compared to WordPress, Joomla is much better for large sites and has lots of exciting third-party extensions. It’s easy to make an attractive and professional-looking site, since there are heaps of free templates (themes) available, and if you want to take your graphic design to the next level you can buy great templates for a reasonable price. Admittedly Joomla has a steeper learning curve than WordPress does, but I was able to throw together a really slick-looking Joomla site in record time.

My problem with Joomla is that it’s deeply clunky. It’s the offshoot of a venerable open-source CMS called Mambo, and I think it’s badly weighed down by its legacy interface. When I started using Joomla mid-2008, they’d recently made the leap from version 1.0.x to version 1.5, but it doesn’t feel particularly Web 2.0. Come to think of it, it feels very Web 1.5 — it has a certain amount of AJAX window-dressing, but the back end is bogged down by a lot of slow and inflexible CGI-style forms. (If you don’t know what I mean by AJAX, some popular AJAX-style sites are Twitter, Facebook, and iGoogle, in which the page updates dynamically without having to reload.)

Another drawback of Joomla is that many of the extensions cost money. Joomla is open source, but a lot of the cool third-party tools are in the $10-$20 range (or more, if it’s really fancy). You could argue that this creates an incentive for developers to produce high-quality tools, but I find it creates a certain disharmony between Joomla extensions and Joomla core. WordPress has a bit of this problem, but not to nearly the same extent.

It’s hard to describe what I don’t like about Joomla without launching into a discourse about Drupal. Before I used Drupal I thought Joomla was pretty cool, but now it feels like a real drag to use. Joomla’s initial learning curve is not as steep as Drupal’s, but now that I’m up and running with both tools I find that Joomla is always tripping me up. I’m sure that seasoned Joomla users have no problem with it, but I find it counter-intuitive.

Each CMS has its own basic unit of content: Joomla has articles and Drupal has nodes. The term “article” is way too specific and the term “node” is way too vague, but they’re basically the same thing. A node or article could be any of the following:

  • The unique contents of a page (e.g. the “About Us” spiel)
  • An article or press release
  • A single image in a gallery or slideshow
  • An event on a calendar
  • A blog entry

(Note that a single page might contain multiple articles/nodes.)

Long story short, Drupal nodes are much more flexible than Joomla articles. In Joomla core you can only classify articles into categories and sections, whereas Drupal core has many more ways to work with nodes, including the ability to have different node types. This is ludicrously useful, particularly if your clients want to be able to update the site themselves. The main contributor to the Joomla site I built is always getting confused about how to add a new item to the site and how to make it appear in the right place. He knows how to do only a few things to the site, and without my intervention the front page is getting overloaded. If I’d built the site in Drupal, I could have automated the workflow much better and made the site easier for him to maintain.

Furthermore, user permissions are much more configurable in Drupal than in Joomla. Joomla comes with seven preset roles, four for the front end and three for the back (don’t get me started on the difference, because that’s another clunky aspect of Joomla which Drupal lacks). There are authors, editors, publishers, etc. The problem is that you can’t fine tune the permissions very well. For example, I built a site in Joomla for my sister’s mural painting business in Chicago, and we’d like to give her employee Paula the ability to create blog entries and publish them right away (without approval). To do that Paula needs “publisher” permission, but the publisher role also allows Paula to edit any page on the entire site, which is a dangerous permission to give out. Drupal, on the other hand, lets you create custom-tailored user roles, so I could create a “blogger” role which would allow Paula to create blog entries and publish them right away, but she would not be able to edit any other text on the website.

There is almost certainly a third-party extension for Joomla that would duplicate the Drupal behavior, but (A) it would possibly cost money and (B) every additional module is a potential security and stability risk.

Anyway, I should wrap this up before it turns entirely into a Drupal pitch. Joomla also lags behind Drupal and WordPress in search engine optimization (SEO). By default, Joomla URLs are big nasty PHP strings like http://sigmufi.com/index.php?option=com_content&view=article&id=17. You can enable SEF (search-engine friendly) URLs in Joomla core or use free third-party tools like sh404SEF, but it can get pretty complicated and feels like Deep Magic. That said, the SEO tools do work, and I’ve been pleasantly surprised by my sister’s Google rankings since we switched to Joomla from a static site.

Joomla Pros and Cons

Pros:

  • Better than WordPress for large, complicated websites
  • Beautiful themes are available, especially through reasonably-priced template clubs like RocketTheme and JoomlaJunkie.
  • The moderate initial learning curve makes it easy to make a professional-looking site very quickly.
  • Upgrades, though not automatic, have mostly been smooth.

Cons:

  • Many of the good extensions cost money.
  • Comparatively rigid administrative interface.
  • Article workflow is clunky and often inflexible.
  • User permissions are not customizable without third-party extensions.
  • Search engine optimization can get pretty complicated.

At this point, I think the biggest advantage of Joomla over Drupal is the availability of gorgeous templates for a reasonable price. That was the main reason I chose it for my sister’s website, and I’m not convinced I wouldn’t make the same decision even now. Other than that, I prefer Drupal in nearly every way.

Guess which CMS I’m posting about next!

Dances With WordPress

Posted by Andrea

In spring of 2008, my life as a web geek took an unexpected turn. I’d been designing websites since 1995, but I’d long since decided that I didn’t actually like the work very much, and I honestly didn’t think I was much good at it. I am a competent but uninspired graphic designer, I am code-phobic and could only cut and paste the simplest bits of Javascript, and I never learned the fancy tools like Dreamweaver or Flash. My one virtue was that I was a generalist — I can write the content, design the pages, and take the project from start to finish.

On a professional level this was mostly a moot point, since I’ve been a dharma loafer for nine of the past ten years, sponging off the nice Ted and doing only a few web projects. I felt like a bit of a fraud describing myself as a web designer (considering how uninteresting I found it), and even though there is no shortage of people I can help by building a website, I was quite unmotivated to do so.

Anyway, this time last year one of my teachers asked me to help her with a website for her non-profit organization. Having noticed that other people were building nice out-of-the-box sites using WordPress, I decided to try it myself, with the idea that it would be easy for my teacher to use.

I was quickly sucked into an engrossing new world. I discovered that in my absence from the front lines of web design, a whole new set of tools had emerged. For example, I set up a hosting account for my Lama’s site and discovered the magic of cPanel and Fantastico De Luxe. cPanel is a dashboard for web hosting accounts — it comes standard with most low-cost hosting packages ($7.95/month, unlimited everything, blah blah blah). It allows non-techies like me to set up e-mail accounts, create subdomains (e.g.: foobar.steamkite.com is a subdomain of steamkite.com), etc. Fantastico de Luxe is a tool within cPanel that makes it easy to install complicated scripts like WordPress, etc.

I was overwhelmed with this new power! I’d built some powerful websites before, but it was always with the help of some programmer who could handle the messy parts. cPanel and Fantastico suddenly enabled me to do the dirty work myself, and having my own hosting account meant I could tinker all I wanted without messing up Ted’s server or wasting any of his time.

And WordPress was so cool! First, there are hundreds or thousands of free themes out there, which meant I didn’t have to bother with the graphic design or CSS. I could just download someone else’s work (freely given), customize it a bit here and there, and *bam*, I had a professional-looking website. Second, WordPress has heaps of free widgets and plugins, allowing me to add all sorts of groovy bells and whistles without needing to know what I was doing. Fun stuff!

That first site was a lot of work, mostly because it included an online store. There’s a very good free WordPress shopping cart out there, but in 2008 it was about 90% functional and 20% documented. I spent a month banging my head against it and finally got it to work (and I contributed some docs just to be nice), and in the process I learned a lot about WordPress and database-backed websites in general.

WordPress Pros and Cons

Pros:

  • Easy to use
  • Easy to add widgets and plugins
  • Oodles of free, attractive themes
  • Easy to update, in theory

Cons:

  • Difficult to update in practice. My site was rather more complicated than other WP sites, mostly because of the online store, and my E-Z upgrades tend to go very very wrong. The site is now several versions behind, which is a major security risk. I am close to getting it migrated to the newest version, but that’s involved rebuilding the site rather than just upgrading it.
  • Security-challenged. WordPress is very popular and it’s written in PHP, which is notoriously exploitable, so my out-of-date WP site is a hacker attack waiting to happen.
  • Limited features. At heart, WP is a blogging platform, and the site I built is not a blog, which means that my needs are not a perfect match with the WordPress feature set. This mismatch wasn’t obvious to me at the time, but since I started using other content management systems, WP’s shortcomings have become rather glaring (more on that in future posts).

The site I built, by the way, is for the Diamond Heart Foundation [ETA: I have since migrated the site to Drupal]. I used a gorgeous free theme from Smashing Magazine, customized with some illustrations from iStockphoto. It has way more features than any site I’d ever built without help, and my teacher has been very happy with it.

Looking back, I think of that site as my initiation into the wide world of content management systems (CMS). It showed me what was now possible for a code-phobe like me, and I suddenly began to wonder if I didn’t enjoy web design after all.

Watch this space for part two: Joomla!