Tuesday, January 8, 2008

Alfresco WCM 2.1.x review (on the eve of the 2.2 release)



Alfresco / Alfresco WCM 2.1.x has been out for some time and it's time for a review. I want to try and provide a balanced perspective. While given that I have an Alfresco blog -- I think the product is great there are areas that need work and I think they are worth sharing and discussing. That said:

Alfresco WCM is novel technology – there isn’t anything like the virtualization server, the AVM (Alfresco Versioning Machine), or the kind of link verification found in WCM out there on the market today.

The virtualization server is a preview server or staging server that allows all users to view the changes they have made in their individual sandboxes in the context of the content that has been pushed to preview. At first this does not appear particularly special in any way but it turns out the be something that really is quite special. Imagine two projects taking place on the same website simultaneously, during which massive CSS changes must be made by each team. Outside of WCM and its virtualization server you must set up two complete instances of the site and go through the trouble of keeping them in synch. The virtualization server however gracefully handles this issue by giving each team its own sandbox to work in. Each sandbox is a layer on top of preview, like a sheet of glass which superimposes the changes made in the sandbox while allowing the modified content of preview to “shine through” (the glass) enabling an in context preview of the changes in the sandbox. We’ll talk more about layers in just a moment. Before we move on it’s important to point out that the virtualization server doesn’t just virtualize standard web pages, it’s capable of virtualizing PHP, ASP and even entire J2EE Web applications and we’re not just talking JSP here – we’re talking servlets, application frameworks (struts, jsf) and inversion of control containers like spring.

The AVM is a content store that acts like the SVN source code repository on steroids. In addition to the SVN tree like capability which enables the user to version the enite site on each submit enabling the ability to time travel through changes/versions of the site, AVM introduces a concept called layers. Each layer is like its own SVN tree but layers can be stacked on top of or superimposed on each other to create complex views to better support collaborative workflows. The basic example can be seen in the Alfresco Web Client where layers are used to create a Staging or Preview area and individual sandboxes for each collaborator for a given web project (website, web project, etc)

The link verification is unlike other link verification in that it goes beyond the traditional static analysis found in most products to include server side includes and other runtime link checking.

That all sounds great – it sure does! Is there anything else? Yep – WCM has support for simple and complex workflows through JBPM integration, several deployment capabilities and a visual / GUI XML document editor (based on the XFORMS standard)

Anything else? Well there is a bit more in the product that just hasn’t been exposed yet and many more features on the way.

Version 2.1.x is the latest stable release and 2.9.x is the latest “Labs” release. If you are looking for more stability go with 2.1.x and if you are looking to try out the latest and greatest features available start up a labs instance. One of the best way to keep up with what is going on with WCM is to keep a watch on this wiki page: http://wiki.alfresco.com/wiki/New_Web_Content_Management_Plan

WCM has come a long way and in my opinion 2.1.x is the first release I feel is ready for prime time consideration. There are enough important features available to make the product a valuable tool. That said we have a ways to go in making the product truly great. Let’s talk about a couple of things that could use some work.

Roadmap: I’m a guy who likes to keep up with where things are going in Alfresco. I read the forums, I read the wiki, I download the source code almost every week just to see what’s shaking … the roadmap on the wiki doesn’t really help me. Road maps are hard – they really are but I am only being honest when I say I wish there was more there: a more distant look in to the future stretching from the certain to the very fuzzy -- with links leading to documentation and “white boarding” on the concepts. Personally I would like the tools I need to think about the software before I hear about it in a release scheduled, and before its been coded and is sitting in the labs tree. I want to be able to point out corner cases and use cases that are relevant to my needs and I want to plan 6 months to a year out based on how Alfresco is posturing. I may want to contribute design ideas and perhaps even code. The roadmap is the single most important community tool in an open source project – I don’t have proof for that – but I feel it in my gut.

Workflow: I can’t speak in depth about the workflow capabilities in WCM, I am simply not qualified to do so but I’ve spent a fair amount of time with working with the workflow engine. In many cases the out of the box workflows served up straight or with a few modifications will work for many of your needs. I tried to do a few things with the JBPM scripting engine like operate on a change set and found I needed to first write some java code. There are times when you need to put a workflow in quickly or patch an existing workflow. The JavaScript capabilities inside the workflow engine should be a godsend here but instead I found it difficult to implement.

Workflow Events: From what I can tell – and I could be wrong here, we’re still missing node level events. What is a node level event? An event is a trigger or set of triggers that are fired on create, update, and delete. Today you can fire a workflow off on a submit action but you cannot do the same when a user inserts a new document, deletes or updates an existing one. I want to kick off workflows based on content hitting the store -- not just when it's been submitted to preview. There are interesting semantics to this issue and it's not a clear cut as it is in the DM side of the house but I'd still like to see a discussion on it.


Web Forms: Web forms are very powerful and my personal thought is that as the product matures they will be one of the star features. Today they have a couple of issues.

  • Web Forms: Web forms are implemented with XFORMS technology – a pending standard. But Web Forms aren’t described using XFORMS technology, they are described based on an XSD. That makes perfect sense – almost. The issue I see is it sidelines a standard for a proprietary approach and while it [the approach] is clever but it’s constraining. In order to make it work you need to follow the rules of the engine so your XML schema is constrained to what the engine will understand.

  • Another point of interest is that the schema/approach model works great for simple models but falls flat on its face for complex forms. Schemas don’t carry enough metadata to render the kind of presentations required by forms of certain orders of complexity.

  • Form generation is slow – even simple forms seem to have visible latency.

Search: Search in 2.1.x is something I’ve heard complaints on but haven’t hit the wall with personally. 2.2.x looks like it is making an attempt to address search capability needs.

Looks like a few issues … sure it’s not perfect but in my opinion, beginning with 2.1.x WCM is a very usable product with capabilities I think will eventually set a new standard in the industry's level of expectation for WCM products.