Maciej Grzyb Aug 24, 2018

It's a long time since Tim Berners-Lee in 1989 outlined his concept of a computer platform that could facilitate collaboration among researchers based in different parts of the world. A few years later, with the introduction of the visual-oriented web browser, the commercial possibilities became clear and the modern World Wide Web was born.

Since then it's been all about standing out and deliver the best services to your customers. Even though the web technology and aesthetics have had extreme improvements, some of the earliest web design techniques have persevered throughout the years. And the need to have effective web tools are still the same. In this post we'll look a bit more into the different tools for web page editing.

Different tools for web page editing

When setting up a website you can create a static webpage – a page programmed with HTML/CSS and maybe even some JavaScript. As with everything else, you want to improve and as soon as you publish your website, you will discover a need for a small change in the published text, an image or a heading.

That's the nature of the web. Your choices are either to learn how to code, buy consultant hours, or arrange things so that you (as a nontechnical user) can make the changes yourself.

  • First off, you don't want everyone to be able to make changes. To support that, we need some sort of authentication mechanism.
  • Next, we need a way to edit the text. Headings are going to be easy but the need for rich text soon arises. Getting rich text editing right is not easy. We need to decide on how to address pictures - do we require the pictures in exactly the right dimensions to be able to use them or should we scale and crop them upon upload. Where do we store the images?
  • Moving on, we need to tackle multilingual content, version history, approval workflow, different permissions for different editors, personalized content, hierarchical content structure, etc.

Yup, we are now building a Content Management System. As a developer I'm sure It would be a lot of fun to build one, but it does not make sense from a commercial perspective. The cheapest and easiest solution is to find a product that does a lot of the above for us and at the same time does not put too many constraints on what you can build on top of it.

What are your options?

So what are our options when it comes to supporting our web presence in regards to content creation?

Episerver CMS is a Microsoft .NET based CMS from Sweden with HQs both in the US and Stockholm. Episerver is a popular choice among Scandinavian enterprise customers. The software has a long history with the first .NET based version (EPiServer CMS 4.0) released in 2002 and a big rewrite/refactoring between versions 6 and 7. Episerver consistently appear in Gartner Magic Quadrants and Forrester Waves each year.

On a high level Episerver consist of three modules:

  • View mode - what the end users/visitors see when they visit the site.
  • Edit mode - what editors use to create/update content.
  • Admin mode - what the administrators/developers use to control various settings.

Episerver has many cool features:

  • View mode is a standard ASP.NET MVC application with some extensions that handle content routing, a bunch of APIs that can be used to access content, and templating extensions that make it easier to render the content from Razor views.
  • Code-first hierarchical content schema with support for custom data types (property types) allows you to create content structure adjusted to the needs of the website
  • Editorial experience automatically generated from the content model.
  • Content versioning, translations, versioning, etc. supported out of the box
  • Built in support for content personalization based on visitor group concept

As with anything else, there are also bad sides:

  • Edit mode is a Single Page Application built with Dojo Toolkit - a JavaScript framework first released in 2005. While functional it is not what one would expect from a web app in 2018. To be fair, the competition does not look much better.
  • All edit mode extensions (custom property editors, sidebar gadgets, etc must be built using Dojo Toolkit, which for developers used to modern libraries like React, Vue.js or even Angular is not an attractive development environment (this may change soon, I've heard).
  • Episerver supports and to some extend promotes so called on-page editorial experience (aka inline) which looks good when doing a demo and works well for simple sites. For more complex designs, it is hard to get it right and often requires extra work in the page markup. It can be time consuming and a bit frustrating.
  • Does not support .NET Core...yet. A lot of changes were done with Episerver CMS 11 that seem like a ground work for the transition to .NET Core.

Hosting
A CMS need to be hosted somewhere so your users can access the site. Episerver CMS supports it all but promotes the solution where they take full responsibility for the product, hosting, security and monitoring – Episerver DXC.

  • As a regular .NET application Episerver can be hosted on most Windows servers. It uses MS SQL Server as a persistence store and supports load balanced deployment.
  • Episerver supports cloud deployment to Microsoft Azure where it uses Azure SQL Server to store content and Azure Blob Storage to store media assets.
  • Episerver offers a managed hosting service based on Microsoft Azure cloud called Digital Experience Cloud (DXC). With DXC you get 3 Azure environments (integration, pre-production, and production), CloudFlare CDN, SendGrid, and NewRelic subscriptions all integrated and configured for you. A major drawback of DXC is that you don’t get direct access to Azure but rather must request the changes through support requests which can be tiresome. At the time of writing that includes production deployments too.

In case Episerver is not for every company and not every website requires Episerver. So, what are the alternatives? I'll mention just a few to give you an overview of the options.

  • Umbraco is an open source, .NET based CMS that has a lot of the same features as Episerver, hierarchical content schema, multilanguage content, approvals, media library, etc. It can run websites of any size, has a vibrant developer community, and is free. Edit mode is built as an Angular 1.x SPA and view mode is a standard ASP.NET MVC app. One of the cool features is a ContentGrid property type that makes it easy to create landing pages consisting of a series of sections.
  • If the website your customer needs is not really a website (an online store, a booking app, a self-service portal) but still needs editorial content like landing pages, a news section or a blog, a headless CMS might be a good option. Headless CMS is a system that only features back-office (editorial) UI and a content repository that exposes all the content over an API. Editors use the back-office UI to create content and later, the application uses the API to fetch is from the content repository and present to the end users/visitors. There are several products available on the market but Contentful, Prismic.io and recently Sanity.io are the ones that seem to capture the most attention.
  • Go for a static website but with content management twist. Static websites are awesome - they are fast, easy and cheap to host and easy to build. Their main drawback is that they are static (cannot be changed easily). Fortunately, there are tools that make it possible to "have your cake and eat it too". One such tool is Netlify CMS - an open source content management system that works with static site generators to enable user friendly editorial experience for static websites.

Remember how we started this post with a suggestion that you should not build the CMS yourself?

We still suggest that but be careful not to fall for a trap: “if all you have is a CMS everything looks like a page”. It is tempting to keep adding functionality to your CMS based app. You can easily get autogenerated back-office UI for all new content types and there are ways to create relations between them. You start creating content types that are not actual content, you create APIs that expose the data to other systems. The CMS is becoming the platform on which you build business logic. Often, it would be better to draw a line between the content management and other business functionalities that can be developed as separate applications or services.

In short - a Content Management System should focus on content management while other digital services should be developed within the concept of a digital platform.

Reach out to us and we'll support you both in your search for the best CMS option, but more importantly, how it fits within your own digital ecosystem.