dotCMS: An Introduction

// January 29th, 2008 // Scripts, Software, Tech, Web

I felt it was time to take a closer look at a content management system I am getting very involved with. One might say I’m drowning in it. I prefer to think of it as being choked by it, heh. Really, it’s a very interesting system, and a fantastic tool for the price (free!). I have worked with a number of CMS (Content Management System)’s over the years: Coranto, e107, Joomla, Mambo, Wordpress, Drupal, and a few others that I’m sure I’ve forgotten about. It’s easy to get locked into one or two for various purposes, which had been true with me for a long time. The problem is, my short list there is only good for small to mid range sites. Now I’m webmaster for a site of better than 10,000 pages and 70+ editors. Those open source solutions don’t easily or always comfortably scale up to those needs.

dotCMSThat’s where enterprise grade content management comes into play. Swinging big price tags, naturally. You start learning names like RedDot, OmniUpdate, Hannon Hill Cascade Server, Serena Collage (discontinued), and Ektron cms400.net. You also learn they don’t come cheap, some breaking the $80,000 mark. $15,000 in this group is cheap. In some cases, you don’t even have to host it. But the support, features, and scalability you get from this class of tools is in a different league. Wouldn’t it be nice if you could get the best of both worlds though? Something like a Typo3 or Zope/Plone system, but with enterprise grade support and a learning curve within reach of your users? A tool that was open source to boot? Generally there just isn’t demand for this sort of software, at least not enough to make a successful project, it’s enterprise grade and enterprise cost because it’s an enterprise market. However dotMarketing has stepped up to the plate. They have developed dotCMS to augment their design and consulting business, but released it free, charging only for support.

I need to be fair though. dotMarketing really stood on the shoulders of the work done at the Liferay Portal project, that’s where it started. Liferay is the underlying framework that drives dotCMS, written in Java, and running on top of Apache Tomcat. But they forked the project and went a long way towards customizing everything you see and interact with. It isn’t just a fancy admin theme dropped over someone else’s work. It is also tied together intimately with Apache Velocity, which is very slick for writing dynamic templates. Needless to say, this isn’t a simple one-off , self contained type of application. It’s build on several different technologies, all open source, to try and provide the best of each tool to the end user. When you download it, everything is packaged up that you need though, you don’t have to hunt anything down separately.

This does make it more complex than other open source CMS options. Systems like Wordpress or Drupal can be installed to any server that runs PHP and a flavor of database server. On the other hand, dotCMS requires you to have root access to the server to install things like the Apache Tomcat server. This requirement has hurt dotCMS’s market penetration, as many web site owners do not have that kind of server access, opting instead for cheaper hosting solutions. That is a shame, because dotCMS is easily one of the most powerful open source options available, with a much shallower learning curve than equally flexible solutions (I’m looking at you Typo3). It’s also pretty resource intensive, so you won’t be dropping this onto a lightweight web server you built five years ago on an old AMD K6-2 system you had lying around. Plan on needed a couple gigs of RAM and a modern processor to heft it. You can run it in a dev environment in a PC okay, but not with less than a gig of RAM (I know, I tried, I failed). It might be open source, but it is truly enterprise grade, and is built for an environment that reflects such.

Part of what makes dotCMS so good is the way they approach content. As an administrator, you can create structures. These structures result in a form-like input system, that allows you to pull out some or all data for a type (say, a news posting, or product review). Any structure can easily be attached to an RSS feed. Each structure is unique, but can be dynamically related to one or other other types of content in other structures. For instance, you have a structure for “blog posts” and one for “comments,” and the comments can be related to blog posts. But you could also relate certain comments to articles, or news postings as well. This is a basic CMS feature used in most systems, but with dotCMS you see exactly how it works, and can modify or expand it. Better yet, create your own. Players related to teams related to sports. The flexibility allows you to develop to your heart’s content. And you don’t have to be a programmer to do it. Admittedly, relationships aren’t super easy to understand out of the gates, but an example or two gets you going. They really got things right with regards to how content should be created and used, and did a good job taking the cork out of the bottle for the end user to go nuts with it.

Speaking of examples, they do have a complete demo site running that allows you to both test things, and also see how certain things are accomplished. This can be very useful if you want to duplicate some kind of functionality, but need an example. They also outline plenty of macros that allow you to easily accomplish common tasks, like creating slideshows, navigation, MP3 players, RSS feeds, and more. One thing their demo site doesn’t showcase is that it can even run multiple domains through one back end, so you could be running demo.site.com, and blogs.site.com, and www.site2.com all through that one instance of dotCMS.

If you would have asked me before, I probably would have said that Drupal or Typo3 had the best permissioning systems available in open source. That’s no longer even remotely true. dotCMS has a fantastic permissioning system that allows granular access to both content and admin areas. Groups are used to define what a user has access to at the back end, while roles determine what they can use, see, and access with respect to content. This combines with a workflow system that can be used to make sure content is properly reviewed and approved before it hits the page. It’s simple, and it works. Well. On the user side, you can easily tie into an LDAP or Active Directory environment, though it requires manual set up. Users can be tracked through the system to provide some basic analytical data, and attached to CRM functionality to label, organize, and communicate with them. This goes far beyond any other competitive product in open source.

