Lessons from Drupal

Lessons from Drupal

Summary: The most important thing I learned (for at least the 100th time) from some very preliminary work setting up a Drupal website site was to take the advice I routinely hand-out: assuming you know, when you don't, is a guaranteed way to get into trouble.

SHARE:

In reviewing various content managers for more complex, news and discussion oriented, web sites I settled on Drupal as a reasonable candidate and decided to find out if it would really do what I needed by trying some key parts of it.

Here's Drupal's own "about drupal" spiel:

Drupal is a free software package that allows an individual or a community of users to easily publish, manage and organize a wide variety of content on a website. Tens of thousands of people and organizations are using Drupal to power scores of different web sites, including

  • Community web portals
  • Discussion sites
  • Corporate web sites
  • Intranet applications
  • Personal web sites or blogs
  • Aficionado sites
  • E-commerce applications
  • Resource directories
  • Social Networking sites

Drupal is ready to go from the moment you download it. It even has an easy-to-use web installer! The built-in functionality, combined with dozens of freely available add-on modules, will enable features such as:

  • Content Management Systems
  • Blogs
  • Collaborative authoring environments
  • Forums
  • Peer-to-peer networking
  • Newsletters
  • Podcasting
  • Picture galleries
  • File uploads and downloads

and much more.

Drupal is open-source software distributed under the GPL ("GNU General Public License") and is maintained and developed by a community of thousands of users and developers. If you like what Drupal promises for you, please work with us to expand and refine Drupal to suit your specific needs.

Drupal is built according to a set of principles:

  • Modular and extensible. Drupal aims to provide a slim, powerful core that can be readily extended through custom modules.
  • Quality coding. High quality, elegant, documented code is a priority over roughed-in functionality.
  • Standards-based. Drupal supports established and emerging standards. Specific target standards include XHTML and CSS.
  • Low resource demands. To ensure excellent performance, Drupal puts a premium on low-profile coding (for example, minimizing database queries). Drupal should also have minimal, widely-available server-side software requirements. Specifically, Drupal should be fully operational on a platform with a web server, PHP, and either MySQL or Postgresql.
  • Open source. Drupal is based on the open source philosophy of collaborative free software development and is licensed under the GPL. Drupal is itself open source and builds on and supports other open source projects. Specifically, Drupal is coded in the open source scripting language PHP and supports as primary data sources the open source database formats MySQL and Postgresql.
  • Ease of use. Drupal aims for a high standard of usability for developers, administrators, and users.
  • Collaboration. Drupal development supports open, collaborative information sharing systems and approaches.

That's certainly singing my song, but how well does it actually work?

For the installation I did the usual thing: editing the INSTALL.TXT file to leave two install scripts (the repeatable one for Drupal and a non repeatable one creating the database instance - I used MySQL); and ran them with no hicups.

Since I already had Apache2, PHP, and MySQL installed, the whole thing took about ten minutes to the point where the next step was to bring the system up and run their PHP installer via the browser.

That failed at first because the .htaccess file included with drupal has directives my apache2 server refused to accept in that context - but moving the thing to the virtual hosting section in httpd.conf and restarting apache removed the bottleneck. Since this isn't even a pre-production pilot I left it at that - but I'll find out later what the right thing really is.

As installed everything in the default system seemed to work as advertised.

Now, as I understand things (not necessarily correctly) Drupal divides a page into blocks with block content generated by modules and presentation formats controlled by themes. Since one of the big attractions of the system is that there are hundreds of available modules and themes I downloaded some that seemed interesting for my purposes.

There was an early "not thinking Drupal" hiatus in this: I couldn't figure out why the menus and other elements I was creating weren't showing up - but, duh :) , nothing shows up unless there's content, so adding some text to each makes everything show up properly.

Content creation, incidently, turns out to be one of Drupal's strongest capabilities. The default system supports most common forms of content creation including full HTML and both push and pull remote posting - plus you don't have to be a programming whiz to see how files from almost any DTP solution could used.

Every module, and four of the six themes, I downloaded worked "out of the box" with no obvious complications.

My second place theme finisher, the genesis theme failed to run as installed because of template.php calls a non existent function ((genesis_theme()). Since I think (note the tentative nature of this conclusion :) ) this is a genesis specific variation of the core hook_theme() function from the basic package you should just about be able to just copy it in; but since I wasn't going to change anything in the theme, simply commenting it out worked for the scope of this review.

Humiliatingly, the one I really liked best for the job: nrebuild, from lynxlabs, and therefore decided to focus on for the test implementation, produced total and utter befuddlement - and what was worst about it was that this happened precisely because I did exactly what I'm always cautioning others against: assuming I knew something, when I didn't.

To understand what happened, you have to look at the default nrebuild front page - so click here to have a look.

The things labeled "Root", "New Menu", "Preview", and so on are all blocks produced by matching modules and formatted according to the nrebuild theme. It's all very cool - they even have a drag and drop interface for moving these things around on the page.

However.. I wanted to replace those region names - things like "before head > column 1" with links to things like "Rants" - a political blog.

A quick grep shows the existing names scattered throughout the code - but I never even thought to question the assumption that the actual display content would be DB stored and manipulated via the browser interface. As a result I got more and more frustrated at a system that seemed to work perfectly in every respect except that it never did what I wanted.

Eventually (about three coffees later) I sent off a note to the people at Lynxlab asking them how to do it - and, despite this being a Sunday, got an almost instant response: in Russian.

