Wednesday, May 28, 2014

The curious case of the missing "management" in content management systems

In the past 20 years, a lot of Content Management Systems have seen the light of the world. No matter how you count them, pretty much everybody will agree that there are thousands of products that allow you to "manage content". Yet for all those CMSs, it is surprising how little management functionality actually exists in these systems.

If we talk about Content Management, we mainly mean the ability to create content and publish it to the web and other channels like mobile apps, POS, Google Glass or smart TVs. Your CMS will most likely also contain some form of sign-off workflow, although many of the simpler ones don't. For a CMS that can be used for global communication, some form of translation management might be included: the ability to write content in one language and eventually publish in others. (this typically includes workflow for a review process as well as some export/import functionality or calls to cloud APIs that handle the assignment to translation software and the humans – or machines – that perform the translation). But that is pretty much where the management part stops. So what else needs to be managed? Let's start by looking at what management means. Wikipedia tells us that
"Management in business and organizations is the function that coordinates the efforts of people to accomplish goals and objectives using available resources efficiently and effectively"
Google simply states that 

For instance, these days there is ample talk about content strategy. Is any CMS able to manage your content strategy? Do you have a CMS that even allows you to define a strategy? How about managing the creation and lifecycle of content? A CMS that manages a publishing calendar? Automatically assigns content to be written to the next available resource? Or a CMS that, based on the analytics of existing content and the stated goals of your website (or app) automatically creates new tasks for content that needs to be written?

Editorial Calendar App in Magnolia 5
Editorial Calendar App in Magnolia 5

Imagine a CMS that detects how 3% of your visitors are looking for "management self help" on your site, but no article exists to satisfy their need. Shouldn't it create a new item in your task box, or in your editorial calendar to ask for it to be written?

How about a CMS that realizes that a particular article isn't accessible anymore? Or that a certain SEO-heavy landing page uses outdated terminology? Shouldn't it notify you?

As you can see, once you start thinking about what could be done, you realize that Content Management still has a long way to go. Luckily, some systems allow you to add functionality in the form of modules or apps onto an open platform. It will be exciting to see the kind of "content management apps" we'll see in the future. What is the "management" part you miss most in today's content or experience management systems? Feel free to leave a comment or come to the Magnolia Conference 2014 and discuss your ideas with us.

Sign up in the upper right corner of this page now to never miss any of my blog posts.

Wednesday, May 21, 2014

Jackrabbit Oak – the revenge of the JCR API

First of all, congratulations to the Jackrabbit Oak team for making it to the 1.0 release. This is very exciting news for every vendor whose software is based on the JCR API (aka JCR-170) like the Magnolia CMS.

Jackrabbit Oak is the next generation content repository. Its goal is to be "a scalable and performant hierarchical content repository for use as the foundation of modern world-class web sites and other demanding content applications. The Oak effort is a part of the Apache Jackrabbit project. Apache Jackrabbit is a project of the Apache Software Foundation."

And "The implementation should provide more out-of-the-box functionality than typical NoSQL databases while achieving comparable levels of scalability and performance".

So in a nutshell it is a JCR implementation for a world of big data and user generated content, where the NoSQL approach to solving scalability issues has become the mantra of the current generation of web applications. Or in even less words: it brings the MongoDB to the JCR world.

Any vendor whose software uses the Jackrabbit JCR repository will be able to switch the implementation to Oak and gain a lot of interesting functionality, e.g. concurrent content updates. Unlike the original Jackrabbit implementation, which created search indexes automatically, in Oak administrators will need to create indexes just like they used to do in the old DB world. This has long been a demand from real world users, as this allows to fine tune performance to search queries used within your application and will boost performance of queries.

If Oak fulfills its promise, as I am sure it will, Magnolia will be able to reach a new level of scalability. It also means that everybody who claimed that JCR is dead did not fully understand the beauty of a standardized content repository API: the underlying implementation can be changed if needed. And that is exactly what happened.

Here is an architecture overview slide from Jukka Zitting (a fantastic developer whose only known fault is that he is working for the wrong company ;-)). Oak Documentation and Downloads available.

Magnolia will evaluate the status of Jackrabbit Oak in the coming weeks and we'll surely let you know about our findings in the Magnolia Dev Blog.

Friday, January 31, 2014

What does Magnolia do?

"So, what does your product do?"

That's a question that I get asked pretty frequently, and there are many different answers. I could answer "It is a Content Management System". But that is like saying a car is a horse - they are equal in the sense that both can get you from Paris to Basel. Yes, Magnolia is a CMS, and we are proud it is. But the difference between, say Google Sites (does it still exist?), FrontPage (does that still exist?), Typo3 (showing signs of re-animation!) and Magnolia are about as big as the differences between said horse and a car. So, not much is won by giving that answer.

