Building a website with an Open Source CMS
I think the open source community has done an excellent job of figuring out how to create frameworks for developing web applications. But what about websites. You know, the web presence that every company wants - for minimal cost. For most companies, it's nothing more than 5-10 pages that tells a bit about the company, show some management folks and tells you how to get to their offices.
I've developed many websites over the years, many that were static, but more that were dynamic. The unfortunate thing about all of them is they required someone technical to update them. Often, the client had to contact me if they wanted anything new on the site. I've often thought there was a better solution - and I think I'm at a point where I know what customers want, and I know how to provide it. The solution is a Content Management Solution (CMS). One of the biggest problems with static websites is they're not dynamic enough. A CMS can alleviate this problem by reducing the bottleneck that a traditional "webmaster" creates.
In my mind, there are a couple of things that make a good CMS: 1) it's open source (to minimize costs to the client) and 2) it's easy to customize. On the customization front, my demands are a bit more rigorous - mainly because I know what many folks want in a website. Here are my main criteria for a good open source CMS - when it's used to power a regular ol' client-updateable website:
- Design customization: I should be able to customize all the (X)HTML that's generated using one or two files (like SiteMesh allows). It should be possible to change the look and feel of *everything* by modifying some CSS. It should also be possible to use Mike Stenhouse's CSS Framework to simplify layout choices for clients. Ideally, a web designer or regular ol' HTML person could do the customization.
- Static-looking URLs: The site should look like a static site. The URLs should be all lowercase and end with .html. It should be possible to modify all the URLs to look as if all pages are static. Apache's mod_rewrite and the URL Rewrite Filter are great tools for making this happen, but it'd be nice if the administration of the application allowed for setting these rules.
- It shouldn't look like a CMS: No login links, no registration links, etc.
- Ability to easily add dynamic content: It should be easy to add dynamic content - such as RSS Feed headlines to pages.
- Menu Customization: In the application, it should be possible to create menus (both main and local navigation) and configure a page to highlight a menu when a particular page is shown.
- Versioning of pages: In case someone messes something up, it should be easy enough to revert back to a previous version.
- Easy to use: It should be possible to train a marketing person (with little technical knowledge) how to use the system in 10-15 minutes.
For technical companies (such as Virtuas), there are a few additional requirements I'd like to see:
- Articles with syntax highlighting: It should be easy to publish articles with code that's colorized. The Java2HtmlPlugin for JSPWiki is a good example of this. I currently don't know of any for XHTML, XML or scripting languages like Ruby or Python.
- File Upload: For uploading white papers and other technical publications.
So I've started looking at open source CMS's that fill my requirements. Last weekend, I wrote a solution that fills all of these requirements using SiteMesh, JSPWiki, CSS Framework, Acegi Security and the URL Rewrite Filter. It only took me about 6 hours to complete, but after completing it - I started wondering if I really wanted to start another open source project and maintain it. The answer is no, I don't want to create something new - I want to use something that's already out there. However, since I do have something that satisfies all my requirements, I will use it if I can't tweak an existing OS CMS enough.
Here are a list of CMS's that I'll be looking at in the next week or so. If you're associated with any of these projects, please leave a comment and let me know how many of my requirements you satisfy.
I'm a bit hesitant on Daisy b/c it requires XSLT knowledge for design customization. Magnolia has long URLs and doesn't appear like a static site - and the PHP ones often have .php in their URLs. It should be an interesting investigation to see if these (seemingly) heavyweight solutions can solve a few simple requirements.
I set up a couple of screencasts on my site of openCMS in action- it may be worth taking a quick look. They are at:
Posted by Tim Howland on September 09, 2005 at 01:45 PM MDT #
Posted by Andrej on September 09, 2005 at 01:55 PM MDT #
I know nothing of the ones you mention, but I just learned of an Open Source CMS system from another developer last week, who says it is excellent.
He spoke with the CTO of the company and they are using all of the latest technologies: JSP, Spring, hibernate, Lucene. If you or anyone knows any thing about it, would appreciate the knowledge. Peter
Posted by Peter Delaney on September 09, 2005 at 02:38 PM MDT #
I can add 2 to your list: Plone and Drupal. Spring just went with Plone and I just went with Drupal. Plone seems to be good at big corp. features but is hard to set up. Drupal is good a community stuff, but isn't as polished as I would like.
Drupal meets all of your features. but don't believe them when they say it will work on Postgres. You will be forced to use MySQL. And you'll need to get your head around bizarre features like Pages / Stories / Blogs and Book Pages.
Posted by Joe Walker on September 09, 2005 at 02:48 PM MDT #
Posted by scott on September 09, 2005 at 02:56 PM MDT #
Posted by Tom on September 09, 2005 at 03:02 PM MDT #
Posted by Robert B on September 09, 2005 at 03:08 PM MDT #
Most of the CMS I seen so far are really standalone products or do not fit in with the Spring framework.
Posted by René on September 09, 2005 at 03:24 PM MDT #
Alfresco isn't meant for creating websites, it seems. We're evaluating it now for document management, and for that, it's pretty nice even if only a technology preview atm. But it doesn't meet any of your requirements.
Posted by Tim on September 09, 2005 at 03:27 PM MDT #
Posted by Niall on September 09, 2005 at 03:44 PM MDT #
Posted by Matt Raible on September 09, 2005 at 04:24 PM MDT #
Posted by Tom on September 09, 2005 at 04:29 PM MDT #
IMO, Zope is by far the best tool for this kind of thing. It can be used as a framework, but it can also be used out of the box as a CMS. I've built entire sites in a day with Zope, spent the next day training people on logging in and editing content pages, and was done.
No login links; when you try to access the manager, you're prompted for HTTP authentication. Set up headers and footers at the root level, and any document in child folders can use them as if they were in the current folder, or they can be overridden in a child folder. "Files" can be static HTML, image, or other files, DTML template pages, Python scripts that generate dynamic content, or whatever.
Exporting your data from Zope is easy enough, there's a standard tool to export to the filesystem (it normally stores everything in the ZODB database).
Plone is built on Zope, and does a bit content creation hand-holding, but was always more effort than it was worth for me to ever use on a client.
Posted by Mark Hughes on September 09, 2005 at 05:29 PM MDT #
Posted by Alonso on September 09, 2005 at 05:34 PM MDT #
A couple of sites that use Drupal in either exactly the way you mention or in very similar ways are Sierra Tarn a small business site and The Onion. It is not nearly as heavy on the eye candy as tools like PHP Website but I've given many people 15-minute demos over the phone and never had another question from them on using their site so even without the built-in polish it's pretty capable. A lot could be done to improve the administration side as it's often neglected in themeing and site creation. But there are folks actively working on it.
As I do each time I talk about Drupal I have to mention that it has absolutely stunningly great taxonomy features. This may not seem like a huge thing until you get into a site and realize how easy it is to have multiple ways to classify information and that those translate into ways of viewing content. For example by simple selection of a taxonomy term content on my site takes on a completely different theme (OK my themes aren't totally different but each uses its own graphics and CSS and they could be really different).
Posted by Joshua Brauer on September 09, 2005 at 07:38 PM MDT #
Posted by Anothermike on September 09, 2005 at 08:04 PM MDT #
Plone is quite useful if you have to manage a large site with unusual content types. It's truly a "content" management system in the sense that you can create and maintain all the common content types, such as documents, files (this is the "file upload" feature you mentioned), photos, events, and news, but it also provides sophisticated facilities to create and manage your own content types. Plone is much too heavy a solution for the kind of 5-10 page site you talking about, I think. It's hard to find shared hosting providers for Zope/Plone, primarily because Zope consumes a lot of server resources. Plone is great, but not a match here.
Drupal meets many of the features in your list. It's PHP-based and easily available from most hosting providers. Like so many of its PHP-based CMS brethren (visit opensourcecms.com for a comprehensive listing with demos), however, it is heavily slanted toward use as a "community" site, where users can "join" the site and post entries in forums, personal blogs, etc. and the home page is a listing of the latest news, blog posts, events and so forth. With moderate effort you can make a Drupal site look like a static site, but it feels like swimming upstream.
In short, I'm still looking for the open source solution that meets your list of requirements. Though I've not used it, I think the Dreamweaver/Contribute commercial solution from Macromedia probably comes close. I don't think a Java-based solution will hit the sweet spot since affordable hosting of Java apps is difficult to find and probably outside the comfort zone of most of the web site designers who build smallish sites like the ones you're describing - though I'm sure many of us would like to see what you came up with. Maybe someone will build this thing with Ruby on Rails. Please post again if you find something that nails it.
Posted by Doug Evenhouse on September 09, 2005 at 09:07 PM MDT #
They all fail the "10 minutes test" too :). If a CMS fails the 10 minutes test for a developer, than it will fail for sure the 3 days test for a customer (that's the most time small customers will invest in learning a CMS - but not full time in those 3 days). What's very bad is that for many of them even for developers are very hard to use/maintain/learn.
Here's one simple enough(it passes the 10 minutes test), very practical, and also fast and lightweight:
It's based on SiteMesh (hence it's name), and thanks to SiteMesh the application is very easy to use and has no complicated concepts to learn for the end user.
The Sourceforge project is here for MeshCMS.
Even more - it has documentation (see on the site the 'help' menu item) - this is very uncommon for most open source CMSes.
My 2 cents: don't evaluate a CMS for yourself but for the customer - he's going to use it day by day not you :)(the CMSes in your list - all require constant developer interaction).
Posted by Ahmed Mohombe on September 10, 2005 at 04:53 AM MDT #
Posted by Wouter on September 10, 2005 at 08:04 AM MDT #
Posted by Aaron Longwell on September 10, 2005 at 10:33 AM MDT #
Magnolia layout is CSS only. Web-layer consists of JSP-documents (templates) with a nice tag library for accessing content if your not satisfied with the default templates. The content is decoupled off to the JSR-170/JCR (Jackrabbit is one implementation), and we smell lower TCO because of this.
It is a relatively heavy web-CMS, but has a few bonuses like searching, and version control is on the way (it's part of the JSR-170) and an internationalized/translated and pretty GUI.
Posted by Thomas Ferris Nicolaisen on September 10, 2005 at 08:00 PM MDT #
Posted by tyneit.com on September 10, 2005 at 08:35 PM MDT #
Posted by Andrey Grebnev on September 11, 2005 at 04:18 AM MDT #
I think it has one of the cleanest user interfaces for allowing the client to manage their own content. Magnolia handles all of your requirements out of the box except for page versioning (that's available behind the scenes (JSR-170), but there's no interface for it yet).
Posted by Stuart on September 11, 2005 at 08:15 AM MDT #
Posted by Peter on September 12, 2005 at 03:12 AM MDT #
Posted by Joe Walker on September 12, 2005 at 04:58 AM MDT #
Posted by Lee on September 12, 2005 at 05:15 AM MDT #
Posted by Emmanuel on September 12, 2005 at 09:48 AM MDT #
Posted by Kishore Dandu on September 12, 2005 at 09:58 AM MDT #
Posted by mal on September 12, 2005 at 11:26 AM MDT #
Posted by John Mark on September 12, 2005 at 03:08 PM MDT #
Posted by Edward on September 12, 2005 at 03:52 PM MDT #
Posted by John Mark on September 12, 2005 at 05:08 PM MDT #
Posted by -FoX- on September 13, 2005 at 06:11 AM MDT #
Posted by td on September 13, 2005 at 08:57 AM MDT #
Posted by Sylvain Carle on September 13, 2005 at 09:14 AM MDT #
Posted by Rory on September 14, 2005 at 03:25 AM MDT #
Posted by Kumar Pandey on September 16, 2005 at 09:08 AM MDT #
Posted by Joshua Jacobs on September 16, 2005 at 09:29 PM MDT #
just to add that a friend of mine just tested how to configure and redesign CMS (this guy is a designer) and found Drupal was the best.
Just my 2 (euro)cents :-))
Have a good one
Posted by Gabriel on September 21, 2005 at 09:05 AM MDT #
Posted by Boris Kraft on September 21, 2005 at 09:27 AM MDT #
Posted by vivek on October 13, 2005 at 08:37 PM MDT #
Posted by 184.108.40.206 on October 23, 2005 at 01:03 AM MDT #
I would actually recommend using a CMS. We chose Drupal for Virtuas. See my other articles on the CMS front.
<em>> Using roller for blogging seems to be too heavy weight, i.e. 13.5MB.</em>
The size of a Java application is rarely an indicator of it's "weight". Roller might be considered heavy b/c it's a database application and uses Hibernate/Struts, but it's also very stable and can handle a very large load. If you're looking for a file-based blogging engine (instead of database), take a look at Pebble or Blojsom.
I definitely like JSPWiki.
Posted by Matt Raible on November 10, 2005 at 09:46 AM MST #
Posted by Prabhat on September 27, 2007 at 02:08 AM MDT #
Posted by shashikant on September 30, 2008 at 02:58 AM MDT #
I don't recommend using JSPWiki as a CMS, but the technique (using a Wiki Category called "Publish") is worthwhile and the scripts may be useful to some folks. I've recently added RSS, a sitemap, and Typepad Connect powered comments.
Posted by Jim White on December 28, 2008 at 05:02 PM MST #
Posted by Defkon1 on January 07, 2009 at 04:58 AM MST #
Posted by Robert Thompson on October 09, 2009 at 11:05 AM MDT #