Author: Jeff Potts

Five of your favorite Alfresco-related presentations

If views of my presentations on SlideShare are any indication, a whole lot of you are interested in integrating Drupal and Alfresco. Despite the fact that the presentation is four years old, it consistently makes the “most viewed” list out of my uploads. If you are considering Drupal but need something a bit more document-centric to serve up your files as part of that Drupal site, take a look:

With over 12,000 views, it is safe to say there is definitely something to the combination of Alfresco and Drupal.

Another apparent classic is:

Which is kind of scary given its age and brevity. I think the popularity of this is due to the seemingly inexhaustible demand for “getting started” resources for new Alfresco developers.

This one has similar info, but with more details, and is probably a better choice for developers trying to get an extremely high-level overview:

The CMIS API is now the preferred way to interact with the Alfresco repository remotely, and many people use this presentation to get a quick overview:

In fact, I’ll have a CMIS powerhouse panel on Tech Talk Live tomorrow (July 10, 2013). So if you are just getting started with CMIS, please join us.

If you like CMIS but you don’t want to fool around with your own server, you can use Alfresco in the Cloud. This deck gives a CMIS overview and discusses the Alfresco API at a high-level with links to sample code and screencasts:

Thanks to everyone who has made use of these presentations!

Who would you most like to meet at Alfresco Summit and why?

Every year I create a list of “community stars” and I send them a free pass to our annual conference. Some of the things I use to create my list include things like forum helpfulness, #alfresco IRC presence, mailing list activity, meetup hosts, participation in contests, wiki edits, blog and book authors, open source add-ons, contributions to the product (bug reports ,fixes, new features), and activity on stackoverflow.com.

But a key ingredient that has always been missing is you. Of course, you’ve given me your input indirectly–when you award someone points in the forum or you link to one of their blog posts you are boosting that person’s standing in our community. But now I want to ask the question explicitly: Who from our community would you most like to meet in-person at Alfresco Summit and why?

Note that my definition of the Alfresco community is always all-inclusive: employees, partners, customers, and other community contributors, regardless of which specific product they use, all participate in our ecosystem. For this, I’m looking for non-Alfresco employees. Most likely, if you can name an Alfresco employee, they will be at Alfresco Summit.

If you want to name someone publicly you can comment on this post or send a tweet and cc @jeffpotts01. If you’d rather nominate someone privately, feel free to send me an email. My Alfresco address is jeff dot potts at alfresco dot com.

Be sure to specify Boston or Barcelona.

 

End-User How-To Videos for Alfresco Community Edition

I’ve started creating some how-to videos for performing common end-user tasks on Alfresco Community Edition. You can get to them all on this YouTube Playlist or take a look at the ones created so far, below…

The playlist currently includes:

  • Reviewing the sample site
  • Adding users (one at-a-time and by importing a CSV)
  • Creating groups
  • Create a new site
  • Five ways to create content
  • Versioning a document
  • Starting a workflow
  • Updating your profile
  • Exploring social features
  • Configuring user and site dashboards
  • Adding new features to your site

In the very near future I’d like to add some technical how-to’s for Community Edition, including LDAP configuration, CIFS/WebDAV/FTP/IMAP configuration, installing the SharePoint Protocol, installing the Google Docs Integration, configuring inbound and outbound SMTP, basic content model extensions, and basic dashlet development.

If you have ideas for Alfresco Community Edition videos you’d like to see that would help make your Alfresco Community Edition rollout more successful, let me know.

Alfresco Summit 2013 Registration Now Open

Alfresco Summit LogoIt looks like some of you have already taken advantage of the fact that registration for Alfresco Summit 2013 went live yesterday. I guess our “Can’t Wait!” rate is aptly-named!

We’ve updated the web site with a high-level agenda, training course descriptions, hotel and venue information, detailed pricing, and, of course, the registration form (Barcelona, Boston).

