Category Archives: CMS

Drupal Enterprise how-to

In a couple of earlier posts I mentioned how I thought Drupal could be used as an enterprise-level CMS, at least if you were willing to change modify your definition of ‘enterprise-level’ slightly.

When thinking about deploying any CMS across a large organisation or large company, one of the things you’re going to find is that you need two key things:

  1. separate departments will want separate sites that they can control the content of, and maybe even the look-and-feel of
  2. content from all those departments will need to be aggregated in some way, and reused by other departments

It’s these requirements that enterprise-level CMS cater for really well. It’s these that Drupal can only partially answer. This is why Drupal isn’t really completely enterprise ready, yet.

However it can go a long way towards that using its little-known but powerful multi-site capability. There are plenty of blogs detailing how you can do this in any number of ways, so I won’t go into details here.

Take a look at some of my delicious bookmarks for things I found really helpful in setting up a multi-site system.

Basically, the idea is that each site in your multi-site setup has its own folder in Drupal’s sites/ folder. Something like www.mydomain.com.site1 would do. Now you have one Drupal installation, but the potential for lots of separate drupal sites.

While that does cater for a really simple single codebase setup, it doesn’t let you share things like users and logins. That’s going to be crucial for any true multisite setup, because you’ll want the same user to be able to go to different parts of your overall website without having to log in to each separately.

Luckily, Drupal has a really elegant solution to this. You can easily share tables across sites using Drupal’s database prefix system. So for example you could say that site1 will have its own tables prefixed with site1_ except it will use the user table of site2 (identified by site2_) for its user data.

This is all set in each site’s settings.php file, and requires just a few lines of code to do. Simple.

And with that, you open up a whole new world of multiple sites with single signons: the first step to an enterprise-level solution.

OK, so you don’t have truly shared content across sites yet. You may never have that, but then you may never need that. RSS feeds, simple RESTful APIs… there are all sorts of other ways of sharing content. You could even get adventurous and write your own module that treats some kinds of content types differently, putting them in shared tables rather than a site’s own set of tables.

Hooked into Drupal

In my last blog I mentioned how Drupal really does seem to offer more than just the ability to get a simple site up and running quickly.

Framework

When you look at Drupal more closely you realise one key thing: it’s not really a CMS, it’s a framework. Granted, nothing quite like Symfony in terms of its level of sophistication, but a framework nonetheless. Even a fairly modest PHP developer can therefore take what’s there and build on it in quite surprising ways. The vast array of Drupal modules is testament to that.

Hooks

That’s what makes Drupal so alluring as a CMS. It’s founded on a system of hooks: naming conventions which ensure that pieces of code you write will get called in certain pre-defined situations.

The simplest example of a hook is the menu hook. If you build your own module, all you need do is put a function in it called mymodule_menu and whatever code you put in that function will get called each time the core code builds the main site menu.

The real elegance of the system is that almost everything is built from hooks. Even stuff which looks like it’s part of the core code, like user management. Well, that’s actually a module built up using hooks. If you want to build your own slightly different user module, you don’t need to change the existing one. Just copy it, taking out the bits you need, adding in your own bits. Before you know it, you’ve got your own custom user module.

Community

The learning curve can be a little daunting at first, assuming you want to get your hands dirty with some module coding. Luckily, there are loads of excellent books (I can definitely recommend Pro Drupal Development by John VanDyk), web pages, blogs, etc around to help. Just google them, they’re out there! That’s another great strength of Drupal: the community. No matter how stuck you are, how bad things look. Chances are there’s someone out there who’s been in exactly your situation and come out the other end.

Drupal as an enterprise CMS?

 

drupal

I’ve been looking a lot recently at Drupal not just as an open source CMS, but as a viable enterprise level CMS. Despite my earlier misgivings I think Drupal has a lot going for it, and it may be that over the next couple of years it will become a much bigger force in the world of content management.

Months of searching for a really good open source CMS had never really come up with anything that would meet my needs:

 

  1. free/cheap
  2. really easy for people to create and edit content
  3. great support, or at least a great user community I could turn to
  4. highly extendable by someone with sufficient coding expertise
  5. able to cope with lots of separate – but related – sites from just one installation

My first thought was Drupal. So simple, so lovely… but… but that’s just for small companies and society websites, right? OK, next!

