Category: Content Management

Enterprise Content Management (ECM), Web Content Management (WCM), Document Management (DM). Whatever you call it this category covers market happenings and lessons learned.

Is Alfresco the “near beer” of open source?

I grew up in Oklahoma. For my international readers (I have quite a few), Oklahoma is in the central US, is quite beautiful, and is often called the “belt buckle” of the “bible belt”. This last characteristic gives way to some quite asinine laws, one of which is that beer sold in Oklahoma grocery stores must no more than 3.2% alcohol. As a kid I remember people ridiculing Oklahoma’s “near beer” to my father who would inevitably retort, “The 3.2 restriction is by weight while liquor stores measure by volume so it’s not a big deal.” I know–it always sounded lame to me too, but he’s a mathematician. (For details on the math, look here).

One of the criticisms of Alfresco by hardcore open source types is that it isn’t really open source. Like my home state’s beer, it’s almost open source. What does this mean? Certainly, the reasons I cited as to why clients choose open source (fit, standards, source code, transparency) hold true for Alfresco (See this post). But there’s a characteristic of “true” open source projects that’s missing for Alfresco that may not be as high on clients’ care-abouts, but is important to those of us in the community and that is this: In the current Alfresco model, none of us can ever be a committer. Yes, you can contribute patches and enhancements by opening a Jira ticket, but you’ve got to be an employee to be able to write to the SVN repository.

In the early days of Alfresco, this was more defensible than it is now–the code lines were the same, the product was still maturing, and, most importantly, Alfresco needed to protect its interests. Alfresco didn’t necessarily have time to let the community take the product wherever it wanted to. Instead, it needed to establish a critical mass, get things pointed in the right direction, and get some maintenance subscriptions flowing. Unlike other open source projects that start altruistically, Alfresco was a commercial enterprise from the start and there’s nothing at all wrong with that.

But now things have changed. There have been over 1 million downloads. There are tens of thousands of registered members of the community. The Community and Enterprise code lines have been separated. Why not give up some of the control of the Community edition to the, uh, community? Alfresco is still a small company with limited resources. Couldn’t a fraction of those thousands of registered developers be enlisted to help?

Alfresco often compares its model to that of Fedora/RHEL and JBoss.org/JBoss.com which is a good way to illustrate the difference between Community and Enterprise from a development build versus enterprise-ready build perspective. But what about the development model? For those not familiar, the JBoss Development Process is roughly that all code starts in JBoss.org where it is available to early adopters. When it starts to look viable, it is pulled into JBoss.com, where it is scrubbed (maybe even recoded), integrated with the rest of the platform, tested, and productized. The key difference is that JBoss.org contributions include not just JBoss employees but others in the community who’ve earned the right to do so. Why can’t Alfresco work this way?

I imagine the answer comes down to resources and control. I concede that having the same engineers contributing to Community that must then pull the features forward into Enterprise is very efficient. Especially In the beginning, I could see how Alfresco engineers might have to spend more time integrating Community code with Enterprise code than they would have under the closed community policy. Surely that would improve over time, though.

Regarding control, I can understand that a commercial software company would feel inclined to tightly control the project’s growth and that an open community would be seen as a threat to that. But if the community takes the product down a substantially different path than the planned roadmap, wouldn’t that tell you something? And this wouldn’t be completely giving up control–Alfresco product management and Marketing would still be responsible for understanding what clients want, setting the road map, and owning the overall vision.

Maybe this is something we can get John and others to talk about next week in San Jose. Over a beer.

Know the way to San Jose?

I’ll be at the Alfresco Community Conference in San Jose next week. I’ll speak for a bit on the Endeca solution at the BarCamp the night before. The day of the conference I’ll be moderating the web scripts discussion. If you’re attending as well be sure to say hello.

Speaking of web scripts, hopefully you are busy hacking together an entry for Alfresco’s Web Scripts Developer Challenge. I’m one of the judges so if you stick a link to ecmarchitect.com somewhere in your code maybe I’ll give you bonus points.

