elliot's blog

Open source CMSs

I am very confused: there are so many open source CMSs, and they vary so much in quality, features, appearance, complexity, and across multiple other dimensions. Finding one which does everything well is extremely tricky. I've been reviewing many of these beasts over the last couple of weeks, and have installed about 10 and tried to build the same simple site with each (using my "20 point CMS test", which I may publicise eventually). My eventual aim is to produce a report recommending a selection of half a dozen, for a variety of different needs.

So what can I recommend so far? Well, my current "generic" leader is Drupal. This is well-thought of in the community; the code seems relatively clean and fairly easy to extend; it has a lot of nice modules for doing all the common CMS tasks; the default templates produce decent XHTML/CSS. What's missing? WYSIWYG editing in Mozilla/Firefox seems quite an important omission. The blog module is also a bit primitive by comparison with WordPress (which I really like), so I think I'll stick with WordPress for blogging at the moment.

My next self-imposed challenge, then: see how hard it is to write a Drupal module which replaces Drupal text areas with the TinyMCE in-browser, WYSIWYG HTML editor. I've seen this done in Xaraya, but not for Drupal yet. This could actually be a useful module for other people, and give me a concrete project which will encourage me to learn how to code Drupal modules.

Website launch

I've recently been building a website for a charity in Manchester (see Self Help Services), which I launched last week. I found out about the project through the IT4Communities website, which I recommend for anyone with IT skills who would like to do some charity work. I also got involved to improve my portfolio, when I was thinking about a career change and considering consultancy.

One thing I'm quite pleased about is that I designed it to the W3C Web Content Accessibility Guidelines. As a consequence, when I tried the site through my new HP iPAQ PDA, it displayed very nicely, unlike 90% of sites on the web. I've always maintained that building accessible sites would future-proof them: human-accessible = machine-accessible as a consequence. Nice to see it working in practice.

Spread Firefox campaign

Made my donation (worked out at £17) to this campaign: Spread Firefox - Igniting the web.

My name will appear, along with around 9000 other people's, in a New York Times ad. in support of Firefox. If you haven't already switched, why not?

SugarCRM bug report

Finally, I've made a concrete contribution to an open source project: I submitted a bug report to the SugarCRM people a couple of weeks ago, and it's now been fixed. SugarCRM is, as you might have guessed, a CRM system. It's interesting because, while it is open source, it has a huge amount of backing from venture capitalists. It's something I intend to review before too long, as I've been given the task of writing a CRM "primer" as part of my work schedule. I'll be looking at it alongside XRMS and other projects.

Anyway, it's nice to finally make a contribution to open source, even though it's small.

(The bug report is at SourceForge.net: Modify:1031310 - SQL error when associating contact with task.)

del.icio.us extensions

Found an interesting Java API for working with del.icio.us at: http://delicious-java.sourceforge.net/.

I've also been working on some Python scripts for parsing a Mozilla bookmarks file and posting the results to the del.icio.us REST API. Take a look at the scripts if you're interested.

Then found someone else had been hacking around with Python and del.icio.us: http://www.hackdiary.com/archives/000060.html. Should have searched for that before I started, I suppose. I just got carried away. Still, I haven't found any Mozilla to del.icio.us parsers other than mine.

del.icio.us

del.icio.us is a bookmarking service (see http://del.icio.us/doc/about). Basically, you can put your bookmarks into a central web-based repository, and use them from any browser (e.g. by opening your bookmarks in an HTML page). There's a link to my bookmarks in the menu on the right.

Plus points for me are:

  • Firefox/Mozilla integration: you can get yourself an extension at http://mozdev.org/ which adds del.icio.us functions to the context menu; for example, the "Post current page" option posts the current link to the bookmarks server.
  • REST API: you can programmatically access your bookmarks as XML feeds, with the option of using parameterised queries.

Evaluating open source software

There's a lot of OSS. How do I make choices about what's good and what's bad? Here's some things which put me off some OSS products.

  • Crippled deployment
    I dislike OSS products which don't provide an easy build process. They are often provided as source only and extremely hard to configure, requiring all kinds of dependencies which aren't specified. There are also often lots of configuration options which aren't documented. This isn't necessary. It is often eminently possible to produce RPMs or the like for these packages, with little fuss or complexity, but firms hold onto these and use them as a unique selling point. (For example, TotalRekall is a company which does this.)
  • Glossy websites
    Call me a bigot, but I'm not keen on OSS with a flashy website. This makes me suspicious. There's nothing wrong with a nice website, but I am wary if a company looks like they have spent a ton of money on it. It kind of suggests they've got their priorities wrong. (See Typo3.com.)
  • Not eating your own dogfood
    Say I go to a site to read about a CMS designed for corporate sites, and the company producing the CMS doesn't use it. This suggests the CMS didn't meet their needs. What's the chance it will meet mine? Similarly for companies selling OSS services who run their website using ASP and IIS: it suggests to me that their heart isn't in OSS, if they don't even use it in the areas where LAMP is quite obviously the correct solution.
  • Hiding the treasure
    Some companies produce dual-licensed OSS, then hide the OSS version. This is OK to an extent; but when the OSS version is only available from a single link at the bottom of a page buried in the site somewhere, you get the idea they don't want you to find it. This is deceitful. Why be scared about someone using the OSS version? I'm more likely to want to pay a company who makes it easy to find and use a proper trial version which is easy to install and understand.
  • Poor examples
    If assessing products for website development (CMSs, for example), it is easy to find example websites based on the CMS. This can immediately give some idea of the performance of the system (though only if averaged across all the example sites: poor performance on one site may be down to local configuration, but poor performance across many sites is more likely due to the system under analysis). It can also give an idea of its flexibility (though this is like trying to deduce the genotype from the phenotype, and may be a bit misleading): do all the sites look the same (in which case it's likely the templates are limited in scope)?
  • Poor interoperability
    Good open source projects will often reuse the work of other projects. This is a good indicator for me of how standards-compliant and open the APIs of the product are. If a product stands in isolation from everything else, and has reinvented several wheels (e.g. has its own web server specific to the product), it is likely that this was done either through a desire to hack for the sake of it, because the existing products wouldn't work with this product, or because the developers on the project didn't do sufficient work or have sufficient understanding to look for existing solutions.
  • Lack of extensibility
    Some open source products are very badly designed. This makes them difficult to customise and extend, if you want to do this (which is, after all, part of the reason for choosing open source).
    A good indicator of a well-architected piece of software is the availability of an API for plugins. This shows that the product has been designed to fit with other products from the get-go; it also gives an indication of how easy it would be to extend the product myself. Look at major open source projects like Ant and Eclipse: part of their popularity stems from their extensibility.
    Another indicator is the availability of templating or mapping facilities: these are generalised features which make adding your own extensions much easier. For example, the Castor data binding framework for Java provides facilities which allow you to specify how fields in a class are mapped to XML elements and/or attributes. The mapping itself is defined in XML. No pre-defined mapping style is mandated.
  • Lack of development activity
    A project with few developers, no activity on mailing lists, and no recent releases, is likely to be moribund. I am not prepared to commit myself to a project which hasn't seen life for several months: it is unlikely to be patched if security issues arise, and unlikely to improve if it has any missing features.
    If a product lacks features, but has a lively development community, I may well track its progress until it supports the features I need. For example, about 18 months ago I looked at the eXist XML-native database project and tried it out. It didn't support XUpdate, which made it unsuitable for what I was trying to do. But because the development seemed active and up to date, I kept an eye on it. Now, XUpdate support is included, and I am considering using it for a new project.
Syndicate content