Then I found MySource Matrix (developed by Squiz, an Australian company) which did everything except point 2 (and sort of failed on points 3 and 4, but that’s another story). Then I found Alfresco, which is really a document management system. As you’d expect, it did everything except point 2 because for it, web pages are just another form of document.

I was running out of ideas. But actually, after I was forced to think about the total lack of open source enterprise CMS, I started to wonder whether I really needed all 5 of the above. Maybe I just needed the first 4, and having a massively integrated multi-site system is something which I could live without.

Hoorah! Epiphany! Yes, Drupal does do everything I want. As soon as you start to realise that, Drupal seems to fit the bill perfectly.

Even better, the more I looked at multi-site capabilities, the more I saw how Drupal does allow for this, albeit in a somewhat limited way compared with the really big, expensive commercial CMS. Don’t believe people when they say that Drupal can only do small sites. It can do far more than that. With a little imagination and tinkering around it can actually do a vast amount.

Delving deeper… I saw that there are now companies offering enterprise level SLAs for Drupal. Specifically, I found Acquia. It’s a company set up by the founder of Drupal himself – Dries Buytaert – to offer the kind of hand-holding that’s put people off Drupal in the past. OK, it’s a very new company with no track record. But the signs are good.

I think the moral to this story is: make sure you know what you’re looking for from a CMS. Don’t just assume you need the most expensive powerful beast out there. Don’t even assume you need something that fits in exactly with your organisational needs. Chances are that in most situations, your needs aren’t quite so written in stone as you might think.

CushyCMS

CushyCMS is a very nice little ‘CMS’ tool/service that lets you edit content on your pages easily and simply. It’s by a small Australian startup (another Australian web company?!) called Stateless Systems.

To call it a CMS is perhaps a bit much. It’s basically a clever and lovely way for you to edit content on a static webpage via FTP, along the same lines as Contribute. Oh, so you think Contribute is a CMS, and therefore so must CushyCMS be? Well then I suggest you take a cold shower and come back after the next full moon. For the rest of us, this type of paradigm is nice for editing content, but it certainly does nothing for truly managing it.

Of course Cushy’s nothing like as complex a beast as Contribute, which is in fact a big selling point. With CushyCMS I had a basic page up and edited on my website in just a couple of minutes of logging in. Nice clean user interface, filled with healthy web2.0ness. Nothing scary for a webophobe.

You also don’t have the disadvantage of having to get a copy of all that expensive Adobe stuff, because CushyCMS is not only a web application, but it’s a free one too. There is an option to pay for a ‘pro’ version, which lets you change the design of the editing interface, and thereby fool your hapless web editor into thinking they’re really logged into your/their site when they edit content, and not the CushyCMS site. Is that worth $28 a month?

Before we get too filled with shock and awe, this system isn’t going to be the ultimate answer to CMS woes for everyone just yet. To set it up, you have to have a static page already on your site. This isn’t so much about content generation as it is about content editing.

And you have to manually edit those existing pages to contain bits of html that tell Cushy ‘this is an editable section’. Again, all very similar to Dreamweaver and Contribute. So you need a slightly web-savvy person to set up a site in the first place, and then a webophobe can edit the stuff that they need to.

Another drawback is that you’re very much reliant on their (not open source) software because all content editing is done through the web application. OK, no worse than being reliant on a desktop application that costs bundles of cash, but still… what if the site goes down, or they go out of business. You won’t lose your site, but you will lose your nice little system.

In conclusion, this is actually a very simple system which lets a web developer set up a simple static site and pass over editorial control to a non web-savvy editor. It is not a CMS in any meaningful sense of the word. But it is great at what it does.

acquia

Acquia is a company set up by Dries Buytaert, the guy who developed drupal, in an apparent attempt to get drupal taken more seriously by companies and institutions. The idea seems to be that Acquia (carrying on the water theme: druppel means ‘drop’ in Flemish) will provide commercial level support for drupal.

When a company or institution is considering an piece of open source software, having good support is always going to be a Big Thing. You don’t want to base your entire system support on the temperamental lone python hacker in your institution who knows how your open source code really works.

Without this level of support, drupal has until now tended to be taken seriously only by smaller companies and groups/departments within bigger institutions, who can generally manage their own installation.

