Umbraco is one of only a few open source web content management systems built on Microsoft's .NET technology stack. This CMS is no "out the box" solution. To the contrary, it's a content management system for .NET web developers. And while it's relatively straightforward to use, one must first deal with a steep learning curve.
We took a close look at the latest version of Umbraco (v4.01) and here's what we found.
When getting started with Umbraco there are some key themes to keep in mind:
- A CMS for developers -- Empower web developers
- Steep learning curve -- Straight forward to use once you get over that learning curve
- Not an out of the box, modular solution -- Customized to meet your needs
- A framework for .NET web developers
Umbraco was not designed to be a plug-and-play solution like Drupal or Joomla. Niels Hartvig, the creator of Umbraco, tried to build a system that didn't limit him on what he could do and yet still pleased non-technical clients. That was seven years ago.
Today, Umbraco is one of the best known .NET open source web content management systems. Downloads of the CMS have grown 100% in the last six months, with over 7,500 downloads happening a week.
The recent event of the Microsoft Web Platform Installer (WPI) has proven a boon for Umbraco. It's currently listed as one of the most popular applications in the WPI gallery, with more than 36,000 downloads to date.
With the MS WPI you can easily get the CMS up and running. But once you get there, you've got some thinking and planning to do.
The Basic Story
|Product ||Umbraco v4.01|
|Product Category ||Web content management, simple web cms, web publishing|
|Typical Scenario ||basic websites, micro publishing websites|
|Bad Fit Scenario ||Enterprises that want enhanced workflow without adding 3rd party provider, organizations without a development team with some intermediate to advanced .NET programming skills. |
Company & Product History
The first version of Umbraco came out in 2001 and was built on ASP and COM. The first open source version arrived as a Beta 2 in October 2004 and was officially released in February 2005. That version was built on ASP.NET 1.1.
The Road to Open Source
Umbraco is the brain-child of Danish born Niels Hartvig. The original code was created to help him build web solutions for his clients -- back when he had a freelance consulting business. Foreshadowing the future path for the project, Hartvig would often allow Umbraco to be used for free by other freelancers with whom he shared an office.
Hartvig found that by allowing others to use Umbraco, he was getting really good feedback and suggestions for improvements that he may not have gotten otherwise. The decision to go open source was not strategic, according to Hartvig, it just "felt right".
Not Meant to be Plug-and-Play
As we have said, Umbraco is not an out of the box solution in the sense that you can install it and with some minimal configuration and customization away you go. No. There's a little more to using this web content management system than that. And that is the way Hartvig likes it. You see, he doesn't believe in plug and play solutions. To him, organizations tend to focus more on the tools and not as much on their needs.
Hartvig believes that modular OOTB solutions lead organizations to think they have a common language when they really don't.
He offered an example of a company saying they wanted a forum. The consultant knew that software x had a forum, so they implemented it and gave the customer, so what the consultant gave them was a forum: http://forum.umbraco.org.
Unfortunately all the company really wanted was a simple way to communicate with their customers. Hartvig says that we spend too much time focusing on the technology of content management and not enough about understanding and defining the needs.
Once the organization truly understands their needs, Umbraco is there to meet them.
A Small but Evolving Company
Hartvig quit his consulting business in 2007 to do Umbraco full-time. There are 2.5 people in the company -- active community member Per Ploug Hansen became a partner last year -- building the software and training people to use it.
The latest version -- 4.0.1 -- was released in March.
There's a really great story behind how Umbraco went from being a little solution to help with the consulting business to being one of the most popular downloads on the Microsoft Web Platform Installer, but we really want to get to the meat of this review.
Market & Pricing
Umbraco is not actively marketed, it has evolved naturally. When asked what the target market was for Umbraco, Hartvig said that it was hard to place because it is free. He says it is attractive to smaller projects, but it isn't plug and play like Drupal or Joomla.
Used by skilled freelances for small projects, Umbraco also supports some fairly big sites like heinz.com, deanfoods.com, wired.co.uk and naias.com.
Umbraco is open sourced licensed under the MIT open source license.
There are two versions of Umbraco, free and professional. Both versions have the same core product. Professional comes with additional options like support and tools. There are several flavors of the Professional version as described in the figure below.
Hartvig says that they hope 1% of their market will become customers by 2010, either as PRO subscribers or Umbraco.tv subscribers.
Pro subscribers get a couple of tools that are good to have:
Umbraco Courier: Courier enables you to easy move your website from a staging environment to production. You can do things like deploy an entire website, sync up content between environments or add new functionality to a staging server.
Umbraco Concierge: Concierge shows developers what's installed and what's in use in their Umbraco implementation. It also monitors action handlers and registered third party applications so you know what is interfacing with the Umbraco event model.
In addition to the Pro version, Umbraco also offers a subscription to Umbraco.tv, a website that contains over 6 hours of video tutorials that teach you the ins and outs of building Umbraco. There are videos for site builders, site developers, and soon, editors. New videos are added monthly and depending on the subscription you purchase, the videos are available for the iPod/iPhone.
Umbraco just came out with a new pricing model for Umbraco.tv: 19 EUR per month (~ US$ 25) for a single user personal license. This includes unlimited access to all the videos and source code to select videos. You can cancel the monthly subscription at any time. There's also a 12 month subscription for a single license and a business license. View the details here.
Key Features and Ratings
Umbraco is a Microsoft.NET solution. It runs on Microsoft Windows Server 2003 and up against SQL Server 2005 or VistaDB.
Built on the .NET framework 2.0 and using ASP.NET 2.0 and C#, Umbraco supports .NET Custom Control and .NET User Controls without having to do anything special. Controls are added to Umbraco using Macros. It fully supports ASP.NET Ajax using jQuery, Prototype, MooTools or another Ajax toolkit.
It also fully supports ASP.NET Master Pages. XSLT is used for generating dynamic lists.
You have full access to the Umbraco API which includes over 15,000 lines of code. The API is well documented. The event model for the content engine is also exposed allowing you to automate tasks based on the actions of content editors.
Designing Templates/Look and Feel
Umbraco does not have a custom template engine, so you do not have learn a new templating language in order to create websites. This is a plus in our opinion. The Umbraco team believes there are better tools already out there, tools that designers know well and are comfortable using.
For Umbraco, it's as easy as designing your website in your favorite tool like Adobe Dreamweaver, then cut and paste the HTML code into the Umbraco template editor (in the Back Office) and then in the spots where you want your Umbraco data, insert an Umbraco field and save. When a page is rendered using the template, the content is dynamically displayed.
Umbraco Templates -- Insert Page Field
Umbraco gives you 100% control over the design for your website. You don't need to worry about themes or skinning, the design can be anything you want. Hartvig believes that themes and skinning is often a sign of bad separation of content, functionality and presentation.
Modify vs Customize
Like any open source content management solution, you are able to modify the source. But like the Umbraco folks say, that's a big step to take and you run the risks of breaking future upgrades or breaking compatibility. Their motto instead is customize and extend, saying they have built every part of Umbraco to be extensible.
What About MVC?
Umbraco is heavily investigating the use of ASP.NET MVC -- Microsoft's newest framework for ASP.NET (see details here) -- as an alternative for the front-end website. Hartvig says that the current engine is very close to the MVC model now.
In Umbraco, the core or foundational concept is the Document Type.
Document Types describe the type of content that you can create in your website. Examples of Document Types include News Items, Articles, HomePage, SearchPage. Document Types are to Umbraco what content types are to another web cms and web pages are to another.
Document Types and IA
Understanding how Document Types work is the key to understanding Umbraco. Unfortunately, at first they are a bit confusing, because defining them is a mostly about modeling content but also a bit about the website's information architecture.
This blend of concepts and the related implications threw us for a little turn. However, if you can get these concepts under your belt, then the rest of the system is much easier to understand.
When you create Document Types you are also outlining the rough structure for the website's information architecture. Specifically, when you define a type, you must also specify where that type can live in the website's structure. Down the road, content authors and manager will not be able to over-ride this.
To put this differently, when you define the type you aren't exactly building the navigation, but you are placing limits on how the navigation can be defined.
In Umbraco, there's no delineation between content (like individual articles) and webpages (like HomePage or Article List page). You create Document Types for each type of content whether it's "real" content or a webpage with dynamic functionality and some metadata, etc. Hartvig says that this is a good thing and provides the flexibility needed when building a website.
In thinking about the blend of type definition and type usage it strikes us as a good model for small to mid-sized organizations with only one or a few authors and no "Editor" or "Administrator" to who controls the overall structure of the website. The initial system set up can be done by an expert and then the content managers can be left to their own devices and one need not fret that content instances will end up in the wrong place in the website.
For larger organizations it can also work, but if more powerful users want full control over the website's information hierarchies, they might find the blend of type and location to be a source of frustration.
Creating Document Types
Document Types are like SQL database tables. You create the Type and then assign a number of properties to it, indicating what the format of each property can be (text, rich text, drop down, etc) and if that property is required. This is pretty standard stuff for content management systems.
For example, an Article Document Type means that you can create one or more articles for your website.
Umbraco -- Creating a New Document Type
When you create a Document Type, you provide some basic information about it such as Name, Alias, Icon, thumbnail and description. The Icon is the image you see beside the content you create in the Content Section. The thumbnail gives you a quick view of what type of content you are creating when you create a new piece of content.
You can also indicate to have a template created automatically. All this does is create a template shell with the same name as the document type. You can actually have more than one template (view of the Document Type), but one is the default. The allowed templates section on the Info tab indicates which templates you can use for this Document Type.
Document Type Tabs
Sometimes you may have a lot of different properties for your content type. You can organize the way the content information is added by creating TABS for your document type. This is simply a way to organize the information you want to add without having everything listed on one single page. For example, you can have a tab for Core Content and one for MetaData.
You define the properties for your Document Type in the Generic Properties tab and assign a TAB those properties will appear on.
Umbraco -- Document Type Properties
The Structure Tab for a Document Type lists the Document Types already created. Here you select the type of Document Types that can be created as child nodes under your Document Type.
The structure is really the navigation for your site. If you create a HomePage Document Type, then you would probably allow all other Document Types to be created under it. But if you were creating a News Summary Page Document Type, you would probably only want a News Item Document Type to be created under it.
Umbraco's security model is easy to understand. There are two parts to it. First, you can easily create users and roles in Umbraco.
When you create a user, you set up all the basics such as username, password, email, default language and role. In Umbraco, a user is assigned to one role only. You select what sections within the Back Office the user has access to and you can automatically redirect the user to Canvas Editing on log in, thus restricting them from the Back Office completely.
Umbraco -- Creating a User
You can also restrict the area of content the user can work in by setting the Start Node in Content. If you set this node to something other than the top level, when the user logs in they only see the Content Navigation Tree from that Node down.
Umbraco -- Restricting Content Access
Creating User Types
There are several User Types created by default in Umbraco: Writer, Editor, Translator, Reviewer. For each role, you specify the permissions for that role.
Umbraco -- Creating a User Type
When a user is assigned to a specific User Type, their actions are limited to those set by the User Type:
Umbraco -- Limiting Permissions by User Type
You can also set user permissions on individual pages.
Umbraco -- Defining User Permissions
You also have the ability in Umbraco to create Members Only areas for your website. In the Members Section of the Back Office you can create Member Types like Basic, Silver and Gold, Member Groups and view the Members who are signed up.
You can full control here over how to format Membership.
To assign a section of your website as Members only, you right click on the particular section and select the Public Access Menu Item. You actually have two options here. The first is to assign a generic username and password to the selected content. The second to assign a Group or Groups.
Umbraco -- Role Based Access Control
Versioning of content entities is a core function of Umbraco. Every time you publish your content entity a new version is created and an audit trail is maintained. You can rollback to any version you want. There is no limit on the number of versions you have.
Umbraco -- Content Versions with Visual Differences
When viewing a version of the content, you can view the difference between the current version and an older one. Content marked in red will not be shown if the version to rollback to is selected, content marked in green is new.
Also using Umbraco's event model you can easily clean up old versions automatically, or you can use Umbraco's free tools.
Workflow is an interesting topic for Hartvig. He quotes James Robertson and Tony Byrne saying "workflow doesn't work in practice". That being said, you can implement workflow.
Out of the box, Umbraco includes the basics including the ability to restrict users and get notified on actions. Workflow is based on the permission model you set up in the Users section. For example, if you don't allow Writers to have Publish permissions, then the Writer only has the ability to Save or Save and Send for Approval:
Umbraco -- Simple Workflow Options
Note that the article has a little orange star, indicating it has not been published. As well, the right click menu does not offer the option to Publish, but to Send To Publish, which means sending for approval. There is also a button in the main window that you can click to send the article off for approval as well.
The system does not automatically send out workflow notifications. One must subscribe to specific system events in order for this to happen. You can do this on a Site level, Section Level or Page level. You can also select which types of changes you want notification on (see list below).
Umbraco -- Configuring Event Notifications
Notifications come by email:
Umbraco -- Email Notification Example
This is a fairly straightforward and basic approach to providing workflow for your content. In addition, the event model is exposed which is meant to enable third-party integrations (e.g., workflow systems, translation automation, etc.). In speaking with Niels, he generally discourages the use of workflow unless it is absolutely needed. With that said, there are cases where it is absolutely needed.
Umbraco ships with 15 languages for a localized back office user interface (UI). You can also add additional language if required.
The Umbraco UI text is stored in an XML file. This enables you to take a copy of the file and translate it for a new language. Once done, the language is automatically available.
Current languages include: English, French, Spanish (with variants), Dutch, Japanese, Chinese, Russian, Danish, Swedish, Norwegian and Greek.
There is a menu item on the Content Menu to Send to Translation. You must have a user assigned to the Translator role for this to work. This will send an email to the Translator.
Umbraco -- Send Content for Translation
Umbraco refers to their Administration site as the Back Office. In the Back Office you can do a number of things, depending on your role and permissions: Manage Content, Media, Users and Members.
You can also manage Settings like style sheets, templates, scripts, dictionary, languages, media types and document types. Finally, there's a developers section where you can do things like browse cache settings, manage data types, create and manage macros, packages, XSLT files and phyton files.
When you first log in, the opening dashboard is empty, but you are able to modify what is displayed in the dashboard through the use of dashboard controls.
These dashboard controls are basically .NET user controls that are added to the /config/dashboard.config file. There are a number of free community controls for things like New Content, Last Modified Content, Search, Viewing Log Files, etc.
You can even create tabs to organize your dashboard better.
Umbraco Back Office -- Main Dashboard
The content section is where your editors are going to live. Other than possibly the media section, it's the only section they will likely have access to. It's here that they can manage the website pages and content.
The tree structure in the left pane represents the structure of the website -- the navigation. To create a new page you can simply right-click on the navigation item where you want the new page to live (i.e click on Home to have it live under Home) and then fill in the sections in the main window.
Note that depending on how you set up the Document Type the new webpage is based on, there may be multiple tabs to complete. You can save your new webpage, Save and Publish or Preview it.
Umbraco -- Creating Content in the Back Office
When you create a new piece of content you can publish immediately or set a date sometime in the future. You can also set an archive date (Remove On).
In addition, you can change the default template that the content will be rendered in. Remember that you can only select a template that has been defined as allowed for that Document Type. These properties are automatic with every piece of content created.
Other options that can be added include hiding the page in navigation, setting up an Umbraco alias and set up redirects to another page. Again, these many of these are properties you have to set up.
The right-click menu in the Content Section gives you a number of options:
Umbraco Back Office -- Content Right Click Menu
One option is to Edit in Canvas. This options enables you to view the website and edit in context:
Umbraco -- Editing in Canvas Mode (In-context Editing)
External Blog Editor Integration
If you prefer to develop your content using an external editor, you can do that with Umbraco. Out of the box, Umbraco supports both Word 2007 and Windows Live Writer, but you can also use just about any blog editor that works with the MetaWeblog API.
There is a small catch to this capability and that is that you can only grant access to a specific section of your website using the Content Channels functionality.
Umbraco -- Setting Up a Content Channel
Content Channels are set up for Users. You can only have one content channel per user.
The start node indicates at what location this users articles will be published to. The description field is usually the bodytext part of the Document Type you are creating. This is the main part of the content and usually is associated with a rich text editor control.
It is this channel that you connect your blog editor or Word 2007 to. You can view current content in the section and add new content. Of course you don't have the ability to add the other properties that may be associated with the Document Type, like Metadata. For anything other than Description, you need to come into the Back Office and edit there.
The Media Section is where all your digital assets are stored. You organize this section any way you like. The types of media you can create are predefined in the Media Types under the Settings Section.
Umbraco -- Media Library
Usually you would give your writer access to the Media Library in addition to the Content Section.
When you want to add images or other things to a content page, you first can select from the Media Library. You also have the option of adding something new to the Library.
Umbraco -- Using Media Library
Social Media Capabilities
There is a blog package for Umbraco that includes all the typical blogging capabilities:
- Posts with paging and filter on category
- Comments (custom usercontrol)
- Datefolder Categories (using tag datatype)
- Archive (collapsable, only showing latest months)
- Latest comments
- Blogroll (using related links)
- Gravatar (global avatars)
Customizability & Integration
Umbraco is completely customizable to your needs and integration is something it does very well. You can extend it without modifying the source code. You can add new applications, new trees and new dashboards (shown in the right side of the back office website), new data sources and more. And you aren't limited to .NET systems.
There's a complete .NET API for manipulating Umbraco objects and a SOAP API.
In addition to integrating with Umbraco, you can also expose Umbraco data to other systems, such as a SharePoint WebPart displaying Umbraco content.
You can extend Umbraco by adding Macros that include .NET User Controls or .NET Custom Control.
Packages are bundled applications that add additional functionality to the CMS or your website. In the Developer's Section of Umbraco, you can upload new Packages. Umbraco offers a number of free packages including applications for collaboration, site utilities and more.
You can create your own package and view currently installed packages (you also remove installed packages from this section).
Creating your own Package enabled you to package up your site and related content and move it somewhere else, such as a Production environment.
Content Delivery Architecture
Umbraco supports caching by default. Caching is configurable, but you do not have access to 100% of the settings. All published content nodes are loaded in the Umbraco.config file and then into memory for faster access. Static files are cached by IIS and templates, xslt and user controls are cached using ASP.NET cache controls.
Umbraco has built in load-balancing support. It can scale from a web hosting solution to a web farm out of the box. DNS Round Robin and Hardware solutions are both supported in Umbraco as is using a High Availability Service. There is a ten minute video on Umbraco.tv that walks you through the process of setting up Umbraco for load balancing.
Umbraco can support up to 200,000 published pages (2 million published properties). It has been tested to scale to 830 page requests/second or 35 million Umbraco page views a month. (Wired.co.uk did extensive testing when they decided to go with Umbraco.)
Hartvig says Umbraco has been used in the same market as solutions like Ektron, Sitecore, and occasionally SharePoint (when used incorrectly). Sitecore and Ektron are suited for mid to larger enterprises.
Here's a summary table of the review (rating is 0.0-5.0 with 5.0 being the best):
|Product Core Technology||ASP.NET, IIS, Windows, AJAX||5.0|
|Content Entities||Document Types||4|
|Editorial Features||Dashboard, Notifications, Canvas Editing, RTE||4|
|Content Versioning||Unlimited versions, review and rollback||4|
|Content Workflow||Basic Workflow based on permissions and notifications||3.5|
|Multi-lingual Support||Supports multiple languages out of the box||4.5|
|Social Media Capabilities||Blogging Package||3.5|
|Security ||Basic, Single Role, Manage granular permissions||3.5|
|Content Delivery Architecture||Built in Load balancing, EC2, hosted or web farm||4|
Umbraco in some ways stands alone because of how it's been designed. It is not a plug and play solution and this is what many web content management systems strive for today. It's not enterprise level, although it may be used for very large websites.
The biggest drawbacks to Umbraco from an enterprise content management standpoint are with it's workflow and users. The workflow is very simple, and although you can hook in 3rd party workflow solutions, it would be nicer to see more flexibility out of the box.
In addition, a user can only have one User Type -- or Role -- assigned to them. In many cases a user may fulfill multiple roles for different content. It may be possible to extend Umbraco to allow multiple roles, but this capability should be out of the box as well.
Documentation, Documentation, Documentation
Simply stated, the Umbraco documentation is lacking in structure and focus.
There is a lot of documentation on the website, but some of it is for version three and not version 4 and it's hard to know what you are supposed to be looking at. There's no defined reading path for learning how to use Umbraco...unless of course you subscribe to Umbraco.tv.
Download and install this web content management system and you may take one look at what's there and get concerned. Umbraco.tv will take that concern away and is well worth the 19 EUR per month they are asking for.
That being said, there also needs to be some free documentation that helps you out as well -- in a well structured format.
The good news is that Umbraco will have a book out at the end of 2009/beginning of 2010, so developers and designers and probably end-users will have a much better idea of how this Web CMS really works.
Hartvig says that many of his community members say Umbraco is the best kept secret in web content management. This may likely to be true. You really don't get a good feel for the full capabilities that this solution has from looking at it. In some ways, we feel like we have just scratched the surface of what this Web CMS is all about.
Built for Designers and Developers
If you are looking for a web content management system that, once installed, your marketing team or non-technical users can use immediately, Umbraco is not for you.
Umbraco is really designed to be used by a developer or development team. They have a lot of work to do before the writers and editors of the website even get started. That's not a bad thing, just something to keep in mind as you consider this CMS.
Again, we feel we must mention the steep learning curve. This, we believe, is primarily related to understanding how the Document Types work. If you get that under your belt, then you are a long way along and can likely have a website up and running pretty quickly.
The Content Section where you create your content is very easy to work in -- a big plus for the non-technical users -- and if you have defined your content types properly, will be a breeze to use.
Our Final Take
Overall, we like the CMS that Niels has built. This is partly because there is a developer in us and partly because you can create your HTML design in any tool you want, and cut and paste it into Umbraco to get your website up quickly.
Another nice aspect is that if you're already a .NET developer, you don't have to learn new technologies or templating languages. As such a developer, you should be well versed in creating the .NET controls which, along with XSLT, are key to developing an Umbraco solution.
If you are a .NET-focused operation looking for a web content management system to create dynamic websites for your customers, we recommend taking a close look at Umbraco.