Two worlds collide in Boston

Okay, so maybe it wasn’t so much a collision as it was a harmless grazing. Even though there wasn’t a lot of crossover between the two, I’d still like to offer, as Mel Brooks put it, a “firm embrace” to whomever had the bright idea to co-locate DrupalCon with AIIM this week in Boston because I think (I hope) it gave the old guard of ECM some exposure to and appreciation for the wave of innovation taking place in the space.

Unfortunately, I don’t think there was as much crossover from the AIIM attendee side as there was from the Drupal side. There were a few curious DrupalCon’ers that ventured in to the AIIM exhibition hall. One person shouted out, “Hell yeah, Open Source!” as she walked by the Alfresco/Optaros booth, giving me a sort of “fight the power” gesture as she passed (at least that’s how I interpreted the gesture). Others stopped to chat at our little oasis of open source in the closed source desert. The serious under-representation of open source at the AIIM conference was a major topic of conversation.

I doubt we’ll ever see full integration between the two conferences–90% of the DrupalCon attendees were technical developers and integrators while AIIM attendees are mostly IT and business people evaluating or looking to purchase ECM solutions.

Another big difference is scope. AIIM, as an organization and as a conference, has gotten way too broad, at least for my own interests. A scanner that knows how to open sealed envelopes before imaging the contents is really cool, it’s just not a typical component of the solutions I implement.

Forgive the tangent, but this problem goes beyond AIIM to “ECM” itself. As Alan Pelz-Sharpe of CMSWatch pointed out in one of his sessions (the CMSWatch sessions were far and away the best sessions), almost everything under the sun calls itself “ECM” from source code control to imaging to records management in addition to my focus areas, WCM, Portal, Search, Collaboration, and Document Management. Indeed, the term was invented, largely by vendors, as a way to group all of those types of solutions together in an attempt to convince buyers that having one vendor that could do all of those things is better than buying from individual niche vendors.

I don’t deny a need for an association or a conference that can help people solve problems in these areas but how much overlap can there really be between people interested in microfiche and those looking to implement Web 2.0? One of our clients in the media industry stopped by the booth and asked me, “Are you sure this is the biggest content management conference of the year?”. He was having trouble finding the relevant content management information lost in the noise of vendors hawking copiers, scanners, and printers.

Anyway, back to the “two worlds” topic, the idealist in me hopes a sort of ping pong diplomacy took place. Perhaps the DrupalCon attendees were the New York Philharmonic to AIIM’s North Korea. Maybe a few of the suits learned something from the insightful questions being asked by the messenger bag crowd. Rather than be annoyed, I was actually encouraged by the legacy ECM vendor who came to our booth and grilled me on Alfresco and how it compared to their product. I tried to get her to renounce her faith right then and there but she was tough.

AIIM could do more to encourage that kind of cultural exchange and maybe even foster the innovation that old school ECM so sorely lacks. It sounds like the Rocky Mountain Chapter is planning on offering some open source topics soon. That’s great and I hope to see that happen in other chapters. And while we’re at it, maybe AIIM could offer free floor space to non-commercial open source projects. Just a thought.

At the very least, I hope the physical presence of 800 – 900 people passionate about open source content management was a jarring reality check to AIIM, legacy ECM vendors, and the larger community.

On a tactical note, a nice side-benefit of the co-located conferences was that the Optaros folks attending DrupalCon were able to put in some booth time on the AIIM show floor. If you want to read more about some of the DrupalCon sessions, check out John Eckman’s blog.

Alfresco 2.9 Community highlights

I’ve finally been able to carve out some time to play with some of the new stuff in 2.9 Community. One of the most hyped features in 2.9 is Facebook integration. I covered that by creating a screencast last month. Today I take a brief look at Dynamic Content Models, XForms in the non-WCM interface (“ECM Forms”), blog integration, project spaces, and category-based navigation. I’ll dig into Google Gadgets, MS Office integration (including tagging), and other 2.9 features in a future post.