There are of course tons of companies out there who already support drupal installations, but you have to take Acquia a little more seriously if only because the company is headed by the creator of drupal. There are also other supported open source CMS: Squiz’s impressive Mysource Matrix, and companies such as Netsight who support the normally very intimidating Plone.

It’s hard to tell whether Acquia will lead to a big shift in the way drupal is used, as Acquia seems to be a relatively new venture. Interesting nonetheless, and something worth keeping an eye on at least.

Matrix GUI, asset builders (and mums)

After fun and a few frustrations sorting out designs in MySource Matrix in my last post (probably mostly caused by me not knowing what I was doing, and with limited time to sort things out), I’ve been looking at the overall user interface for editors.

The interface is possibly a tad intimidating for some (could you imagine your mum using it?), but the great thing about the system is that it’s flexible enough that you can build your own very simple content edit interfaces.

Lots of buttons and flashing lights…

The thing to remember here is that MySource Matrix is a powerful system, with all kinds of features on all kinds of screens. Tickboxes, drop-downs, options, buttons all over the place. It’s great, but it’s complex. And as we all know, making something easy to use is a real trick. Just think back (if you can) to the days of video recorders that no one knew how to use because they made actually fairly simple things seem very hard to do. It’s the kind of thing companies like Apple have spent decades trying to perfect.

Actually the developers of Matrix have done a reasonable job, and in any case much of the interface is only for system administrators (like me) setting the thing up.

But if all you want to do is make a new page with some text, images, and links in it (this must be like 95% of all web pages) you don’t need or want to know about all the fancy stuff in the backend, all the different types of assets, etc, etc. You probably don’t even want to know what an asset is. You just want a nice box you can type stuff into, press a button, and away you go. You want something like wordpress with all its web 2.0 goodness.

Asset builders and simple edit

Thankfully Matrix has two features which you can get to work together to build a simple editing interface the way you want it.

The simple edit interface is basically a way of allowing users to edit a page without all that backend admin stuff. On its own it’s a nice feature, but not much use if you actually want to make a new page. Asset builders are really the other side of the coin, because they give you the flexibility to allow any user to add in whatever new assets you want them to add.

So, make a new page with asset builder. Edit it with simple edit.

I have to say that I haven’t tried getting them to work together yet. I don’t even know to what extent that’s possible. What would be nice is to be able to make a new page and edit it at the same time, then either publish it or save it for later if I don’t want it to go live. That’s what I’m doing now in wordpress. That’s what google docs does. It’s intuitive and quick. That said, I’m probably hoping for too much, because bolting something that simple onto what can often be a considerably more complex process (think workflows, nested content, etc) is a real problem.

Summary

Matrix offers a very comprehensive and rich backend interface. If you want something easier for your users you can build your own very simple frontend new page/edit interface, which is a really nice feature. Users still have to go into the admin interface to delete or move those pages, and do other fairly simple operations.

I’d love to see a friendlier backend interface to Matrix, and I have no idea if that’s planned for Matrix 4 (due out sometime next year apparently). Sprucing it up somewhat would certainly turn it into a pretty much unrivalled open source CMS.

MySource Matrix design

I’ve been playing around with mysource matrix on my laptop recently, as an early development stage to our pilot while we’re waiting for the server hardware to be set up.

One of the first things I’ve been looking at has been setting up designs, and I have to admit it’s been a somewhat mysterious process.

OK so I haven’t been on Squiz’s design training course, but I have taken a long hard look at the 94-page design manual (to their credit, Squiz have about 1300 pages of documentation, most of which is freely available.)

Part of the problem is our pretty complex set of css files. The other part of the problem seems to be the way mysource matrix deals with links to images in css files. Suffice to say that getting an existing design into mysource matrix isn’t much fun. Once you’ve got over that hurdle, performance seems to be an issue.

A far easier option is just to lift your static template, pointing to all those static css files and images sitting on your live webserver. In fact this works just great, and it’s what I’m now doing. But something makes me feel it’s not the ‘right’ way to do things. I should point out that I may have misunderstood something in how to set things up, so this review may not be entirely fair. Apologies in advance it that’s the case.

If you enjoy pain, and want to share some of mine, read on…

Getting Started

Let’s say you have an image that you want to call from a css file with something like

background-image:url(images/snap.gif)

How does matrix know where images/snap.gif lives? Unless it’s living somewhere on a publicly accessible web server, it has to be uploaded into matrix. You can then refer to it as mysource_files/snap.gif, and the system will know what you mean.

