Category: Alfresco

Alfresco open source content management

Trouble with Alfresco? Console yourself

Everyone who has spent more than 10 minutes with Alfresco is familiar with Alfresco’s Admin Console. The node browser is an invaluable tool for troubleshooting, but it is conspicuously located as a link on the Admin Console. There are a few other consoles that you can use to help troubleshoot or manage the repository, but you have to know where to look.

What: Workflow Console
Where: http://localhost:8080/alfresco/faces/jsp/admin/workflow-console.jsp
Use: Deploy, un-deploy, and delete workflows. Inspect workflow metadata. Complete a task that’s become stuck for some reason.

What: AVM Console
Where: http://localhost:8080/alfresco/faces/jsp/admin/avm-console.jsp
Use: List stores, create stores, delete stores, create directories and branches, create snapshots, create new nodes. Basically your one-stop shop for working with the AVM Store. If one model is ever chosen over the other, it is likely to be the AVM Store, so this is tool will become even more useful in the future.

2.9 Community adds a couple of new consoles…

What: Repository Admin Console
Where: http://localhost:8080/alfresco/faces/jsp/admin/repoadmin-console.jsp
Use: Deploy, activate, and de-activate content models. If you are using dynamic data models, you’ll need this. See http://wiki.alfresco.com/wiki/Dynamic_Models for more details.

What: Web Client Config Console
Where: http://localhost:8080/alfresco/faces/jsp/admin/webclientconfig-console.jsp
Use: Reload the web client configuration. Handy when placing web-client-config-custom.xml in the repository rather on the file system. See http://wiki.alfresco.com/wiki/Dynamic_Models for more details.

Consoles are certainly helpful, but log files and debuggers are also essential. Tweak log4j.properties by setting various loggers to “debug” depending on where it is you are having trouble. The log4j.properties file resides in <ALFRESCO WEB ROOT>/WEB-INF/classes. For JavaScript specifically, there’s a Rhino JavaScript Debugger you can enable, but I haven’t found much use for it. In any case, to turn it on, in log4j.properties, change this logger to “on”:

log4j.logger.org.alfresco.repo.jscript.AlfrescoRhinoScriptDebugger=off

Last, connecting the Eclipse debugger to your running instance of Tomcat is often very helpful. It allows you to step through Alfresco source code to your heart’s content. (Try that with Sharepoint!) There are a few ways to do this, but the way I do it is:

  1. Set an environment variable called JPDA_ADDRESS to 8000 and one called JPDA_TRANSPORT to dt_socket.
  2. Change the last line of Tomcat’s startup.sh to look like: exec “$PRGDIR”/”$EXECUTABLE” jpda start “$@”
  3. Create and start a new Remote Java Application configuration in the Eclipse Debug dialog.
  4. Set some breakpoints, hit the web client with a web browser and get to stepping.

With the help of the consoles, the logs, and the source, you’ll be successfully hacking Alfresco in no time.

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.

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.

Alfresco recognizes ecmarchitect.com’s Alfresco Developer Series

I’m very pleased to announce to ecmarchitect.com readers that Alfresco has chosen me as their Community Contributor of the Month for December, 2007. This is primarily in recognition of the Alfresco Developer Series articles I’ve posted this year which are aimed at bringing new developers up-to-speed on the platform.

I’m extremely flattered that Alfresco chose me to be the first recipient as part of this program. I think it highlights the fact that in the open source community, there are numerous ways you can get involved that can add value, whether that’s by writing code, helping test a new release, contributing a project to the forge, or writing documentation.

I’m also fortunate that Optaros encourages and expects employees to get involved in the open source community–it’s one of the many reasons I joined the company.

Last, thanks to everyone at Alfresco (John Newton, Matt Asay, Paul Holmes-Higgin, Kevin Cochrane, Luis Sala) and Optaros (Marc Osofsky, Dave Gynn, John Eckman, Brian Doyal) for encouraging, reviewing and promoting the articles.

And a special thanks to those of you that have read the articles and left comments or approached me at conferences over the past year. Knowing you are getting value out of this stuff makes it worthwhile.

Okay, cue the music and cut my mike. I’m off to the after party.

Notes from the Gilbane conference on content management and collaboration

The Gilbane Conference on Content Management and Collaboration wrapped up last week in Boston. This was my first Gilbane conference. The most notable thing about the conference is that all of the sessions are made up of panelists participating in a moderated discussion rather than single speaker, death-by-powerpoint sessions. I found the format refreshing initially, but quickly discovered the downside which is that the panels can easily get way off-topic.

Some rough notes from the conference appear below…

Collaboration Case Studies: Pfizer

  • Pfizer implemented MediaWiki, initially to use as a knowledgebase.
  • Known as Pfizerpedia, the site gets 12,000 unique visitors per month.
  • Key adoption factors were: Seeding the wiki with content, promoting early adoption through key champions, taking advantage of pent-up demand, holding the hands of the users as they learned to use the technology, providing guidelines for acceptable use, integrating the wiki with other content stores (team spaces and formal document management), tracking and reporting on usage and impact
  • Pfizer found that because they lack enterprise search, their wiki evolved into a user-maintained index of sorts. I found it odd that an organization that is so knowledge-centric would lack enterprise search.