Regarding pricing, note that we are doing something a little different this year. Instead of having a single early-bird period we’re having multiple price breaks leading up to the event. The biggest savings happens now through mid-July and then the prices start to go up until we eventually reach the full-price rates.

Networking with others in the community, talking to industry visionaries and Alfresco Engineers, and taking some time to look at your ECM implementation from a new angle are all great reasons to come to Alfresco Summit. But I think the biggest benefit that justifies the cost of the conference, travel, and time away from work is the great content.

If you’ve been to past DevCons you know that this is an information-dense event. That will be the case again this year. To help make that happen, we rely on our passionate community of customers, partners, employees, and other members of the ecosystem to come to the conference and share their story with the rest of us, whether that’s a full-length session or a lightning talk. If you would like to speak, there is still time. You have until June 15 to get your proposal turned in.

Alfresco Summit is the must-attend event for anyone doing anything with our software. Do not wait to register because I want to see you there, have a chance to shake your hand, and thank you for helping make Alfresco the last true innovator in the ECM industry.

Alfresco runs happily on MariaDB

MariaDB is a fork of MySQL that was created after the Oracle acquisition. I suspected Alfresco would run fine on top of it, but was surprised at how easy it was to do.

MariaDB is a drop-in replacement for MySQL. Literally. You don’t have to change anything, really. Uninstall MySQL, install MariaDB, restart Alfresco, done. Same driver. Same connection string. Same tables. Same mysql command-line client.

If you install from MacPorts, watch out for this gotcha, otherwise, it is no big deal.

You don’t need both installed, but if both MySQL and MariaDB are installed via MacPorts, you can switch between the two with “sudo port select –set mysql mariadb”.

Despite the compatibility, Alfresco does not list MariaDB on the list of supported databases, so Enterprise Edition users should not do this on production machines.

Don’t get tripped up by MySQL/MariaDB skip-networking default in MacPorts

I recently decided to switch one of my MacBooks from MySQL installed with the binary package to MariaDB installed through MacPorts. I’ve used MacPorts for years and it has worked great for me, although I realize that isn’t the case for everyone.

After installing MariaDB, when I started Alfresco, it couldn’t talk to the database. I thought it might be a MariaDB problem, so I poked around a bit and then installed MySQL from MacPorts. Same problem.

I noticed that the problem was only with JDBC connections. Python didn’t have any trouble connecting nor did any of my non-JDBC database tools. A clue.

Then I noticed that “netstat -an|grep 3306” came back with nothing indicating that the database wasn’t listening on the port at all. I thought maybe it was a networking problem. Maybe permissions. Maybe a my.cnf issue. I tried tweaking all of that but wasn’t making any progress.

I decided there must be a .cnf file somewhere that was hosing me. It turns out that MacPorts installs a default .cnf file for both MySQL and MariaDB that has “skip-networking” turned on. That turns off all network-based connections to the server and that includes JDBC.

I have no idea why that is turned on by default but if you don’t know to look for it, you may chase your tail for a while. The fix is simply to edit the default .cnf file and comment out skip-networking. For MySQL, the file lives here:

/opt/local/etc/mysql55/macports-default.cnf

And for MariaDB the file lives here:

/opt/local/etc/mariadb/macports-default.cnf

CMIS 1.1 is now an approved spec; Here’s a recap of what’s new

CMIS LogoWith a final, heroic push and get-out-the-vote campaign, the OASIS CMIS Technical Committee (TC), the committee that is responsible for moving the CMIS specification forward, was able to get enough votes on Thursday to ratify the next version of Content Management Interoperability Services (CMIS) as a standard. This is a seriously cool accomplishment for everyone on the TC and the entire Enterprise Content Management (ECM) industry because CMIS establishes an industry standard for working with repositories like Alfresco, Documentum, FileNet, Nuxeo, and SharePoint, and it is important that the spec continues to evolve.