If this sounds simple enough, then wait. There’s much more. By the end of this you’ll think having teeth pulled is a fun experience. Read on…

CSS Files

You first have to tell matrix that each css file which has a url() is an asset, not just some static text file sitting there. OK, so I go through all 30 of my css files that are like this, creating them as children to my main design. Something is making me feel uneasy about this, but I carry on anyway.

Images

Right, now I have to make all the images that are referred to in each css file children of the corresponding css file. Ugh. Yep, well I don’t have anything better to do, so I reorganise all my images according to the css file they appear in. Some images in more than one place, but oh well I guess I could make them as copies if only I could remember which css file I already uploaded them to. Whatever. I battle on.

The process continues for some time…

Cool. It was painful, but now I have all my css files uploaded, with all their corresponding images. I’ve changed the css files to refer to mysource_files/imagename.gif rather than their original url.

Now I need to link these files into the main design. It turns out that I can’t actually do this directly. I have to create special design areas in the main design which point to the css files.

OK, not too bad? Erm, well it’s not that simple. I actually also need to put in what’s called a customization which acts as a bridge between design and css files, and it’s that thing which point to the css assets themselves. This feels very wrong, but I carry on.

Too slooowww…

Hoorah! Now after a few hours persistence I have a working design. I test it out. After about 8 seconds, my page loads with the correct design. Hoorah again!

Then I stop and think what’s just happened. 8 seconds? Hmmm, ok well I know this is just on my macbook, but that’s really a tad slow isn’t it?

At that point I realised that there’s a lot going on here. You can cache the css files, although that threw an error when I tried it. I eventually fixed that ‘feature’ temporarily, and it’s true things did start to speed up a lot.

But at that point I pretty much gave up. Life’s too short. The option to point all urls at the currently live designs was just too alluring. Anyway it was all a useful experience, if only to tell me that getting a design to work properly and load quickly in MySource Matrix isn’t a quick or simple procedure.

 

 

The Squiz Licence

I’ve recently been looking more closely at MySource Matrix, an open source PHP-based CMS. It’s very important to realise that ‘open source’ is not necessarily what you might think in the real world of running an enterprise CMS.

Squiz

So what about the details of using MySource Matrix in anger? First off, the software is essentially managed by one company, Squiz, based in Australia. It was (as far as I can see) very much developed by them, and while additions and improvements may have been added by people in a user-community over the years, what you get when you download the system is essentially a Squiz product.

Dual licence

Then there’s the dual licence. This basically means that you can download the software, install it on your laptop or server or whatever (as I did) and start playing around with it. This comes under a GPL licence, and you’re free to do whatever you want with it. Squiz have even kindly released hundreds of pages of documentation on how to use the system.

But you’d have to be a brave soul to do this for anything other than your department’s website, etc. Imagine your university or large corporation wanted a CMS, and you offer them something for which you have no training, and only a superficial idea of the mechanisms behind it because you can only spend 50% of your time on it? Would you really want to be to blame for that disaster-in-waiting?

And I think this is exactly what Squiz have realised, and exactly why they have a dual licence. That is, if you want something a bit shinier, more bells and whistles, proper training, proper support… well, really you need their SSV (Squiz Supported Version) licence. This is where things seem to change somewhat. 

The SSV bit

Once you enter SSV territory, you seem to agree that in essence everything you have is owned by Squiz. Moreover, you must tell Squiz about any changes you make to the code, and those changes aren’t yours. They belong to Squiz. This may scare some, and horrify true blue open source devotees. I should point out that it appears that, according to this page, that you can actually opt to limit your obligation to Squiz (for a fee). You can even opt to resell your own changes commercially, although I’d imagine this option demands an even bigger fee.

In any case, I wonder, is it really so terrible not to be able to modify the code, and still retain ownership of those changes? Would you really want to make any changes to a complex and well-supported system? About a year ago I had to tinker with phpBB to make it work in the way we wanted. Great. But now we have a system which would be hard to update if there were any new security patches. I also remember going to a Plone talk once, at which some developers proudly demonstrated how brilliant Plone could be. The only caveat was that it had taken them years of expert development to get to that point, and their version of Plone was so wildly different from the out-the-box version that updates were a significant problem.

It’s free