A bit later a second version arrived: in googlese - the language you get when a question in English gets translated to Russian by translate.google.com and then the answer in Russian is put back into English the same way:

I do not clearly understand what I can to help you. I help you if you explain the example that you want to know. Theme n_rebuild was developed for programmers and integrators. If you know PHP or html and css bad, you can not remake any theme (and nRebuild too).

So, oops! moment: bad assumptions on my part - and two hours later I got another note from someone at Lynxlab confirming that indeed the way to do this kind of thing is simply to edit page.tpl.php: simple, direct, efficient - vi, not click and hope.

So, overall, what?

There are key bits for my purposes, including the ad management, payment, and ecommerce modules, that I haven't even looked at yet; and there are some whose most valuable capabilities are hard to explore (but easy to appreciate) in a casual trial. The flashvideo manager for example, offers the ability to copy videos to high bandwidth co-hosting sites like Amazon's without losing control of them - and that's exciting, but not easily tested at this stage.

What I have seen, however, seems insanely great: a clearly very capable system that does easy things like Wordpress style blogging out of the box and more complicated things with relatively little set-up difficulty - once you start to "think Drupal." So far, it's proven an order of magnitude simpler to work with than Apache Cocoon (another product I love) was two years ago, and the problems I've seen have been mostly due to my own insistence on seeing the wrong way as necessarily right.

Topics: Software, Browser, Data Centers, Data Management, Enterprise Software, Open Source, Software Development

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.

Talkback

13 comments
Log in or register to join the discussion
  • Tres Interestant!

    My cms: Movable Type. You'll need to know some Perl to write plugins.

    BTW Ars Technica just moved to Movable Type:

    http://www.dtschmitz.com/dts/2009/01/ars-chooses-cms-movable-type-welcome-to-ars-technica-v50.html

    Let me know if you have any interest in MT, I'll give you a login to check it out.

    Thanks Murph.
    --Dietrich
    no_zd_user_name
    • Movable Type

      This is on my list of software to look at if Drupal starts to look like a poor choice - at this point, however, I haven't done a comparison or formed much of an impression on how it stacks up to the requirements.
      murph_z
  • RE: Lessons from Drupal

    hey murph, try www.joomla.com as well. i do most of my web stuff on it.

    darkog
    • Joomla is among those I looked at

      but my impression (and that's all it is, I haven't committed to anything yet) is that it's easier than drupal for easy stuff and much harder for hard stuff.

      Is that wrong?
      murph_z
      • not sure.

        .. i am not an expert on joomla per se. but for what i was asked to do, joomal served it purposes. ping me offline if you would like to see samples of the sites.

        however, looking at the drupal project again as a result of your post, i am really liking the template options. if i can find time, i will try it out on a ubuntu server or opensolaris boxen.

        darkog
        • if you do.. let us know what you think. (NT)

          Please?
          murph_z
          • initial impressions

            i didn't have time to do an install my own systems, but install on a web hosting service i use. the install went seamless. just enable php and setup a new mysql db.

            from what i am seeing,
            - drupal seems much easier, quicker, and much more flexible for doing simple sites than joomla.

            - joomla still might be a better choice for any larger scale CMS site.

            below is a portfolio of some of the NGO sites that the firm i am affiliated with work on.

            http://www.alterspark.com/portfolio/web-design.htm


            darkog
          • ummm

            I had the opposite impression about J vs D on depth. Perhaps they're closer than we think?

            --
            I particularly like the volunteer site faces - hope the back ends were as good.
            murph_z
  • RE: Lessons from Drupal

    Wordpress works pretty well as cms too. I ended up disabling most functionality to reduce user training, took existing plugin and extended into two more. Overall found php/mysql very workable.

    http://abacms.org/?page_id=33

    Ray
    rayholland
    • WP - not in the ballgame

      It's great for doing a personal blog - or several hundred personal blogs on a site. However, even in that context several factors make it a poor choice for larger site:

      1 - poor use of HTML

      2 - windows CR/LFs

      3 - complexity of "web2" content insertion

      4 - weak 3rd party controls (e.g. ad management)

      So, a great product in its niche but not a contender for more complex sites.
      murph_z
  • RE: Lessons from Drupal

    Murph,

    Back in 2006 when I was evaluating CMS packages, Joomla out-featured Drupal with it's simplicity and extensibility (via (already then) thousands of extensions). Also, joomla comes better equipped out of the box than Drupal (or at least did in those days).

    Joomla has an excellent intuitive interface for both management and front-end use (albeit, I think the front-end usability could do with lot more work).

    I haven't played with Drupal recently, but will look into it when I have time.
    Unix_Magic
    • The question

      I'm considering isn't which does more out of the box as kind of a generic comparison. I'm interested in:

      1- how close does "out of the box" get to what I want?

      2 - how hard is doing the rest going to be? and,

      3 - assuming I misunderstand the requirements (a given in real projects) how difficult is the recovery going to be?

      On that basis I think Drupal gets closer than J, mainly because both will probably do most of what I want "out of the box" but drupal offers an easier route to getting one-offs done and greater flexibility in terms of recovering from having ridden off briskly in the wrong direction.

      But I'm not yet sure of any of that!
      murph_z
  • Wow a CMS

    Finally caught up have you Murph. Nice to see you at least dealing with current if dated content.

    The rest of us did it long ago.
    tonymcs1