Jeff Potts' personal blog about Alfresco, content management, BPM, search, and other stuff
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.
I have published a new version of my Introduction to Web Scripts tutorial. This is a major revision that refactors the tutorial to leverage the Alfresco Maven SDK and AMPs. In addition, I have done a little bit of reorganization to improve clarity and a lot of wordsmithing to make the tutorial more consistent with the others in the Alfresco Developer Series.
By the end of this tutorial, you will know how to:
Write web scripts that respond to GET, POST, and DELETE requests over HTTP/S and return data in both HTML and JSON.
Use the web scripts console to display documentation and debug info on your custom and out-of-the-box web scripts.
Make AJAX calls to your custom web scripts.
The tutorial assumes you already know how to use the Alfresco Maven SDK. If you don’t, take a look this tutorial.
The tutorial text and all of the source code related to it are on GitHub. If you see problems or opportunities for improvement, please fork the project and send me a pull request.
Yesterday we had our monthly Tech Talk Live session. The topic was “Business Intelligence for ECM Practitioners” and it was all about how BI can be applied to the data that lives in your Alfresco repository. We were joined on the panel by Francesco Corti, who is experienced in both ECM and BI, as well as John Iball, the product manager for Alfresco One.
Here is the broadcast in case you missed it:
During the broadcast we saw Francesco’s AAAR solution which extracts data from Alfresco and puts in a data warehouse. Pentaho, an open source Business Intelligence platform, is then used to create a dynamic dashboard that end users can use to interactively answer business questions about that data. Francesco showed a live demo of reporting using Alfresco auditing data, but with his CMIS connector for Pentaho, you could report on anything stored in the repository.
John Iball shared with us that reporting and analytics was one of the top features requested during a recent discussion with 70 or so Alfresco customers. Rather than very basic reporting features, John said that customers want the ability to do deeper analytics on the data stored in Alfresco. Some will already have BI platforms in place. Others will benefit from a complete solution. Either way, John says that meeting this need is high on Alfresco’s roadmap right now.
About Tech Talk Live
Tech Talk Live occurs on the first Wednesday of every month barring a holiday or some other conflict. During each episode, the Alfresco community team focuses on a specific topic and invites panelists from Alfresco, partners, and the broader community to take part in the conversation. The session is broadcast to the public live on Google Hangouts on Air with Q&A taking place simultaneously in #alfresco on freenode IRC. Check the wiki for links to prior and future episodes. The Alfresco events page also has entries for Tech Talk Live.
Our next episode will be on March 5 when Nathan McMinn joins us to recap some of the killer projects that were created during the Alfresco Summit 2013 hack-a-thon.
I have published a major revision to my Implementing Custom Behaviors in Alfresco tutorial. I hadn’t really touched it since 2007–behaviors, the ability to bind programming logic to types, aspects, and events in Alfresco, haven’t changed at all since then.
The changes are mainly around using the Alfresco Maven SDK to produce AMPs and the addition of unit tests to the project. I also gave it a bit of a style scrub to make it more consistent with other tutorials.
The tutorial continues with the SomeCo example. In this tutorial you will create the content model and behavior needed to implement the back-end for SomeCo’s five star rating functionality. By the end of this tutorial you will know:
What a behavior is
How to bind a behavior to specific policies such as onCreateNode and onDeleteNode
How to write behaviors in Java as well as server-side JavaScript
How to write a unit test that tests your behavior
This tutorial, the source code that accompanies it, and the rest of the tutorials in the Alfresco Developer Series reside on GitHub. If you want to help with improvements, fork the project and send me a pull request.
Next week I hope to publish a major revision of the Introduction to Web Scripts tutorial.
I have published an updated version of the Creating Custom Actions in Alfresco tutorial. Similar to the recently updated Working With Custom Content Types in Alfresco tutorial, this version has been updated to match the refactored code which now assumes you are using the Alfresco Maven SDK to produce AMPs and that you are using Alfresco Share as the user interface. I’ve removed all references to Alfresco Explorer.
The Custom Actions tutorial covers:
What is an action
How to write your own custom action in Java
How to invoke the custom action from a rule or from the Alfresco Share UI
Configuring an evaluator to hide the UI action when certain conditions are true
Configuring an indicator to show an icon in the document library when documents meet certain conditions
Writing and executing unit tests with the Alfresco Maven SDK
If you aren’t familiar with the Alfresco Maven SDK and you need help diving in, take a look at this tutorial.
All of the tutorial source code and text for the Alfresco Developer Series of tutorials is on GitHub. Please fork the project, make improvements, and send me pull requests.
Next on the to-be-updated list is the Custom Behaviors tutorial. I expect that to go live sometime next week.
The Working with Custom Content Types tutorial has just been given a major revision. I’ve updated it to match the refactored code. Here is a summary of the high-level changes:
Instructions now assume you are using the Alfresco Maven SDK. If you haven’t played with the Alfresco Maven SDK yet, check out my recently published tutorial on the subject.
Removed all mention of Alfresco Explorer. The tutorial is now exclusively focused on Alfresco Share for the user interface part.
Removed all mention of the Alfresco Web Services API. The tutorial is now exclusively focused on CMIS as the preferred API for performing CRUD functions against the Alfresco repository.
The code and the tutorial text reside in GitHub. If you find issues or make improvements, please fork the repository and send me a pull request.
I’ve written a new tutorial about Getting Started with the Alfresco Maven SDK. I hope it helps newcomers to Alfresco get started writing customizations quickly. And if you are an experienced Alfresco developer who still uses Ant-based builds, I hope it motivates you to make the switch to Apache Maven.
The Alfresco Maven SDK is the preferred way to bootstrap, manage, and build your Alfresco modules. The cool thing is that you don’t need anything to get started–if you already have a JDK and Apache Maven installed, you are ready to write custom Alfresco modules for the Alfresco repository and Alfresco Share, whether you are using Community Edition or Enterprise Edition.
The tutorial itself is an HTML page on this site, but I wrote it using Markdown. It lives in a GitHub repository, along with my older tutorials on custom content types, actions, behaviors, web scripts, and advanced workflows. Those tutorials have also recently been converted to Markdown and the accompanying source code has been refactored to use the Alfresco Maven SDK and AMPs, but I am still busy revising the tutorial text to match the refactored code.
I hope that by writing these tutorials in Markdown and storing them in GitHub the Alfresco community will be more likely to help me maintain them over time by forking the repository and sending me pull requests.
I used to be of the opinion that when it came to books about Alfresco, the more, the better. But with about a dozen on the market at this point, I think it is probably past time to start focusing on quality over quantity.
A big driver of quality is relevance. We’re at a point where the old web client, Alfresco Explorer, is no longer relevant to any new project and most existing implementations. And yet Alfresco Explorer keeps showing up in new books. Come on, people. Alfresco Share made its debut in Alfresco Labs 3a way back in September of 2008. Granted, it needed a few releases before it became the preferred web client, and there are still a few minor things you cannot do in Share, but Alfresco Explorer has been virtually unchanged since then.
Alfresco Share is the preferred web client and has been for quite some time. Yes, there are people who still run old versions of Alfresco. Yes, there are people who like JavaServer Faces. But I’m pretty sure the existing catalog has those folks well-covered. I’d rather see authors spending their energy (and the readers’ time) elsewhere.
I say it all of the time and it seems like it ought to be common knowledge, but I’ll repeat it: No new customizations should be happening with Alfresco Explorer. Talking about Alfresco Explorer customizations is almost a disservice to the community, so let’s stop.
From time-to-time, publishers ask me to review book proposals. I know many of you get the same emails. Let’s all make a stand: No more green lights for books that feature significant coverage of Alfresco Explorer from here on out. Sound good?
Alfresco Explorer was a great web client in its day. It’s not that I dislike it at all. I’m just saying it’s time to say goodbye. So let’s all bid a fond farewell and let it go gently into the good night. We can remember it fondly over drinks at meetups, but for goodness sake, let’s stop writing about it.
This year we tried something new at Alfresco Summit. Rather than have all of our keynotes delivered by Alfrescans we invited some external speakers to both Barcelona and Boston.
Day 1: Big ideas, big opportunities–Doug Dennerline, Jimmy Wales, Andrew McAfee, & John Newton
In both cities we opened the conference with our new CEO, Doug Dennerline. This was Doug’s first annual conference since joining Alfresco, so it was a great opportunity for him to introduce himself to the community and talk about the tremendous opportunity he sees in front of us.
Then, in Barcelona we had Jimmy Wales, founder of Wikimedia Foundation. Jimmy spoke of the phenomenal growth of Wikipedia, particularly in emerging countries and in various languages. He talked about an initiative called Wikipedia Zero, which seeks to provide free access to Wikipedia over cell phone networks. He showed a never-before seen video of school children in South Africa who wrote an open letter to carriers to explain how much Wikipedia helps them with their studies and how much free access would mean to their community. That video totally got to me–I’m such a softy.
One of the things that stuck with me from Jimmy’s talk is that we should be asking what our community needs to get done and then help them make that happen rather than constantly asking what our community can do for us. It’s tough to do because our community is so diverse but this might be a useful guiding principle in the coming year.
In Boston the first day keynote was Andrew McAfee. Andrew is Principle Research Scientist for Digital Business at the Sloan School of Management. You may know him as the guy who coined the term “Enterprise 2.0”. His talk was about the unbelievable growth of content in our lives and businesses–“Content is growing faster than our ability to find words to describe it,” he said.
He talked about the importance of following the data rather than always deferring to the HiPPOs (Highest Paid Person in the Organization). He spoke of various studies that showed how areas once ruled by pundits (politics, wine, real estate) are now more accurately forecast using big data techniques.
There were all kinds of amazing stats Andy shared with us that morning. The one most shocking to me was that 500 million searches every day are completely new to Google (here is an article where that is referenced). Apparently 15% of Google searches have been new to Google for each of the last 15 years. Wrap your head around that!
We monitor all kinds of stats related to the Alfresco community. Each quarter we pick a few and see if we can make improvements in those numbers. Andy’s talk was a reminder to me that we need to pay attention to what the community is trying to tell us through data.
That evening John Newton, Alfresco co-founder and CTO, provided a Back to the Future themed keynote focusing on the future of work. John pointed out how unimaginable the work environment of today was ten years ago and asked for all of us to try to predict what work might be like ten years from now. If you have ideas, he’d love you to tweet them with the hashtag “#Work2023”. John’s slides are here. We’ll post the video soon.
Day 2: The Inevitability of Change. Simon Wardley and Dries Buytaert
Day two brought a new set of speakers. In Barcelona we kicked off with Simon Wardley, researcher at the CSC Leading Edge Forum. His talk covered a lot of ground. It was about the best way to think strategically about your organization (find the “why”, not just the “what”) and the inevitability of change and the incredible phases of discovery and innovation that follow major shifts in technology.
He compared cloud, which is simply the shift in computing from product to commodity, to the mass commoditization of electricity. He expects a period of unfathomable new products and services that will be achievable thanks to the cloud much in the same way radio, television, and other major innovations appeared after electricity was commoditized.
I agree with Simon that cloud is not an if but when. Even organizations that say there is no way they will ever put certain data in the cloud will ultimately shift to that style of computing. It will take time–probably less time than any of us think–but it will happen. Until then, Alfresco thinks that 20% of your content will stay on-premise, 20% will move to the cloud, and 60% will be in or moving between both.
Simon’s talk got me thinking about how our community will change over time. On-premise is still a huge part of our business and will be for some time, but SaaS is definitely the direction we’re headed. That will certainly change the make-up, goals, and tactics of the Alfresco community. It’s important for people to know, though, that our values around openness and transparency are fundamental to who we are. We may evolve our products and services, but you should continue to hold us to those values.
In Boston we kicked off day two with a keynote from Drupal creator and Acquia founder, Dries Buytaert. Dries talked about the evolution of content management. He took us from those humble beginnings in his Antwerp dorm room to today where Drupal runs 5% of all web sites and one-size-fits-all approaches are being abandoned in favor of best-of-breed, often incorporating open source software like Drupal and Alfresco.
I loved the “Do Well, Do Good” slide in Dries’ talk because it speaks to a reason why I like working in commercial open source. We can do well as a company–grow the business, earn profits for our stakeholders–but we can also do good for our fellow humans. Software like Drupal and Alfresco are helping all kinds of people fulfill their missions despite their lack of budget. We spend a lot of time worrying about the people who have huge budgets who aren’t paying us and we forget about the tremendous good we do for those who can’t.
Directly relevant? Maybe not always. Inspiring? I hope so!
It’s tough picking keynote speakers. Regarding the exact same speaker I had some people who asked, “Was that talk really relevant to what we do?” and others who exclaimed, “Wow, that was spot-on!”. It’s sort of like art–the perceived relevancy is totally in the beholder. I found elements from all four talks that were relevant to me–the themes played right into my community keynote on day 3–I wish I could say that was totally planned.
The goal wasn’t to have industry visionaries talk to us about our own products or even our own market. The goal was to have someone inspiring give a talk that opened your mind to new possibilities. That’s the best frame of mind you could be in when you go to a conference like Alfresco Summit, I think.
This year I asked our Alfresco Summit room monitors to capture the number of attendees in each session. It’s interesting to look at the data. For the most part, it’s as I expected, although there are a few surprises here and there.
It’s important to note that a well-attended session reflects topics in which people are interested, a well-written title and/or abstract, position in the schedule, and potentially the reputation of the speaker. It may not be an accurate indicator of how great the session turned out. We also didn’t capture the attendance for every session nor did we get a perfect count every time.
With that disclaimer out of the way, let’s look at the attendance of the non-technical sessions first. This was the first year we’ve included business sessions in our annual conference and I think it worked really well. Here are the top 5 non-technical sessions in terms of attendance for Barcelona:
In Barcelona, the technical sessions were attended by almost twice as many people as the business sessions, on average, while in Boston the average attendance was almost the same for both technical and non-technical. This isn’t surprising as the conference has been historically more technical in EMEA than the Americas both in terms of content and attendees.
Technical Sessions
Here are the most well-attended technical sessions in Barcelona. If the session didn’t make the top 10 well-attended list in Boston (either because it wasn’t presented or because it wasn’t as well-attended relative to the other talks) it is marked with an asterisk (“*”):
Top 10 Technical Sessions by Attendance (Barcelona)
The list for most well-attended technical sessions in Boston has some of the same talks as Barcelona with a few exceptions (talks only appearing on the Boston list are marked with “*”):
I should note that the “top 10” cutoff is completely arbitrary. In Barcelona, for example, the next 10 sessions still had 65 to 70 people in attendance.
What about lightning talks?
The lightning talks were extremely well-attended in both cities. In fact, most of the lightning talk sessions had enough attendees to make it into the top ten well-attended list, but I wanted to call them out separately.
Richard Esplin did a bang-up job pulling together two dozen lightning talks in each city. The overwhelming majority of lightning talks used the Ignite format which meant the slides advanced themselves after 30 seconds. Delivering these talks requires a ton of prep and practice and the presenters did not disappoint.
I didn’t see every lightning talk but my personal favorites out of the ones I did see were Boriss Mejias’ hilarious talk on “Alfresco Related WTFs in the Wild” in Barcelona and three talks in Boston: Peter Monks’ “Advice for Building an Alfresco Extension”, Tony Parzgnat’s talk on “Dynamic Datalist Driven Constraints in Share”, and “Help Your Users to RTFM!” by Andy Healey.
The lightning talk sessions were so impressive and so popular, I wonder if we ought to have an Alfresco Ignite event at some point.
Highly-Rated Talks
Now if you only followed the crowds you would have caught sessions that were not only well-attended but also highly-rated (and potentially a few that failed to live up to expectations). You would have also missed some hidden gems. Here are sessions that stood out in terms of ratings received regardless of how well-attended they were:
So that’s a little taste of what you missed in Barcelona and Boston. There are many great talks I haven’t called out in this post (I haven’t even talked about the keynotes yet!). You should explore the Alfresco Summit web site to find ones that suit your interest.
Most presentations are attached to their session page on the web site. By mid-December we hope to have the recordings embedded on each session page as well, so stay tuned for that.
It is hard to believe that the Alfresco Developer Guide was published five years ago this month (really, the tail end of October). My goal at the time was to help flatten the learning curve around the Alfresco platform and encourage people still using legacy ECM systems to make the leap. Based on the number of people who come up to me at meetups, conferences, and other events to tell me how much the book helped their projects, their teams, and even their careers, I’d say that goal was met and that makes me very happy.
The product and the company have definitely evolved a lot since 2008. The chapter on WCM is no longer relevant. The section on Single Sign-On is out-of-date. The book was written before Alfresco Share existed. And, at the time, jBPM was the only workflow engine in the product and Solr was not yet on the scene, nor was mobile. Both JCR and the native Web Services APIs have given way to CMIS as the preferred API. And Maven and AMPs are the recommended way to manage dependencies, run builds, and package extensions.
But the fundamentals of content modeling haven’t changed. Rules, actions, and behaviors are still great ways to automate content processing. Web Scripts are vital to any developer’s understanding of Alfresco, including those doing Share customizations. And, though the preferred workflow engine is Activiti rather than jBPM, the basics of how to design and deploy content-centric business processes in Alfresco haven’t changed that much.
So where do we go from here? The book was originally based on a set of tutorials I published here on ecmarchitect. Last year I created second editions of many of the tutorials to catch them up with major advancements in the platform. For example, the custom content types tutorial now includes Share configuration and CMIS. The custom actions tutorial now includes how to write Share UI actions. And the workflow tutorial now assumes Activiti and Alfresco Share rather than jBPM and Alfresco Explorer.
The source code that accompanied the book lives in Google Code, but I recently moved the source code that accompanies the tutorials to GitHub. I’m busy refactoring the tutorial source code to use Maven and AMPs. I’ve also started moving the actual tutorial text to markdown and am checking it in to GitHub so that the community can help me revise it and keep it up-to-date.
I learned a lot writing that first book. One of the lessons is to always work with co-authors. That made a big difference on CMIS and Apache Chemistry in Action. I hope that book helps as many people as the Alfresco Developer Guide did and I look forward to reflecting back on how CMIS has changed on that book’s fifth birthday in 2018.