As far as I’m concerned, Squiz’s dual licence is sort of open source. It isn’t true open source, but really I don’t care. The main thing is that it’s much much cheaper to get hold of than other CMS vendors (ie no up front licence fee of £80k), and you can see all the code and work out what’s going on.

OK, changing that code and retaining ownership of the changes is another thing, but maybe you really need to be looking at your motives for getting a CMS. If it’s to get: a system which works, which users like, is easy to maintain, has good support, and doesn’t cost too much… well then something like this Squiz’s licence and MySource Matrix might seem like a good idea.

But if you want to spend the next few years tinkering and playing and developing your own modules, and at the end of this process you want to claim the changes as your own… well, maybe this licence scheme isn’t for you.

Summary

Squiz have developed what looks like a good CMS. They provide the software for free, but make their money out of support, design, and training. They also develop a number of extra modules, which they sell to non-educational and non-governmental clients.

But just because the software is free, it doesn’t necessarily mean it’s truly open source. Their SSV licence (essential if you want to use the system to its full potential and do serious stuff with it) means Squiz end up owning any changes you might make. I’m no lawyer, but it even seems like any modules you might develop end up being theirs too.

I don’t think this is necessarily a bad thing, at least if you feel it’s unlikely that you’d do a massive amount of development yourself. And it’s important to know that any changes you do make end up being incorporated into the product, so other Matrix users benefit. I also get the impression that many new bits of code are developed by users with collaboration from Squiz. So overall it seems like a collaborative situation where everyone gains from the development of a new requirement: Squiz make more money, and users end up with a better CMS. Is this bad? I don’t think so.

MySource Matrix and Squiz

I’ve been looking recently at an open source enterprise CMS called MySource Matrix. It’s written in PHP5, and unusually for open source CMS actually seems to be able to cope well at enterprise level.

mysource matrix logo

It’s built from the ground up on an asset basis. Everything is an asset: users, content, permissions, workflow. The whole lot. This allows for a great deal of flexibility and power.

Who?

It is not particularly well-known, at least outside Australia – where the core development has taken place. No one I’ve mentioned it to has heard of it before. It has been adopted by a few organizations (mainly local government and universities) in the UK. In Australia is has a wide user-base, having been originally adopted by the Australian government a few years ago.

This means that there is a good amount of independent support and development from a growing community of users. Being open source anyone can look at the code, make their own improvements, etc. However it’s a complicated system, so any tinkering on a full-on live system would be pretty scary.

Squized

That’s where Squiz come in. Basically this Australian-based company developed the system with grants from the government a few years ago, and released it as open source. It’s been evolving under their guidance ever since, and they’ve added in about a dozen (not open source) plugins. The plugins is one of the ways they make their money.

The other is to provide support for the system. Even though it’s open source, few people would be brave enough to take it on and tame it. Apparently they are beginning to encourage other companies to offer some support services, such as website design. But they are understandably pretty protective about being the sole company to offer full support.

It costs a bit

This is where one might reasonably have some concerns about MySource Matrix. It may be free, but the support and setup isn’t. And because no one else (apart from the wider user community) can offer support, you are in some senses just as locked in to this CMS as a traditional licensed CMS. Of course, the difference is that you might be locked in, but at least you haven’t spent £50k or more on a license. Money that would just rub salt in the wound should things start to go wrong.

Not that other open source CMS leave you any less locked in. For example Plone, a hugely popular CMS, is notoriously nightmarish to configure to your needs. Companies offer assistance, and once again you can end up tied into their particular solution or version of the core.

Not all open

Not everything in MySource Matrix is free. The extra modules (which are pretty crucial) are provided by Squiz under an SSV licence. Anything you do with them is their property. Does this matter? Well, I don’t think so. How often would you really want to tinker with the source code of someone else’s plugins. I guess it just encourages you to make your suggestions to them, and let them do the hard work. Of course, you have to pay for this. But you’d probably not want the development hassle anyway.

Summary

As a summary, I’d say the MySource Matrix/Squiz ticket looks promising. It has some obvious concerns, but they don’t seem to be concerns that are unique or particular to this CMS.

Open Source CMS?