I could also answer: "Magnolia allows you to manage an organization's online communication" – something I actually say fairly often. While it sounds nice, and is true, it doesn't really explain what the product actually does. But hey, it leaves a warm fuzzy feeling, especially if I tell the person asking which organizations actually do so – our customer list includes AlArabiya, Allianz, Atlassian, Airbus Group, Fitch Ratings, Foxtel, Generali, ING Bank, LOVEFiLM, Lloyds TSB Bank, Michelin Brazil, Migros, Nissan North America, Pirelli Tyre, Rewe Group, Shure, Sony, SEAT Germany, TeliaSonera, Thomas Cook, TUI, US Navy, Virgin America, Zumba Fitness.

So, this week when I had some time to try a different approach, this is what I came up with:

Magnolia is a server-based software written in Java that enables organizations to manage their digital, or “virtual”, presence. It allows organizations to integrate all of their systems of record, enrich these with custom content managed by Magnolia and publish the results to a multitude of channels. The result are typically highly interactive, e-commerce or e-service websites, mobile sites or apps, which allow users to learn about your offerings and conduct transactions.

Magnolia CMS Page Editing Screen showing a move operation

In essence, Magnolia is a web application that renders responses to user requests. The requests come in the form of http requests – typically, a link or a navigation item on a web page. When Magnolia receives the request for such a web page, it will query its repository and render the results, usually as another web page. In other words, in its simplest form, it behaves like any good old website.

Except that nobody needs good old websites anymore. For a start, the world has gone mobile, and it has gone multi-channel. So what used to be web pages can now be content for a native (or hybrid) mobile app or pretty much any format you can think of. XML, JSON, plain text, HTML – or any other format you wish to request can be generated with Magnolia thanks to its output-agnostic templating mechanism.
Magnolia CMS allows you to preview its output on multiple devices, or channels
The "response" part also isn't just a static "page" anymore. It could be snippets of information, reused by other services. It could be the result of a database query, or for that matter, simply anything that a computer program can request from anywhere on the planet and convert into output. For example, it could be the latest news on Al Arabiya, one of our customers who serves 70 Million visitors a month. Or it could be a list of available hotels at your dream holiday destination, as provided by our customer Thomas Cook.

To accommodate such a variety of content, Magnolia provides developers with a simple way to create input forms. In essence such forms define a data type, and provide a UI that allows content authors to update data. An author would for instance use Magnolia to create content in the form of web pages, articles, news items or event descriptions.

A typical Magnolia CMS dialog. Dialogs can be used to manage content, or to manage content about content – meta-content!

But it could just as well be that Magnolia users don't create content at all. A form could be used to determine which products will go on sale next week. Or to define which output channels shall deliver which content. In such cases the actual content resides outside of Magnolia, and Magnolia will render its response by asking third-party systems, taking into account the input that it has on shaping its query.

Magnolia also manages transactions. A user request could be to update a mobile plan like for our customer TeliaSonera. In that case Magnolia not only queries other systems (for instance for the available upgrade plans for a given user), it actually tells the system to update their data, too.

Which brings us to how Magnolia is typically used: as the hub for your organization’s digital marketing, services and commerce. Magnolia connects to all of your back-end systems, and assembles the response that it then delivers to any given output channel - mobile, web, apps, smart TV's, ebooks, points-of-sale, the Internet of things – anything. And it takes requests back to those systems, like "book me a room for 2 next weekend in Venice".

Magnolia CMS acts as a hub for your organizations communication.

To top it off, we at Magnolia believe content creation (or data manipulation, if you want) needs to work equally well on desktop and tablet computers. Which is why Magnolia is built as a collection of task-oriented Web apps that run inside Magnolia.

A cut-out from Magnolia CMS's launch screen, showing some apps you can use to manage content.

Each app typically has its own data type (we typically call them "content" types) and runs equally well on desktop and tablet computers. Such apps provide the user interface to interact with the content in question – the forms for input maintenance we mentioned earlier, but also the ability to search for content items, preview them on different channels, sort them or change their hierarchical order. Some apps provide image manipulation functionality, others the ability to search for broken links. Some may connect to SAP to enrich your marketing leads, or to Hybris to present a top seller on one of you landing pages.

Magnolia CMS runs perfectly well on an iPad, too.

An example of a Magnolia CMS app – in this case the Assets app, which allows you to do image manipulation right in your browser – on desktop and tablets (desktop version shown)

Whatever it is you wish to create in terms of a digital presence, a virtual store front, e-government or news channel, Magnolia is up to the task by providing an unparalleled open foundation to bring your unique business value to the web and beyond.

So, I hope you like my answer. It is still not comprehensive, and maybe a bit long, but I do think I have made an effort to add perspective.  Let me how you would describe Magnolia – and don't forget to subscribe to my updates by adding your email in the top right corner of this page. Thanks!