CMIS 1.1 has some exciting new features. Here’s a re-cap of what’s new…

Browser Binding

A binding is the protocol a client uses to talk to a CMIS server. CMIS 1.0 supported two bindings, Web Services (SOAP) and AtomPub (RESTful XML), the latter being the most performant and the most popular. But if you’ve ever looked at the XML that comes back from a CMIS AtomPub call you know how verbose it can be. The Browser Binding is based on JSON, so the payloads that go between client and server are smaller, making it the fastest of the three bindings. The original purpose of the Browser Binding was to make it easy for those building “single page” web apps or doing other work with CMIS via client-side JavaScript, but I think apps of all types will move to the Browser Binding as quickly as possible simply because it is easier to work with.

Type Mutability

This allows CMIS developers to create and update the repository’s content model with code. Imagine you’re building an Accounts Payable solution. You’re using CMIS because you want your solution to run on top of any CMIS-compliant ECM repository. It is highly likely you will need content types to store objects with metadata specific to your solution. Before CMIS 1.1, you have to ship repository-specific content models and installation and configuration instructions with your app. With CMIS 1.1, developers can simply write install and config logic as part of the solution that will interrogate the repository to determine if any changes need to be made to the content model to support the solution, and if changes are required, implement them.

Secondary Types

Some repositories (like Alfresco) have the concept of free-floating or cross-cutting content types that group together related properties that can be added to object instances in the repository. For example, perhaps you want to define a “client-related” set of properties that can be added to any document in the repository that is related to one of your clients. Not all documents are related to a client, but the ones that are need to be able to refer to a client name or number or something. In Alfresco, these are called “aspects”. CMIS 1.0 didn’t support aspects natively so developers using CMIS to query for or set properties defined in an aspect had to use a workaround. In CMIS 1.1, aspects are supported natively.

New “Item” Type

In CMIS 1.0, Document objects are assumed to have a content stream. Some repositories even require it. In Alfresco, this means if you want to work with a type that inherits from something other than cm:content (or cm:folder), you are out-of-luck. CMIS 1.1 adds a new base object type called “Item” that represents objects that don’t have a file associated with it.

Bulk Updates

CMIS 1.1 adds a new feature that makes mass changes more performant. Instead of iterating over a list of objects, changing and saving each one, you can define a set of property changes and make those against an entire collection, which is much more efficient.

Append to Content Stream

A challenge with any ECM project is how to move large files into the repository. The new append to content stream feature in CMIS 1.1 allows you to send files to the repository in chunks which could be a key to addressing that challenge.

Retentions and Holds

This new feature allows you to set retention periods for a piece of content or place a legal hold on content through the CMIS 1.1 API. This is useful in compliance solutions like Records Management (RM). Honestly, I am not a big fan of this feature. It seems too specific to a particular domain (RM) and I think CMIS should be more general. If you are going to start adding RM features into the spec, why not add Web Content Management (WCM) features as well? And Digital Asset Management (DAM) and so on? I’m sure it is useful, I just don’t think it belongs in the spec.

So that’s what’s new in CMIS 1.1. You can read the authoritative spec for details.

When Will My Favorite Repository Support CMIS 1.1?

That’s up to each vendor. If these features are important to your installation or the solution you are building, you should be making it very clear to your vendor contacts that you want to see these features get priority over other things the engineering team might be working on. As for Alfresco, I can’t make any promises on dates. We’ve had experimental support for the browser binding in place for some time. I think we all want to see the other CMIS 1.1 features in both Alfresco on-premise and in the cloud sooner rather than later, but I don’t know when that will be.

Try It!

You can play with CMIS 1.1 by downloading the OpenCMIS InMemory Server from Apache Chemistry and a client library for your favorite language, or just launch the OpenCMIS Workbench and you’ll see the Browser Binding as an option when you connect. If you need to know more about CMIS and the client libraries, server frameworks, and CMIS development tools available at Apache Chemistry, you should buy the book Jay Brown, Florian Mueller, and I have been working on. It should be in print later this summer but you can get the eBook now. It covers both CMIS 1.0 and CMIS 1.1.

