Alfresco and Plone

[Note (2/27/2008): Alfresco has improved its web content management capabilities quite a bit since I wrote this post. For a more up to date assessment, check out my more recent review of Alfresco that covers version 2.2]

Alfresco Software frequently describes Alfresco as the first open source Enterprise Content Management (ECM) System. To the extent that they are the first well funded open source project to aggressively invade the territory of industry incumbents like Documentum and FileNet, that is true. However, they are not the first open source project with document management capabilities. While there are a couple of other open source CMS that are designed to do document management (Contineo and Xinco), that part of the open source CMS landscape has been dominated by Plone. What follows is a short analysis of the relative positioning of the two projects.

I recently went to training for Alfresco and really like the software. I was amazed by what the team has done in such a short period of time. The Alfresco team had benefit of being able to rapidly “assemble” their application using best of breed open source components. Equally important, the lessons learned at Documentum (the development team is largely composed from Documentum alum. In fact, A lead Alfresco developer was employee of the year at his last year at Documentum) seem to have been applied to the design of Alfresco.

A particularly compelling aspect of Alfresco is the openness of the architecture. Alfresco supports Microsoft’s CIFS (Common Internet File System) protocol that allows you to mount the repository, or a sub-folder of the repository, as a Microsoft Windows Network File Share. Doing so makes it possible for users to unconsciously interact with the CMS by working in their natural ways. Content rules, that are triggered when files are moved in and out of folders, can execute functions like add metadata, start workflow, or send emails behind the scenes. Making the CMS “invisible” like this is a very good way to help ensure adoption. Alfresco also supports WebDAV, is JSR 170 level 1 compliant (level 1 is the watered down, read-only version of the spec which is still useful in integration with other applications), and has a Web Services interface. Support of these standards makes Alfresco very attractive in distributed, heterogeneous architectures which is where I think content management is going. It is a nice departure from the mainstream ECM vision of centralization.

Inside, the application is highly configurable. One interesting feature is the application of the concept of “aspects.” If you are a Java programmer, you probably have heard the buzz of Aspect Oriented Programming (AOP). The general idea is that an “Aspect” is a general set of attributes or capabilities that can be assigned to an object without relying on inheritance through the class hierarchy. For some reason, it was easier for me to get my head around applying aspects to content assets than it was for me to figure out AOP. In Alfresco, there are “aspects” like “versionable” or “categorized.” This concepts allow content types to be very simple and, if they desire, users can add attributes to a single instance of a content asset. Defining content types and aspects, along with almost all configuration is done by editing XML configuration files. I think it was smart not to build a sophisticated configuration user interface at this stage of the project. The people that you want to make these customizations should be comfortable editing XML files.

Based on their experience of most clients wanting very basic workflow, Alfresco’s workflow model is very simplistic. Workflows are designed using folders to represent states and then using rules to add simple approve/reject choices that can trigger other events. This system would be a little awkward for implementing complex workflows that involve splits and merges and syncronization with other approvals. Alfresco plans to add BPEL support will address this in later releases.

As mentioned earlier, versioning has been implemented as an aspect so that any content type may be versioned. One small quirk with versioning is that, when you use the CIFS interface, and you editing the file directly, a new version is created, which creates a full copy of the file on the file system, with every save. This would pose a problem of consuming a lot of disk space if you were editing a large video file and you want to save frequently to prevent data loss.

Alfresco handles all types of file types but support for Microsoft Office and PDF formats is the strongest. Using OpenOffice components, Alfresco is able to extract text for the full text search index (powered by Lucene) and transform into PDF format. The system is architected to be extended with new “transformers” that can handle other conversions. I have already talked to clients that would want to extend Alfresco in this way.

So, is Alfresco the perfect open source ECM? Not quite. At least not yet. First of all, Alfresco is not all open source. Features like group based access control and clustering are actually “Shared Source” and require monthly subsription fees to use. Without these features, it would be difficult to roll Alfresco out to a large group of users. So you could say that the “E” part of the “ECM” is not open source. The second issue is that, at this point, Alfresco does not handle web content, another critical part of the classic ECM definition. This was intentional. The Alfresco team wanted to start with a solid foundation and then grow into other aspects of content management. The demand for affordable document management solutions, and the scarcity of open source projects that do it, make this a wise choice. I actually don’t mind the absence of WCM functionality. CMS that try to do too much are often difficult to use and it would be better to get it right than throw it in sloppily. Alfresco says it is going to add WCM later and that team that they have assembled to do it understands WCM. I hope, from their experience at Documentum, they learned the lesson that WCM is not just a matter of managing another type of files.

So how does Alfresco stack up to Plone? There is a large degree of functional overlap between Plone and Alfresco. They both have the functionality necessary for groups of users to manage and share documents: access control, search, metadata, etc. Plone also supports WebDAV and has a mechanism where files automatically updated on the server when edited with a client application such as Microsoft Word. But it does not support CIFS. Alfresco has the advantage of a content rules framework which Plone is missing because of its lack of an event model. Alfresco has a better content versioning system. The many companies who have standardized on Java will feel more comfortable working with a Java solution (although their standard application servers may not run Java 1.5, which is required by Alfresco – WebSphere does not). Also, Alfresco, with its open architecture, has more options for integration than Zope based applications.

