Jul 31

Maybe it’s more social 2.0, maybe it’s more open source but on the other hand we the “big brother” threat is still there.
Anyways, for the record I moved the m2alfresco Alfresco Forge project to a better and safer place on Google Code, under the new fancy name of maven-alfresco-archetypes.

We’ve a Subversion repository, a Sourcesense hosted Maven2 repository, a mailing list (maven-alfresco nospam at nospam googlegroups.com) and a partner maintaned page on the Alfresco wiki.

Let’s assist and take part to the community miracle ;)

I’ll see you there…

Jul 11

After struggling a bit too much with the maven-release-plugin under Apache Maven 2.0.9 and hierachical projects, I was finally able to release full support for Maven based Alfresco ECM lifecycle.

As I was mentioning in previous post, despite being one of the best piece of software I’ve worked on, Alfresco still lacks a lot in Enterprise ready delivery of its customizations, providing solutions based on Ant and custom tools like the Alfresco Module Management Tool which does not really fit in environments where control over versions, complex interdependent grids of applications are deployed on top of Alfresco, or simply when you not willing to perfom the (typically open source related) web googling-crawling to make that damn thing work.

In this sense I developed, based on successful internal Sourcesense and end customers implementations, a full support for Maven based Alfresco customizations. It’s documented in the Alfresco wiki, but basically comprise:

  • A maven-alfresco-extension-archetype which allows creation of a custom build of Alfresco community/enterprise,  basically producing a WAR as main build artifact, storing all customization in the alfresco/extension folder (Convention Over Configuration). All dependent AMPs (yes, we support AMP dependencies ;) ) are included in the WAR. Typical usage scenario is the main Enterprise Alfresco build which includes base configuration settings (e.g. db, alf_data, custom model) then can include many satellite modules (AMPs produced by the maven-alfresco-amp-archetype)
  • A maven-alfresco-amp-archetype which allows creation of an Alfresco compatible custom AMP (Alfresco Module Package) .  basically producing a .amp  as main build artifact. The produced AMP is configured in the alfresco/modules/{pom.groupId}.{pom.artifactId} without requiring manual developer synchronization between module name and POM properties.
  • A maven-amp-plugin providing support for .amp files lifecycle, handling archiving, unarchiving, dependencies, install and deployment on enteprise repos

Cool features which you may find handy as a developer are

  • One commad creation of archetype from remote Sourcesense repositories (only maven 2.0.9 installed is required)
  • maven-jetty-plugin embedded run for integration testing,
  • environment dependent and single sourcing of application properties,
  • jboss/tomcat local/remote deployment with Cargo
  • Easy integration with other opensource frameworks due to wide Maven support

while as an enterprise release manager you could appreciate

Hopefully it can really gear contributions on Alfresco and grow it to the open source mature development process we try to deliver every day: and be careful, this is not only a Sourcesense marketing ad, but an approach already proof to be a development booster  on my project on a day by day basis since almost a year. And considering Alfresco 3.0 will be fairly modular, I think Maven has a point.

Give it a spin and let me know…

Issues are always welcome ;)

May 06

Since almost one year I’m involved in Alfresco ECM huge architectures design, and considering my expertise in open source communities, I’m now at the level of being able to give a clear statement on which are the aspects (not in the Alfresco meaning ;) in which this GREAT product still lacks, especially in terms of open source maturity and scalable community / enterprise application lifecycle support.

My past experiences with open source communities and frameworks like Apache Cocoon , recently released 2.2 version with features like complete springification but most important (to me) the full m10n (mavenization, from Apache Maven), taught me that even the most genius idea, the best architectural pattern or the killer app, will NOT have the desired penetration and adoption (and expected ROI, if you think about enterprise backed open source) if not properly backed by a solid foundation which can (at least) provide the following high level features (among many others which I consider as derivatives):

  • Easy inter-component and intra-component reuse gearing best practices
  • Centralized and standardized component management and definition
  • Fast project startup and (fast if not “hot”) develop-test-commit cycle

Continue reading »