Alfresco Tech Talk Live moves to Hangouts On Air; this month’s topic “Alfresco & Reporting”

hangoutsonair-300x171We’re going to try something new with Tech Talk Live. The May episode, which airs this Wednesday, May 1 at 10:00 US/Central, will be broadcast on Hangouts On Air rather than WebEx. This means you don’t have to sign up beforehand and you will be able to watch the recording on YouTube rather than using WebEx’s proprietary format that cannot be replayed on Linux clients.

If you are already signed up for the WebEx this Wednesday, don’t join it. Instead, just head over to the Event page. We’ll embed the live broadcast there. We’ll also include an embedded IRC chat window tuned in to #alfresco on Freenode IRC to facilitate real-time questions and discussion.

What’s on the agenda this month?

So glad you asked. This month we’ll be talking about Alfresco and reporting. We’ll have Alfresco community member, Tjarda Peelen, showing us what he does to solve the problem by integrating Alfresco and Pentaho. He’s made that available as an open source project so we’ll be looking at that code, seeing a demo, and talking about other ways people do reporting against Alfresco. If you want to throw in your ideas, join us in the chat.

We’ve tried Google Hangouts before, but this is the first time using it for Tech Talk Live. We hope it works well and that you’ll like the new format. Of course it could be a complete disaster. Who knows. Tune in to find out!

Alfresco Summit comes to Barcelona & Boston in November 2013

Alfresco Summit Slogan: Put your content to workHopefully you saw my previous post about Alfresco DevCon expanding to include not only great technical content but also new content around the business of Enterprise Content Management. The new, expanded conference is called Alfresco Summit.

I am pleased to announce that Alfresco Summit will take place this November in Barcelona from the 4th through the 7th and in Boston from the 12th through the 15th.

As we’ve done with previous DevCon events, the first day will be a pre-conference day consisting of training workshops (additional cost), a hack-a-thon, and a Partner Summit. The main conference starts on the next day. The full schedule will be on the Alfresco Summit site some time this Summer.

We expect registration to go live in June.

You Should Speak

We always have a great mix of content from Alfrescans, customers, partners, and other community members and I want to make sure that continues this year. Whether you are a developer who wants to give a down-and-dirty technical talk or you are an IT decision-maker, project manager, or ECM practitioner who wants to share thoughts on how to make ECM implementations successful, we want you to be front-and-center because no matter which edition or solution you are using–Enterprise Edition, Community Edition, Cloud, or Workdesk–you have tips, tricks, best practices, and solutions that the rest of us want to know about.

The call-for-presenters closes June 15. If you need some help thinking about what to present, check this out. Don’t feel like you have to stick to that, of course, but it might improve your chances.

I look forward to seeing what you submit and to catching up with you in-person this November!

5 drivers of your decision to pay for commercial support

DISCLOSURE: I work for a commercial Open Source Software company called Alfresco that earns revenue by selling commercial support for the software we freely distribute under an OSI-approved license.

A recent CMSWire post cited a study commissioned by a proprietary software vendor to show that Open Source Software is of lesser quality than proprietary. The person funding the survey is quoted as saying, “You certainly can’t use Open Source for something that’s the lifeblood of the company.”

I commented to one of my colleagues that it seemed like this guy just stepped out of a time machine from the 90’s and is still spouting anti-Open Source Software FUD that was dispelled years ago. And because the entire planet, except for this one guy, realizes that Open Source Software in fact runs the mission critical operations of many companies of all sizes and, basically, most of the Internet, the cloud, mobile phones, tablets, and countless other electronic devices, I shall not spend any more time on his nonsense here.

What the post did do, however, was to get me thinking about how companies make the decision to pay for commercial support of the Open Source Software they have deployed in their companies.

