If you’ve been working with Alfresco for a while you know that there are actually two repository implementations in the product. The original repository implementation is usually called “the repository” or sometimes “the DM repository”. The other repository implementation is called “AVM” which stands for Alternative Versioning Model. It was created to support a Web Content Management solution that included features such as web author sandboxes, a virtualization server, XForms, XSLT transformations, and a repository-to-file system deployment service.
Unfortunately, the “two repositories” issue caused confusion and frustration amongst customers, implementers, and engineers. When deciding how to use Alfresco you were forced to make a choice between using one repository or the other and the functionality between the two differed. The conflicting repositories were also a pain to maintain from an engineering perspective. When the original creators of the AVM left Alfresco a couple of years ago, so too went the passion for maintaining that part of the product. Combined with shifting market dynamics in the WCM space, the AVM repository subsequently languished, and never achieved its full potential.
Alfresco has since added web content features and functionality to the platform that do not require the AVM repository. The transfer and replication service can now be used to move repository content to the file system. The form service makes it easy to configure forms for non-technical users. And the Content Management Interoperability Services (CMIS) API makes it easy to perform CRUD functions against content in the repository using any front-end portal, presentation framework, or programming language that makes sense for a given solution. Drupal is a common choice for this, and is something we use for several sites at Alfresco. Liferay is another popular choice. And for web applications based on Spring, Alfresco provides a sample web application called Web Quick Start that can be used as-is or modified for an end-to-end Web Content Management solution.
The time and attention the AVM demands of the support team and engineering team has become too much–simply put, the cost to maintain and support AVM outweigh the revenue it generates. Therefore, we are announcing that we are no longer selling support subscriptions for AVM to new customers. If you are using AVM today and you are a paying customer, you will be supported on Alfresco Enterprise 4 and earlier versions until the version you are on reaches its end-of-life. We will not be supporting AVM at all in Alfresco 5.
How this Change Affects the Community
We realize there are people in the community using AVM. Obviously, you are free to continue doing so. But you should not expect any AVM-related fixes or updates to be added to the Community code line by the Engineering team going forward. And, when Community versions of Alfresco 5 begin shipping, you should not expect the AVM repository implementation to be included in the core.
A large percentage of our Enterprise customers use Community before purchasing a support subscription. We do not want new Community users to be confused by the availability of the AVM download. It might mistakenly give the impression that Alfresco will provide commercial support for the AVM if they use it in Community and then upgrade to Enterprise. Therefore, effective immediately, we are disabling the AVM download from the Community download page.
Technical members of the community will be quick to point out that the AVM software is tightly coupled with the rest of the platform. When you download the AVM from the Community download page you are actually only downloading an XML configuration file that “enables” the AVM functionality already present in the core. Over time, we will be removing the AVM-related code from the core, so by Alfresco 5, it is highly likely that the platform will not contain any AVM-related code.
There may be developers in the community who are interested in maintaining the AVM code as an ongoing project. This would involve separating out the AVM-related code from the rest of the platform and then packaging it as an add-on. This would be a big task, but if there are developers passionate enough to own this project and move it forward, we would be happy to work with you to make that happen. Please contact me directly if you want to take this on.
I hope this has shed some light on the thinking behind our decision to no longer support AVM for new customers and has given you a rough timeframe for when the AVM will be sunset completely. If you have any questions or thoughts on this, please feel free to add your comments below.