Drupal you say? I’m not too mid-stream to change horses if there’s a good reason to do so. If Ubercart has great digital content delivery features and the ability to sell URLs (and obfuscate the real directory structure), then I’d be all ears.
Oh, and your “About Freelock” page and subpages ROCK THE HECK OUT! =)
There are plenty of good reasons to consider Drupal/Ubercart over Joomla/Virtuemart. I would summarize these as follows:
- Much better integration, more consistent interface for managing both content and e-commerce
- Much easier to maintain, apply security updates, stay current
- Better SEO out of the box
- Solves your immediate needs without sacrificing flexibility down the road
Those may sound like feature bullet points that anybody could say about their favorite project. But let me back them up with some specifics.
Add-ons to Drupal integrate much deeper in the system than those for Joomla. The basic architecture of Drupal uses a "hook" system to expose a huge variety of events for customization -- these hooks allow "modules" (the name for any custom Drupal extension) to change the fundamental behavior of Drupal itself in just about any way imaginable.
In contrast, Joomla customizations happen at a much more surface level. Joomla defines 3 types of add-ons for your custom code: a "Component" that can basically put something in the main part of your page, a "Module" which drops some content in boxes outside the main part of the page, and "Plugins" which can filter text inside a component or block or page, hooking up patterns to special functionality.
In Drupal, a module can do all of the above. A Joomla "component" is called a menu callback in Drupal. A Joomla module is called a block. A Joomla add-in is called an Input Filter in Drupal. But Drupal modules can do so much more. Like add a custom workflow to a core content item, maybe for a publishing approval process, or for an e-commerce order. The permissions system is a far more granular "roles" based permission system, and authorization itself is provided by add-on modules you can pick to match the specific needs of your site.
So when you install VirtueMart in Joomla, you're installing an entirely new component that has to provide a bunch of its own functionality, rather than being able to re-use stuff that's in Joomla's core -- you're essentially adding an entirely new application that happens to integrate with Joomla's menu and users but little else.
Ubercart, on the other hand, defines a new "content type" that may have fields defined by other regularly used Drupal modules. It uses Drupal's core taxonomy system to create a catalog for organizing things. It exposes objects to Views to allow you to endlessly tweak the display of collections of items, and uses ImageCache to automatically generate thumbnails of any pictures you attach to a product.
With Drupal, modules add on and enhance each other. In Joomla, most add-ons are stand-alone, and while many have created specific integrations to work with each other, these are the exception rather than the rule.
Easier to maintain
This, as much as anything, drove us away from Joomla. I know they've spent a lot of time trying to rectify the situation, so I can't speak to the current state, but it used to be that to update a component in Joomla, you had to uninstall it first. And some components would delete all their data when you did this! Completely unacceptable, completely broken.
In contrast, in Drupal, you simply drop the updated module into the server, and run an update script in Drupal itself. Any module that has an update simply publishes it via a hook. And so modules have a built-in mechanism for applying database updates if necessary, without destroying data.
And now there's a command line tool that makes this process much easier: drush. A simple "drush update" will download all recommended updates of every module you have installed. We don't tend to do that -- we prefer to update one at a time and test between updates -- but drush makes this simple, too. We don't ever need to download updates to modules and mess with uploading them to the server -- we log into the server and use drush directly. Combined with drush sql-dump to make a quick database backup first, and using git to manage the code updates, we can easily update and roll back changes that don't go smoothly.
SEO in Joomla is an afterthought, and suffers from some of the core organizational limitations of Joomla. One of the first real annoyances I hit with Joomla was its rigid 3-level hiearchy for organizing content -- section, category, article. No more, no less. So when they finally at least added some "friendly URLs" to Joomla 1.5, it was limited to this hierarchy, and if you wanted any more control, you would have to install a 3rd party component to manage URLs for you. And while these could manage tons of individual URLs, you don't really have much ability to make sane rules to give you something decent out of the gate when you post new content.
With Drupal, you have no such limitations. The "Taxonomy" system allows you to create any number of organization systems. They can be heirarchical or flat. Terms can have multiple parents. There can be up to 9 levels in your hierarchy.
Pathauto lets you define different URL rules for different kinds of content. Add a date to your blog post URLs, but not your news articles. Put your store product items under a store path. Hackable URLs are possible to build in Drupal with some planning -- and even if you don't do it up front, you can easily add these later. And you also have Path Alias and Path Redirect modules that do the same thing as the various Joomla SEO modules.
Solves your immediate needs
The single biggest thing that makes Drupal better is its ability to change. Power tools like "Views Bulk Operations" lets you find all content matching a particular set of criteria, and bulk-apply an action, such as changing their URL structure, adding a new taxonomy term, changing their author, setting the value of some field, or turning on comments. (Oh, that reminds me... why does a content management system ship without built-in comments these days, anyway?)
So to address your specific questions:
"If Ubercart has great digital content delivery features..." - there is a digital download product type that comes with the main Ubercart module, called uc_file. We recently deployed this for a client, and I'm impressed with how much thought was put into preventing unauthorized downloads. When a user purchases a file, they get a hashed link that is only good once. If the administrator allows, the user can get a new link on their user profile, in a purchased downloads area -- this prevents them from sharing a link that is generally available. You can force them to be logged in for the download to work, and can limit the number of times a user may download a file and/or the number of IP addresses they may download from.
"and the ability to sell URLs (and obfuscate the real directory structure)" - for regular content on the site that Drupal manages (as opposed to file downloads), we have set up several sites with subscription-based content. At its simplest, we create a custom "subscription" content type for content to be protected, and then create a role you need to have to access it. The "uc_roles" module allows users to purchase that role, and it can be set to automatically expire at the end of the subscription period. There is also a uc_recurring module to auto-charge subscription renewals, though that's a bit unstable at the moment.
Say something nice about Joomla!
Well, uh, it's got a pretty back end... and it's easier to figure out, if you're a reasonably competent power user. Drupal does deserve its reputation of having a steep learning curve -- the thing about Drupal is that there are a set of contributed modules we use on every single site that makes it a powerful platform -- and if you just download the core Drupal and expect to get that power, well, you're going to be disappointed and confused.
We can do far more complicated things, far more quickly in Drupal than in Joomla, even though we've still done more Joomla sites overall (not for much longer). But if you are trying to do it all yourself, starting from scratch, with nobody to help you get started with the key modules you really need for an effective Drupal site -- you're going to struggle for a long time.
I would say pick Joomla if:
- You already have experience with Joomla, and know your way around
- You're capable of keeping it and all the add-ons up to date
- Its rigid organization structure maps well to your content
- Your needs are modest -- you don't need the tight integration across the entire system
- You don't expect to do a lot of content updates
- You don't have the time to learn the ins and outs of doing a Drupal site
- You don't have the budget to hire a company to set it up and get you off and running.
If all of the above are true, stick with Joomla... If any are not, we'd be happy to help!