Where it’s lacking: documentation. Right now, it’s pretty scattered and different documents can be out of sync with others. I understand this is changing, and that they are moving to a system a la Apache’s documentation method. It is definitely needed. Luckily, their mailing list is pretty active, and they tend to be responsive on bug reports. I think it would be nice to see a little more stuff built in by default. For instance, dotCMS can be a blog, or host them, but you have to build the structures and relationships yourself. Tools like that are common enough that it wouldn’t hurt to just have it already set up. There is also no file structure, in the normal web sense, so no FTP (File Transfer Protocol) type functionality, you have to upload through the system or via WebDav, if your server supports it.

I will be at the dotCMS Open Minds Conference next week in Miami. After that (and maybe even during), I’ll be following up with some more detailed information regarding their CMS. I’ll get a bit more into how certain things actually work, and what we’re doing to make it work to our advantage. In the mean time, their portfolio can give you an idea of what the system is capable of.

Update (08.04.21): If you are looking for additional support, be sure to either check out the dotCMS mailing list, or visit our newly established forum community. Also, expect new and improved documentation and support tools from the dotCMS development team around the 3Q of 2008.

Share:
  • Print
  • email
  • PDF
  • RSS
  • Twitter
  • del.icio.us
  • StumbleUpon
  • Technorati
  • Digg
  • Reddit
  • Facebook
  • Google Bookmarks
  • Live
  • NewsVine
  • LinkedIn
  • MySpace
  • FriendFeed

14 Responses to “dotCMS: An Introduction”

  1. Kyle says:

    Great in depth review. We have Ektron so aren’t necessarily in need of another solution, but I’ll definitely keep dotCMS in mind next time I do a major freelance project.

  2. Thanks. Once I get back from their user conference, I’ll pump out some more stuff that looks under the hood a little more so people can get a better idea of what it’s like working in it.

  3. Bamit50 says:

    Have you had any problems porting over CSS (Cascading Style Sheets) based layouts?

  4. Arnaud says:

    Bamit50, you create a CSS (Cascading Style Sheets) file as you would normally (global.css), call it from your page and that’s basically it. There are no specific adjustments to be made in that regard.

  5. You shouldn’t have any issues with CSS (Cascading Style Sheets) so far as I have experienced. You have total control over templates and layouts. Just make sure that wherever you place your CSS file, it has CMSAnonymous read access (which is the basic default permission to have something viewable to the world).

    The Velocity templating language is very easy to learn, and just as flexible and friendly as any templating system you’ll see in other CMS (Content Management System)’s, except Velocity is an Apache based project, so it has some real structure and thought behind it. They care about things like CSS and such.

  6. Great Review Michael!!

    At Edinboro we just went live with our new DotCMS system. So I can attest to your claims that this software is great.

    Bamit50: Our entire site is done with CSS (Cascading Style Sheets). While I can say that some things can get quirky (The Editor sometimes makes positioned divs misalign), I haven’t had any problem porting to DotCMS in that regard. You basically take your current layout, copy and paste the code into dotcms, remove the content and replace with containers, and then your good to go.

    I’ll see you at Open Minds Michael,
    Chris Falzone.

  7. @Arnaud: Exactly. The CMS (Content Management System) is designed to output nicely compliant XHTML, assuming what you put into the templates is good to begin with. The dotMarketing group places a lot of emphasis on standards compliant, and 508 accessible designs, and as such dotCMS is designed to carry that over.

  8. Bamit50 says:

    We have been trying to build templates that call global.css files, we’ve tried using the @ import link, we have even placed css in the heads of templates, the results have been unpredictable. Our admins have been having trouble with the install on the server too.

    Hopefully this doesn’t amount to massive pilot error. Thanks to all who replied

    B

  9. Jim says:

    Michael,

    Great review. Documentation is definitely a sore point but they are working on it! I’ll be at Open Minds next week and look forward to meeting with you.

    Jim

  10. Great, I suspect that will be a great networking opportunity for a lot of us. I’m really interested in seeing what kind of custom work people are doing.

  11. [...] dotCMS: An Introduction – Writeup of dotCMS and it’s value as an enterprise CMS (Content Management System) solution. [...]

  12. DotCMS support IBM Websphere and BeaWeblogic?

  13. I just asked their CTO about this and he said that in theory, since it is Java, it could run on other application servers like those. As for support, no. If it doesn’t work, you could probably contact them on the mailing list and see about help.

  14. Steve says:

    Hi Michael. Thanks for the info – this seems to be one of only a few good reviews on dotCMS. I’m trying to install it on our company development Web server and finally got the Tomcat service running dotCMS. Unfortunately, no Web pages are being served by dotCMS. I cannot find any online forums, documentation, etc to address this. I guess the moral of this is that a product may be free but if you run into issues even before you have it installed and operational you may end up paying big $’s for support. Not good. If you do know of any free support links, that would be great to add to your excellent article. Cheers.

Leave a Reply