Dynamic content model/web client configuration

One of the painful things about making changes to the model, from an “Enterprise” perspective” has been that it requires a restart. For a production repository serving hundreds or thousands of users this could be a real problem. In 2.9 Community, you can store content model XML, message bundles, and web-client-config-custom.xml in the repository and then dynamically reload them without leaving the web client. This also includes the ability to deploy workflow content models.

You don’t have to do anything special to your existing extension files to get this to work. Just drop them in the appropriate Models, Messages, or Web Client Extension folder in the Data Dictionary and use the new Repo Admin Console or Web Client Config Console to reload.

On a related note, you can now deploy process definitions from within the repository as well by placing them in the “Workflow Definitions” folder in the Data Dictionary and then using the Workflow Console to deploy.

For more information, see the Dynamic Content Models page on the wiki.

XForms in the non-WCM interface (aka “ECM Forms”)

When web forms first made their appearance as part of the WCM release, people asked, “Can I use web forms outside of the context of a web project?”. Now you can. There is a new folder in the Data Dictionary called “Forms”. Navigate to the folder, click Create Form, upload your XSD, and you’re all set. To create content with the form, select the form from a list of available forms when creating content. Just like WCM web forms, the embedded XForms implementation, Chiba, inspects the XSD, provides a form to capture the content, and saves the data as XML.

In my build, the creation worked fine but editing the saved data did not. I’ll do some more digging on this and file a bug report if it is a problem. (UPDATE: Someone already entered a Jira issue on this).
It is curious why Alfresco chose to split out “Web Forms” from “ECM Forms” when they are conceptually and technically the same thing. In fact, the inability to associate a presentation template (XSLT, or Freemarker) with an ECM Form is frustrating. I suspect, but haven’t confirmed, that web form data transformation is embedded in the web client layer instead of in the service layer making it hard to reuse in other parts of the app. Unless this is addressed, you’ll have to rig up your own transformations using rule actions or some other alternative to transform form data from XML into some other format.

I tested the ECM Form functionality with an existing WCM web form and it worked fine (except for the update issue I mentioned). Note, however, that the File Picker is not supported in ECM Forms. (Again, in my mind the two ought to be functionality equivalent so hopefully Alfresco will close this gap shortly).

For more information, see the Forms Developer Guide on the wiki.

Blog integration

The blog integration module adds the ability to post HTML and text content from the Alfresco repository to a Typepad or WordPress blog. Because this is implemented using aspects, you can add this capability to any space in your repository. Or, you can use it from the “My Blog Posts” space in a Project Space (more on that shortly).

Installing the blog integration module adds the Java code that implements the actions for adding, deleting, and updating blog posts as well as a content model with two aspects: Blog Details and Blog Post. The Blog Details aspect gets added to any space from which you want to post content. It tracks information such as the type of blog, URL for the blog, blog user name, and blog password (stored and displayed in the clear!). The Blog Post aspect gets added to individual pieces of content. Alfresco updates this metadata with information about the post such as the blog post id, the URL to the post, and post/modified dates.

For more information, see the Blog Publishing User Guide on the wiki.

Project space

You’ll notice a new node under Company Home called “Projects”. A Project is a space (folder) with a set of collaborative tools including Blog Posts, Calendar, Document Library, Email Archive, Forums, and an Image Gallery.

When you open a space a project dashboard, of sorts, is displayed as well as an online presence dashlet. The project dashboard gives each of the collaboration tools a chance to report status such as the number of new documents added in the last X days or the calendar events for the week, etc.

The presence dashlet shows the online status (Skype or Yahoo) of the people that have been invited into the space (either individually or as a group). Incidentally, the messaging ID of a particular Alfresco user is just one of several new pieces of user metadata added with 2.9.

Let’s take a quick look at the collaborative tools that are included by default in a project space.

The Blog Posts tool uses the blog integration module already described to push content to a blog. The Blog Posts space adds a custom view that shows articles that have yet to be published and articles that have been updated since they were originally published.