Collaboration Case Studies: Mitre

  • This was a great example of Enterprise 2.0 in the real world.
  • Components of their solution: Portal (Oracle), Team spaces (Sharepoint), Search and Expertise Location (Google Search Appliance), Social Bookmarking (Scuttle). If they have wikis or blogs I missed what they are specifically using.
  • Their “Phonebook” app was really compelling. Beyond just being a corporate directory with contact and org info, it allowed users to see what communities everyone belonged to, documents they’ve published, projects they are assigned to, things they’ve bookmarked, and whether or not they are online.

Look at http://www.wikipatterns.com for patterns and anti-patterns around wiki implementations.

According to McKinsey, 40% of the work done in western organizations is Tacit which includes decision making, collaboration, and knowledge management. This is where the focus of IT investments should be.

Mash-ups

Kapow showed a demo of their mash-up maker tool. The simple example was that of being in a spreadsheet and needing to retrieve the stock price for a given symbol. Their point was that not all web sites have an API but with their point-and-click tool you can create REST-based services on top of any web page. In their example, they fired up Kapow, opened the quote.com website within the tool and highlighted the stock symbol field to define it as one of the service’s parameters. They then clicked the stock quote button which returned the price. They highlighted the returned price and defined that as the value the service should return. That’s all they had to do to define the service which they then deployed to a locally running server. They then went into Excel and wrote a formula which invoked the service using the stock symbol in the currently-highlighted cell as the service parameter to return the stock price. Obviously, if quote.com changes their markup, service will have to be redefined, but it was easy to see how business people with little or no technical skills could create their own mash-ups, even when the data sources don’t have an existing API.

IBM showed a demo of their mash-up maker called QEDWiki. They showed how they could build mashups through a web browser. Their tool didn’t provide the service builder–the value of the tool seemed to be bringing together data from existing REST-exposed sources into a single page and being able to do that configuration in the browser. They mentioned a mash-up tool being available at Alphaworks but it wasn’t clear whether or not that was the same package being demo’d.

Opening Keynote

Have you noticed how chummy Adobe and Alfresco are these days? John Newton, Alfresco CTO, and David Mendels, SVP from Adobe, were both on the opening keynote panel. The two were definitely in sync on where they thought content management was going. John said he thinks social computing will drive ECM from being used by 10% of the people in an organization today to being used by 80% or 90% in the near future. He mentioned the Facebook integration that’s been getting so much press lately. David said that content must be service-enabled so that it can be assembled in new ways which plays right into Alfresco’s recent addition of the REST framework.

Mendels also let it slip that Adobe has two hosted content management solutions, both of which run on Alfresco. One is Buzzword, which Adobe recently acquired. The other wasn’t named.

Alfresco says it’s all about connections. Adobe says it’s all about interaction. Seems pretty in-step to me.

WCM Keynote

This was a disappointing mix of closed-source WCM vendors. None of the vendors differentiated themselves at all or offered up anything new or interesting with regard to where WCM is headed.

WCM Analyst Panel

As a general rule, you shouldn’t miss an opportunity to hear Tony Byrne speak. His honesty and straightforwardness is always refreshing at these events. He gave the audience a piece of advice regarding evaluating CMS vendors which was to insist on a bakeoff. He said, “You wouldn’t buy a ferrari by watching the sales guy drive the car around the lot, you’d insist on getting behind the wheel. Why should it be different with a CMS?” I’d add a bit to that. When you do the test drive, you should take your mechanic.

I see many customers making CMS decisions before thinking about who’s going to do the implementation and the customization. Or they wait too long to get a professional services firm involved in the process. Obviously, I’m biased–my ECM practice at Optaros is in the business of helping clients with CMS evaluations and customizations–but the point is to seek advice from subject matter experts. Even if you do a bakeoff, there’s still a lot to learn from the people that have been there that you might not uncover during the bakeoff.

The Future of Collaboration/Enterprise 2.0

I was extremely frustrated with this session. I attended thinking the panel would stick to the topic–Enterprise 2.0. Unfortunately, the discussion was around everything but that. The moderator and the panel seemed to confuse “Web 2.0” with “Enterprise 2.0”. Rather than talk about how Web 2.0 technologies can be applied within an organization to boost collaboration, leverage the power of the social network across the org, and reap the benefits of a less-structured, self-forming, self-regulated approach to Knowledge Management (this is McAfee’s and generally everybody else’s definition of Enterprise 2.0), the entire session was devoted to old ideas around customer engagement, customer-driven product development, and online communities. It was a very extranet/internet-centric discussion which entirely misses the point.

I wasn’t the only one who was frustrated–after asking the panel a question which essentially boiled down to “Is it you or me? Which one of us is confused?” several people approached me to share their disappointment.

Andrew McAfee

This was a panel composed of Frank Gilbane and Andrew McAfee. McAfee has done a lot of research around Enterprise 2.0 at Harvard and is always an entertaining speaker. Unfortunately, the format and the length of the slot didn’t really give him much room to stretch his legs. I did get a chance to ask him if he had done any research into the size of an organization that’s required to get the full network effect inherent in Enterprise 2.0 solutions. He said no one really knows yet what the minimum size is but anecdotal evidence suggests it’s “surprisingly small”. If you are looking for examples of real-world Enterprise 2.0 implementations, you should check out the site he started for capturing Enterprise 2.0 case studies.