Gerben van Diggelen
1-3-2016

Introduction to Umbraco by an Umbraco newbie

New at Axendo I have the pleasure of working and developing with the Umbraco content management system. With a background in designing custom made back offices I was completely new implementing open source CMS projects, and I therefore needed that update. Thus, as a fresh 'Umbracian' new at the open source CMS-business I spent a lot of time in the past weeks at exploring the breadths and depths of the Umbraco framework, getting acquainted with its possibilities. The most important finding? Umbraco's possibilities are vast! It is therefore that it would be helpful to not only keep this for myself, but to share some of my excitements with other new Umbracians in the same phase by highlighting some of Umbraco's facets that struck me. As a brief introduction. I will do this without delving into technical details, and I hope it will be both informing and enthusing to you. So, when you're on the same page continue reading and feel free to leave your comments!


1. Get, set, go!

Umbraco comes as a free CMS and is easy to deploy in both development and production environments. Distributed as a NuGet package and via the MS Web Platform Installer its set-up takes place rather easily. In addition to that it comes as a direct download as well providing some more flexibility at its deployment. All three options are rather straight forward, the installation process lets you decide to use your DBMS or automatic installation with LocalDB and the database architecture is automatically set up during installation. When ready, you meet the slick Umbraco Angular back end interface ready for website creation. Deploying Umbraco is remarkable efficient and easy, and does not require any sophisticated technical skills.


2. Building blocks for structured design

In many cases Umbraco is expected to produce web pages for us, and it provides the greatest flexibility on how these are managed, constructed, and presented. It lets the developer implement the internal architecture that fits best to the solution for the client. While it is a document, which we for now may call a web page, that is the primary concept and output of the CMS, these are constructed by other more foundational core-concepts: document types, data types and templates. Providing a 'separation of concerns' the template takes care of the visual presentation of the data, while the document type specifies what data must or can be included in this visual presentation. Data types specify what sorts of data can be used on a web-page, and Umbraco comes with a range of data types by default (varying from simple integer types to complex 'content editor' types) while allowing the developer to create one's own data types according to the purpose of the website or page. In their union thus a document is constructed which an editor can fill and publish to the website. Hence Umbraco does not force you into predefined or fixed schemes, but instead provides foundational building blocks that leaves much space and control on the websites data structure, content and presentation. It provides plenty of flexibility in order to build a solution that perfectly joins the requirements of the client.


3. A flexible and open framework

Umbraco is a framework in the first place, implying that it comes with basic functionality for all other features must be implemented with other modules. It is therefore that plugin (package) support is well developed, and the supply of commercial and free plugins is rather rich. The Umbraco organization itself comes with two commercial packages for workflow implementation and deployment control. Third party plugins are however available in a range of types and sizes such as SEO support, Umbraco configuration synchronization or forum additions, just to name a few. And when the sort of functionality is not available or does not comply to what you are looking for the option to create your own custom modules to integrate lies at hand, which is fully supported. I must put a critical note here however since Umbraco  on a regular bases releases new versions that may contain breaking changes. Unfortunately these changes can affect the third party plugins as well. So in cases you want to stay up to date with your Umbraco deployment you may want to rely on commercial plugins with better support. Needless to say, beyond specific plugin support Umbraco allows you to use any technique that is available for web development: any version of HTML, CSS, Bootstrap, jQuery, Angular, Knockout, you name it. Umbraco provides the foundation for creating technology rich, interconnected and up-to-date web solutions.


4. Microsoft web stack integration

As the CMS is developed in the Microsoft .NET framework its open character provides possibilities for extensive integration into the Microsoft web stack. Beginning with running in IIS and the support for SQL Server the foundations are laid for more advanced incorporation of MS solutions: the .NET reliance allows its full potential through the use of its rich class library or by creating your own libraries.

Umbraco has the support for .NET web forms and XSLT presentation, while in more recent times the Model-View-Controller design pattern has been adopted including the Razor view engine which can now be seen as the preferred option. Umbraco's objects can be accessed, created and modified via the Umbraco API that as a library fits well into the .NET framework, and Entity Framework can be mapped to Umbraco objects such as the member system. And all can be done in your Visual Studio as your familiar and favorite IDE. It is thus that Umbraco allows for integration and interaction with the framework, libraries, design patterns and IDEs that you are already familiar with.


5. User friendly access and editing

Content developers aside, you as a developer focus at scaffolding the web-application without having to engage with the specific content and data. Of course this also goes the other way around, you do not want to bother content creators with technical matters. Therefore Umbraco implements a user management section that allows the creation of user accounts and role assignment. By default it comes with several roles for users working with content, varying from writers to content managers who in addition to writing also can change the content structure and publish pages. Of course Umbraco also allows you to create custom roles to which a multiplicity of rights can be assigned. This role based usage of Umbraco does not only manage user rights, but also regulates the Umbraco interface so that the client or business user is not confronted with developer sections and technical terminology. What is seen are just the relevant content and the properties that are needed to be filled in with what needs to be there by utilizing Umbraco’s convenient content editors. Thus business users working with Umbraco only meet an elegant interface, uncluttered sections quipped according to their requirements and rich possibilities for content editing and decoration, without having to worry about matters 'under the hood'.


6. A vivid community

Umbraco is an open source project as it was released as such in 2004. The product being free and the source code publicly available led to an active and contributing community active in the development of the CMS (updates of the CMS come fast and functionality still expands), but also in its promotion and the support of fellow Umbracians on its support forums or on the instructive channel of Umbraco.TV. Withstanding the test of time our.umbraco.org now counts 55.000 registered users, while the Umbraco headquarters in Copenhagen annually organizes an event for developers to learn, find inspiration and to meet other fellow Umbracians. Thus, Umbraco is not simply a CMS, it is a community of web enthusiasts who want to share their creativity, effort and time all at creating a better web experience.


In sum…

I hope this blog has conveyed the deeper message that Umbraco stands for supporting and enriching both the development cycle and user experience, and that it is innovation that drives the Umbraco community to keep up with the newest technologies in order to constantly build a better product. While I realize that I may come across as overly lauding, I really am convinced that Umbraco does contribute to bridging the ‘gap’ between developers and end-users in all of the phases of the product-cycle. It is therefore that I will continue my Umbraco exploration, and I hope that this blog has transferred some of my enthusiasm to other Umbraco freshmen as well.