Tag: Alfresco

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.

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!

Alfresco Berlin Meetup Agenda

On Friday, May 10, we’ll be having a half-day meetup in Berlin, Germany in conjunction with the Codemotion conference happening at the same time. Everyone is welcome to attend and there is no cost, even if you are not registered for the Codemotion conference. You can register for the meetup here. The agenda will be as follows:

15:00 to 15:15 Welcome (Jeff Potts, Alfresco)
15:15 to 15:45 Introducing the Alfresco API (Jeff Potts)
15:45 to 16:15 Group Discussion: How Are You Using Alfresco? (All)
16:15 to 16:45 SmartWCM (Florian Maul, fme)
16:45 to 17:00 BREAK
17:00 to 17:30 Enhanced Script Import Tooling (Axel Faust, Prodyna)
17:30 to 18:00 Alfresco Workdesk (Bernhard Werner, Alfresco)
18:00 to 18:15 Invitation to Join the Community (Jeff Potts)
18:15 to 19:00 Bratwurst, Beer, & Networking

If you would like to present a 30-minute customer case study on how your organization implemented Alfresco, please let me know.

Earlier in the day I’ll be giving a talk at Codemotion Berlin on CMIS and Apache Chemistry in Action. So, if you are at Codemotion and you want to learn how to use an industry standard API to manage content in ECM repositories like SharePoint, FileNet, and Alfresco, come to my talk.

I hope to see you there!

Alfresco announces new CEO

Unless one of your New Year’s resolutions was to engage in a complete media blackout, you’ve undoubtedly heard the news that John Powell, Alfresco co-founder and CEO, has replaced himself with Doug Dennerline. Here are some of the places the news was covered:

John Powell has made public statements about a future IPO previously, but this is more than a comment during a keynote, this is a serious step toward that milestone.

Most of the coverage has either been about Alfresco’s decision to come to the US for what it sees as a market better-suited to tech offerings or about Doug’s extensive Software-as-a-Service (SaaS) experience and what that means for Alfresco’s continued expansion into the cloud. I (perhaps mistakenly) always assumed Alfresco would go public in the US market. And, although Doug’s experience will definitely be a huge asset as we push further into the cloud, the idea that we see our future in the cloud isn’t a lightning bolt either. Instead, my biggest takeaway from the news is what a class act John Powell is. It takes a real leader to objectively stand back, take an assessment of what is needed to achieve a particular goal, and then execute on that, even if it means taking yourself out of the role (especially when the company is doing well).

I definitely admire what John has done for Alfresco and I’ve enjoyed working with him–luckily, he’ll be keeping his board seat, so no sloppy goodbye is necessary.

By the way, if you are going to be in the San Francisco Bay Area on January 30, the Bay Area Alfresco User Group is meeting that night and both Doug and I are planning on attending. You should come to the meetup, welcome Doug to the Alfresco community, and share your Alfresco story.

 

Alfresco forums refresh on its way

I want to give you a short heads-up on a change coming to the Alfresco Forums. In short, we are migrating the Alfresco Forums to a new platform. This is part of a larger initiative aimed at reducing the number of accounts required to engage with the Alfresco community, making it easier to fight spam and moderate the forums, and put us on a platform that will enable us to make the entire community experience better going forward.

Jeremy French is the developer leading up this effort, and he’s recently created a screencast that shows some of the new features:

If you watched the screencast, you may have noticed that we are consolidating our local language forums into one platform. This means that if you are participating in both the German forum and the English forum, for example, you won’t need multiple accounts and you won’t have to switch between the two systems. If you want to see forum posts written in German, change the language dropdown to German. French? Change the dropdown to French.

The new forums will have the same functionality you are used to, plus:

  • A new look-and-feel that matches the current alfresco.com theme.
  • A “folksonomy” of tags to help authors add additional context to their posts.
  • The ability to select a specific Alfresco version to associate with a topic.
  • Richer subscription options for both email notifications and feeds.
  • Gravatar integration.
  • Richer and more visible leaderboards.

The migration is about one month away. When we migrate, we will make sure that all of the data in the current forums comes across, including user accounts. As you saw in the screencast, URLs that point to threads in the existing forum will continue to work after the migration.

Immediately after go-live I think we’ll have a much improved forum system. But the whole reason we are going to the trouble is so that we can enhance it further with feedback from the community. So please do let us know if you have ideas we should consider for the backlog.

If you are coming to DevCon Berlin or San Jose and you want to play with the test forums, come find me or Richard Esplin and we’ll give you a peek.

What’s going on with Alfresco clustering?

I am way past due getting this blog post out. We’ve had multiple discussions on the topic in #alfresco on IRC over the last several weeks, but I want to make sure those of you who aren’t yet hanging out in IRC regularly are aware of some changes related to Alfresco clustering that have already happened with the 4.2.a release. In general, I would prefer to share this stuff way ahead of any release in which it takes effect, but that didn’t happen this time and I’m sorry about that. I promise to try to do better!

With that out of the way, let me shed some light on some recent changes that may affect some of you running Community Edition…

Until recently, clustering in Alfresco has been implemented using a combination of three main technologies: Ehcache, Hazelcast, and JGroups. If you’ve looked at it lately, you may have noticed that JGroups has been removed from the repository source code. What’s going on is that we are consolidating our clustering implementation on Hazelcast because it can handle everything we need to make clustering work. (On a side note, I believe this is one of those improvements that we’ve made to our on-premise software as a result of lessons learned running our own large-scale Alfresco implementation in the cloud).