In talking it over with my colleague, Richard Esplin, we’ve come up with five drivers that companies think through when they decide whether or not to pay for commercial support of the Open Source Software they use. You can think of this like a scorecard. The higher a software packages scores across these dimensions, the more likely it is that the company will pay for support.

First, a couple of assumptions. Let’s assume that a company has the budget to pay for support. Companies and non-profits that don’t, don’t have the luxury of this decision–they make due. And, let’s further assume that commercial support for a given piece of Open Source Software can be obtained within that budget. Not all OSS has a commercial support option, or one that fits within their budget.

Now, the company is left with a decision: Do we pay for support or not?

Richard and I argue that this decision comes down to these five drivers:

Mission criticality

This one is simple: The more mission critical a piece of Open Source Software is to the business, the more it makes sense to pay someone to help keep that software running.

Switching Costs

If something goes wrong with a library I’m using as a developer, I may be able to find a similar library or I’ll just code around it. However, if my Open Source CRM, ERP, or ECM system fails, it is a different story. Those migrations don’t happen overnight. The higher the switching costs, then, the greater the need for someone to be there to help push through any issues that do arise.

Adoption

Are you one of millions of people using a particular piece of Open Source Software or one of ten? One of the benefits of Open Source Software over proprietary software is that “with enough eyes, all bugs are shallow”. If there is a huge population of people using the software, that means it has been used for a variety of use cases on a variety of platforms. The risk of a problem caused by using the software in a new and unique way is lessened. And a thriving community not only helps with finding and fixing bugs, it can also make it easier and cheaper to get trained up and to get ideas around approaches or to discover new use cases by engaging with that community.

If, however, the Open Source Software is narrowly-adopted, a lot of the benefit of the network effect is lessened. In that case, rather than crowd sourcing support, a company pays someone to do it.

Complexity

Open Source Software runs the gamut of complexity, from relatively simple libraries and small web applications to operating systems and databases and entire software suites. A company’s willingness to pay for support for software comprised of a few thousand lines of code that performs a small number of functions is going to be vastly different than that of a package comprised of millions of lines of code with hundreds of moving parts. Also consider some Open Source Software projects that are built on top of multiple layers of more foundational components, which are also Open Source.

The more complicated the stack (large code base, lots of moving parts, lots of layers and dependencies), the more it makes sense to pay a single vendor with deep expertise in the entire stack.

Cost of Self-Support

The final driver is the cost of supporting the software internally. In this case, I mean “cost” in the economic sense of the word, to be inclusive of the real dollars it costs to hire, train, and employ people with expertise in that software but also in terms of the opportunity cost experienced when a company spends their own fiscal and human resources on supporting the software instead of on other things. For a huge company with a deep bench of under-utilized people with technical skills in a certain area, for example, the cost of self-support may be relatively cheap. Companies where that is not the case are more willing to pay someone else to support the software because it is extremely costly for them to do it on their own.

Weigh Each Driver to Make a Decision

You can see how a strong score in one of these areas might offset a weaker score in others. For example, maybe you are using an Open Source Software package that is widely Adopted and has low Switching Costs but is of relatively high Complexity. Even if the Cost of Self-Support is high relative to what commercial support would cost, you might still not pay for support because you judge that the benefits of wide Adoption and low Switching Costs outweigh everything else.

Mission Criticality has the potential to trump the other drivers, though. A company whose existence depends on a piece of software that is completely unsupported appears wreckless, despite how low the actual risks may be when a package scores low on the other dimensions. Commercial support works like an insurance policy in this case.

All software breaks. Companies have to decide how they will deal with that when it happens. Companies may weight each of these drivers differently, but I think these five drivers are a good model of the decision at hand. And isn’t that the cool thing about Open Source Software? A company gets to make their own decision whether or not they want to pay for commercial support and from whom they want to buy it. I think that’s pretty awesome.