There are several areas where Plone has a significant edge. The most notable of which is handling web content. Plone is an effective and eleg
ant hybrid of a document management system and a web content management system. Plone’s workflow model is more robust than Alfresco’s. The other significant advantage that Plone has is its maturity which has lead to a broad install base, excellent documentation (including several professionally published books), and an extensive library of add-on extensions which provide capabilities ranging from a blog to eCommerce.

Based on all this, I think both applications have their uses. I would use Alfresco for a targeted document management solution that would fit into a larger enterprise content management architecture – perhaps as a node, or collection of nodes, in a deployment like the one described in this presentation which Travis Wissinks gave at the KMWorld & Intranets conference last month. I would use Plone to build an all-in-one intranet or extranet where I wanted to mix article, page, and file content and opportunistically deploy new features to improve collaboration and retention. I would also use Plone as a department-level knowledge management system because of features like threaded discussions around content assets, event calendar, and native RSS support.

  • Paul Everitt

    Wonderful article, Seth, thanks for taking the extra time to give us an evaluation. I’ll pass this around to others.

  • Boris Kraft

    Good writeup – I spoke to the Optaros team in Zürich yesterday about the offerings the Magnolia Enterprise Content Suite has in that respect. We do have a (commercial) DMS and a strong WCM. We don’t have big venture to burn and little media visibility, but we do have a lot of fortune 500 companies using Magnolia. And its java.

  • Jean Rene VIDAUD

    Very nice article Mr. Gottlieb. Your vision of Plone is completly right. We, at Ingeniweb in France, have many fortune 500 companies using this CMS. The latest and maybe the greatest is L’OREAL which uses Plone for many purposes : Large document management system (about 100.000 multimedia documents), Intranet collaborative portal, content managment, groupware, aso. Of course, what is fundamental for such big companies, is the reliability, the robustness and the incredible power of Plone when correctly tuned, developed and installed. In France, even the Gendarmerie Nationale (French Police) uses Plone for its Extranet to communicate with more than 40000 Gendarmes and the choice of Plone has been renewed recently and last for already 3 years. Thanks to all others Plone developers and to the Plone Foundation for such a nice and completly Open Source CMS tool.

  • sf

    Thanks Seth for spending time clarifying some points that are obviously wrongfully claimed by the Alfreso PR team. Alfresco can’t be “Open Source ECM” (and even less “The leader in Open Source ECM”) since:

    1. It lacks ECM features like a decent workflow.

    2. Some important parts of Alfresco, that differenciate a CMS (like Plone) from an ECMS (like CPS) are not open source.

    We did our homework last week with two blog entries, one providing a “scientific” assessment of who the most popular open source ECM is, this other one explaining more in depth why we feel that CPS is the right choice when it comes to “true” open source ECM.

  • Lars Plougmann

    Thank you for relaying your thoughts on two interesting products in the CM space.
    Instead of choosing between alfresco and plone would you see any potential for the two solutions complementing each other, e.g. using plone for an extranet application with content objects stored and versioned in alfresco’s repository? Or plone as the “missing” WCM front end for alfresco?

  • Seth

    To Lars’ question about having both Plone and Alfresco…

    I would not expect that Plone and Alfresco would be a good match for integration. Plone is built on the the Zope platform (Python) and Alfresco is Java. While these two technologies do have a common interface (WebDAV), I would recommed sticking with either Java or Python if for no other reason than managing the skillset of your IT organization.

    There are two ways that I could see front ending Alfresco with a WCM: store XML files in Alfresco and use a WCM type presentation engine (such as Cocoon) do dynamic display; or have the WCM system manage structured web content and have references to Alfresco for significant binary content (for example: white papers). You could also have Alfresco push the binary content into the WCM at the end of the workflow. In the latter way, Alfresco and Plone could be used in concert. However, it may be better to standardize on one technology for maintenance purposes. If you want to use Plone, Zope has some excellent document management capabilities too.

  • Anonymous

    About CIFS support in Plone, EnfoldSystems offers a Plone based product wich has a very good integration with Windows CIFS.

    Even how, poeple are used do qualify Plone as a CMS, but i think it has most of qualities of a ECM system, which make it very usuful for this task. By this way, a single search in google with: plone cms, can return more than twice results than Alfresco and CPS.

  • Anonymous

    Java != Alfresco.

    Most of the software the company I work for is based on Java. Still I do not agree that’s a reason to prefer Alfresco to Plone. In fact we chose Plone for many compelling reasons:
    – We don’t intend to extend or adapt Plone or Alfresco, just use it.
    – Even if we had any reason to extend it, Plone Archetypes tools makes it much more easy to the point that we can do it with graphical UML tools and some snippets of Python code.
    – Plone is extremnly easy to install and maint, even in its clustered version.
    – The underlying Zope platform on wich Plone runs is a master piece of act. To say the true I hace copied many of its designs patterns in my java software.

  • Seth

    Good point. I guess it would be relevant to say here that Bruce Eckel’s website runs on Zope. Bruce’s “Thinking in Java” is one of the best and most popular books on the Java programming language.

  • Alexander Limi

    Also note that the upcoming Plone 3.0 has the plone.contentrules infrastructure (although that was not decided at the time you wrote this post :)

  • gfb1

    I am not really familiar with Alfresco yet, but I think that versioning is still badly missing in Plone… This can be a discriminating factor in choosing an ECM solution for compliance. Versioning is a major requirement to implement an iso 9000 system (not to speak about Configuration Management).

  • Alexander Limi

    For the record, Plone added versioning in the 3.0 release, which came out in Aug 2007.