So that explains what’s going on with clustering in the Enterprise Edition. But if you looked closely at the Community Edition source code, you may have noticed that Hazelcast is no longer included at all. In fact, all clustering related codeĀ (org.alfresco.repo.cluster.*) has been removed, including configuration files like cluster-context.xml and hazelcast/* and some changes to existing Spring configuration.

Now, at this point, some of you are probably thinking, “There was clustering code in Community Edition? I didn’t think clustering was supported in Community Edition.” You are correct. Clustering has never been supported in Community Edition. Community Edition is not commercially supported by Alfresco at all. But a lot of the pieces you need to make clustering work in Community Edition have been available until now, and there may be people out there who chose to get it working themselves rather than pay for an Enterprise subscription that includes support for clustering. These recent changes make it much harder to do that.

What I want to make sure everyone is clear on is that the removal of the ability to cluster Community Edition does not represent a shift in our philosophy on what should be in Community Edition versus what should be in Enterprise Edition. The principles John Newton outlined in his blog post, “Building a stronger open source product” back in 2009 still apply today. In short, functionality that supports large-scale rollouts (like clustering) or that depend on paid “Enterprise” software (like Oracle and WebSphere) should be Enterprise-only while everything else should be available to the community.

So rather than a change in philosophy, the removal of the clustering code from Community Edition simply implements the existing philosophy more explicitly. To be blunt, if your implementation is critical enough to require the 7×24 up-time an active-active, multi-node cluster provides, you should be able to justify an Enterprise Edition subscription. If you have high availability requirements but your rollout is relatively small or cost is an issue, perhaps Alfresco in the Cloud will be a fit.

Of the estimated 100,000+ installations of Community Edition currently up-and-running, my hunch is that this change affects only an infinitesimal fraction. But if you have feedback on this change, please do let your voice be heard, either here or by sending me email directly at jeff dot potts at alfresco dot com.

 

 

Screencasts of my favorite Alfresco 4.2 Community Edition features

I wrote up a list of some of my favorite new features in Alfresco 4.2 Community Edition in this blog post over at socialcontent.com. But I saved the best stuff for you, my loyal ecmarchitect.com reader: Screencasts showing those favorite features in action! Don’t worry, these are short and to the point. Hopefully just enough of a taste of each feature to get you to download Alfresco 4.2 Community Edition and try it out for yourself.

So without further ado, here are screencasts of my favorite new features in 4.2 Community (be sure to switch to full screen to enjoy their HD splendor)…

The new and improved Google Docs integration is very cool. I have a feeling this is going to be popular.

And how about that new Rich Media Gallery view in the document library? This is just one of multiple new document library views coming down the pike if I’m not mistaken. You can use the same extension points Ray used to create your own custom document library views.

There are a few new dashlets (Saved Search, Site Search, My Discussions) and some enhancements to existing dashlets (Image Preview, My Tasks).

Here’s one I’ve heard requested multiple times: Can I select multiple documents and download them as a zip? Boom. It’s in there. Another new document action is “Quick Share” which Alfresco in the Cloud users have been enjoying for some time. Now it’s available on-premise.

All of these screencasts were based on an October 8 nightly build using the binary installer. There may be some differences between what is shown here and what is in the final release.

So there you go folks. Download the new Community Edition release, try it out, and give us your feedback. I believe the plan is to have at least one more Community Edition release before DevCon. So you should definitely make it a point to try it out before you show up in Berlin or San Jose in November. That way you can slap these Engineers on the back for all of the great work they’ve put into this release!

The Public Alfresco API is Now Live: How to Get Started

At JavaOne this morning, Alfresco announced the general availability of the public Alfresco API. The public Alfresco API allows developers to create custom applications (desktop, mobile, or cloud) that persist content to Alfresco in the Cloud. The API includes CMIS plus some Alfresco REST calls that provide functionality CMIS does not cover.

Eventually, this public, versioned API will work against Alfresco in the Cloud as well as Alfresco running on-premise. For now, it is only for Alfresco in the Cloud, although the CMIS calls will work against both. (For example, on my flight to California I worked on an example using CMIS and my local repository. When I got to the hotel, I added in the OAuth authentication and my example worked against Alfresco in the Cloud).

To use the Alfresco API, all you have to do is become a registered developer at http://developer.alfresco.com. Once you’ve verified your email address, you can add applications to your profile. Each application has a unique authentication key and a secret. OAuth2 is used to handle authentication.

Once you have your authentication key and secret, you can start making calls against the API. Calls that hit the Alfresco REST part of the API return JSON. Calls that leverage CMIS return AtomPub XML. If you already know how to make CMIS calls, you already know how to use the Alfresco API–just grab the latest version of your favorite CMIS client, like OpenCMIS or cmislib, and pass in the authorization header. I believe you must use the 0.8.0-SNAPSHOT of OpenCMIS. If you are using cmislib, you’ll definitely need 0.5.1dev.

Here are some resources to help you get started:

If you want to discuss the public Alfresco API, use this forum and any of our other normal community channels like #alfresco on IRC or the Alfresco Technical Discussion Google Group.

Of course we’ll be talking about the API at DevCon in both Berlin and San Jose this November, so don’t forget to register!

Also, Peter Monks and I will be doing this month’s Tech Talk Live on the new API, so if you weren’t lucky enough to be in San Francisco for our session at JavaOne or our booth, you can catch the details there as well.