At the moment at Kent we’re considering our options for CMS. We’ve been looking at enterprise CMS, and had a few fairly impressive demos of their capabilities.
But at the end of one demo, someone asked the sales guy why we should pay almost double the price for a licence than a competitor was asking, and over £150k more than an open source CMS we’d seen. Bear in mind that all the CMSs we’d seen seemed so similar that my CMSized brain had begun confusing one with another.
Their answer was telling: it’s more expensive because it’s better. Trust me.
Expensive is a good thing?
Ok so this isn’t exactly a brilliant sell. But this raises a key point, and one which is becoming more and more prevalent in software development. Is more expensive really better? In fact, maybe freely available open source can be even better still. Not only do you often have the same level of expertise going into a piece of software, but typically the experts are far more numerous. The risks are no greater (no companies going bust on you), and bug fixes and security holes are often spotted quicker and fixed sooner than in proprietary software.
Open source isn’t free
But before we get carried away with open source, it’s worth standing back a little and looking at the real costs of open source. For small applications in small-scale operations, open source is now a no-brainer. If you just want a small blog for yourself or company, why would you pay for blogging software when you have such great open source blogging tools?
It gets a little trickier with enterprise level software. It gets particularly tricky with CMS. The reason is again one of complexity. To get any CMS to do what you really need and want takes time and technical skill, neither of which are free.
Open source is cheap
One of the first things sales people from a big CMS vendor will say when you mention open source is: ‘oh but you’ll just end up spending loads of money and time trying to get the thing to work’. They say this as though this wouldn’t apply to their product. But just say someone could offer me the same level of support they could offer, but without the licence fee.
Why do I want an expensive licence?
Buying in a CMS with a costly licence doesn’t seem likely for us, and is becoming an increasingly unattractive option for institutions and companies with a reasonable amount of in-house expertise. My personal feeling is that the gap between expensive ‘enterprise’ level CMS and open source CMS is closing, and the benefits of paying perhaps as much as £80-100k (or more) just for a licence are becoming very unclear. 

 

Things get blurred when you consider what you’re really getting for a full-on enterprise CMS. The actual licence itself gives you the right to use a piece of software which out-the-box will be pretty much useless for your actual needs. Generally you will have to pay about 20% of the licence each year just to pay for support and maintenance (updates and the like).
Support
And you will need that support. Don’t think for a moment that you’ll buy a CMS, press a button, and all your problems will be solved. All too many people who buy a CMS have this romantic notion somewhere at the back of their minds, because of course everyone wants an easier life. The sorts of issues to be sorted out with the vendor will be: how do you migrate your existing content? Maybe you’ll have to think about content types too. And of course there’s the whole area of permissions and roles and groups, never mind more technical questions to do with server setup, caching, etc.
So now you’ve got through the first 6 months or so. You’ve spent maybe over £100k on your CMS, and it’s not really what you’d hoped for. The new website you’d been promising hasn’t quite happened yet, and maybe the support you were promised isn’t all that great because the vendor has just secured a much more lucrative contract. Would you be in this position had you gone down the open source route?
No promises
Well the answer is: quite possibly. But you wouldn’t have lost so much money. Open source CMS doesn’t promise anything more than a licensed product. But it doesn’t promise anything less. The point is that you’ll still have to do a lot of in-house development, tweaking, fiddling, server configuration, etc. But now you’re doing it without the costly licence looming over you.
But what about that crucial support? Open source means you’re on your own, right? Not so. An increasing number of companies are there to help you, for a fee. Back to money again, but at least you’re now only paying for support, not that ugly fat licence. And even better, because the product is completely open source, and company is able to support it as well as any other. There are no monopolies on support licences.
Drawbacks
So there must be drawbacks to the open source route? I suppose the main one is that there are a limited
number of open source systems which can reasonably call themselves ‘enterprise level’. Plone, MySource Matrix, Magnolia, OpenCMS are the ones that spring to mind, and each of these has its drawbacks in terms of either usability or a broad enough user-base. Each has a company or companies who will support you as much as you’re willing to pay, but again we’re back to the licence model, where there’s that nagging doubt that you’re locking yourself into something from which an escape may be tricky.
Conclusion
In conclusion, you can spend a lot of money on buying a licensed CMS. And then spend a lot more money on support for that product. Or you can get something for free, and spend the money you would have spent on support… on support. Does that sound ridiculously obvious? Few institutions and companies (curiously) feel comfortable with the thought that a free product could ever be as good as an expensive one, even though all the evidence is beginning to suggest quite the contrary is true.