On almost every topic
Alfresco Is Being Refactored

Last week I attended the Alfresco Developer Conference in Paris and one of the things I realized during the conference was how many core parts of Alfresco are currently being refactored.

Persistency Layer
One major change is that they replaced the Hibernate persistency layer with iBATIS. This layer is responsible for writing objects to the database, performing database queries and reading objects from the database. Some parts of Alfresco already used iBATIS, but starting with version 3.4 Hibernate is completely removed in favor of iBATIS. According to Alfresco the new persisteny layer provides more control resulting in an improved performance, scalability and stability.

Domain Model
They also moved the code for the domain model from the repository project to a separate project in the code repository. The new project is called data-model. The main reason for this is to prepare the replacement of Lucene with Solr, an enterprise search platform based on Lucene. Solr provides a better separation of concerns and has a lot of features that are not available in Lucene. Solr provides features like clustering and replication, hit highlighting and faceted search. I expect the integration of Solr to be a major improvement. As far as I know it is not yet on the road map, so it is unclear when it will be released. I expect Alfresco to use a more loosely coupled approach here. In the future this might even make it possible to configure Alfresco to use a different search engine.

Workflow
Although starting with version 3.4 Alfresco Share supports the advanced worklfow capabilities based on the current workflow engine, this is likely to change in the near future. A team of Alfresco developers is currently developing a complete new BPM and workflow system called Activiti. The presentations at the conference looked very promising. Activiti is based on the general purpose process language BPMN 2.0 and attempts to bring together developers and business people. It fits into any Java based application, but also provides web based clients to directly support end users.

Web Content Management
Another big project is the replacement of the WCM (Web Content Management) module. Currently WCM support is only available in the Alfresco Explorer interface and under the hood it uses a repository implementation that is not compatible with the regular content repository. A couple of sessions at the conference discussed new core services that will be used by a new WCM module that is currently under development. These include the Transfer Service and the Rendition Service, but there are also major changes in the Action Service.

Web Quick Start
To demonstrate the new capabilities, the Alfresco team created a Web Quick Start application that you can use to create a dynamic web site with Alfresco Share as content management backend. I was suprised by the amount of features they put into the application. It is highly configurable and includes a reusable domain model, support for content renditions, deployments to test and live servers and even content caching. The frontend is build using Spring Surf, CMIS and Web Scripts.

At the same time the quick start application reveales how much there is to be done. It is currently not possible to deploy static content to a web server, there is no support for custom content types or XML content editing, there is no such thing as a Web Project or Web Project Site and there is no overall lifcycle in place to create, approve, publish, expire and monitor web content.

Alfresco Share
Of course Alfresco Share itself is also an ongoing project with a major impact. With every release new features are added to improve the collaboration capabilities and to provide general content management features currently only available in Alfresco Explorer. It will take a while before Alfresco Share completely replaces Alfresco Explorer, but today Share provides a serious alternative to Microsoft Sharepoint. Alfresco is also constantly improving the configuration options for Alfresco Share to make it more simple to tailor the system to customer needs.

Although Share is a major improvement for end users compared to Alfresco Explorer, I am still not fully convinced that Alfresco made the right decision to build a client using the Yahoo User Interface (YUI). For developers the learning curve is very steep and I am not sure if the library is future proof. I guess if someday Alfresco wanted to move to a newer version of YUI, they have to rebuild most of the client interface since for version 3 the developers at Yahoo decided to completely rebuild the library.

  1. bpeters posted this