The Calendar tool gives you a monthly, weekly, or daily view of events. The events are created and stored (as calendarEvent objects) in the repository. You can also subscribe to other project calendars within the repository which enables you to see events from more than one calendar at once. (This functionality was contributed by a partner, which is cool, but there’s more work to do integrating the UI into the existing web client style).

Document Library is just a normal space with a custom view for seeing recent changes.

Email Archive takes advantage of the new functionality that makes it possible to assign an email alias to any object in the repository. There really isn’t a difference between the Document Library and the Email Archive–you could email content to either space. The Email Archive just gives you a convenient container for all inbound emails related to a project.

The Forums tool is the same forum space that has been around a while. It gives you the ability to have multiple forums for threaded discussions related to your project.

The Image Gallery, not surprisingly, is a space for images. The interesting feature is the folder’s custom view. It’s a photo album with turnable pages. Any images added to the Image Gallery space automatically appear in the photo album. More form than function, the widget is an example of how you can use Alfresco’s new Flex SDK to add rich interfaces to the data in your repository.

A Project Space is really just a Space Template so removing or adding tools to the Project Space is just a matter of copying and modifying the New Project space template in the Data Dictionary.

For more information see the Project Spaces page on the wiki.

Category-based Navigation

Unfortunately, a problem with the category picker prevented me from fully testing this but if you click on the “Navigator” link in the sidebar you’ll see a new entry called “Categories”. If you click it, you’ll get a tree view of the categories currently configured in the repository. Clicking on each category should show content categorized to that category, essentially giving you the capability to treat the category hierarchy like a set of folders.

Try it on your own

I’d definitely encourage you to download and try out the Community Edition for yourself. I don’t recommend you run production solutions on Community, but it is a good way to try functionality that may make its way into the Enterprise release.

Acquia to provide vertical solutions, commercial support

In this CMSWire interview with Drupal founder Dries Buytaert we get a glimpse at what Dries’ new company, Acquia, is all about.

Acquia will provide added value to Drupal users by reducing risk and saving them time. Users who are cautious about deploying Drupal will have the option to purchase a commercial subscription from Acquia to help them maintain and monitor their Drupal website.

Dries goes on to say that Acquia will provide solutions built on top of Drupal, but the specific vertical (Media & Publishing, Education) and/or horizontal (Corporate Intranets) is still being finalized.

Alfresco-Facebook integration screencast

Towards the end of the year there was a lot of coverage of Alfresco‘s announced Facebook integration, but if you weren’t at either of the user conferences, and if you didn’t get a chance to download, build, and install the Community Edition with the Facebook integration module, you may be wondering what it looks like. I put together a short (5 min) screencast to give you an idea. The screencast shows a new document library getting created in facebook followed by a document getting uploaded to the library. I then switch over to the Alfresco web client to show you how the files get stored in the Alfresco repository.

The screencast is on YouTube.

This is the first time I’ve put together a screencast. You have to kind of unfocus your eyes if you actually want to read what’s typed on the screen and there are a few places where my headset mic was too close to my mouth, but I don’t think either of those problems keeps you from getting the idea of how the Alfresco-Facebook integration works.

I used rev 1330 of Community 2.9 from Head. It may or may not have changed since then. If you want some of the configuration details, check out the Facebook page on the Alfresco wiki.

AIIM & Drupalcon in Boston 3/3 – 3/6

I’ll be at AIIM again this year in Boston March 3rd through 6th. It’s always a huge and diverse conference. If it has anything to do with content, it will be in Boston. You’ve got the imaging guys with their giant scanners, copiers, and printers, you’ve got the obscenely large booths from some of the closed source ECM folks, and you’ve got the more modest (but much more interesting!) booths from the open source contingent (Alfresco and Optaros will be in the same booth this year).

This year I was happy to learn that Drupalcon is going on at the same time and place as the AIIM conference so we’ll see a much-needed injection of people who care about open source content management at the event.