Monday 25 June 2012

Errors everywhere - When Umbraco XSLT fails globally

I recently experienced a problem working on a large Umbraco site for a client where the site produced XSLT errors across the board, and none of the existing macros seemed to work.

It turned out that caching had been enabled on these macros, and that the app pool was recycled at some point during the night.

The Umbraco community is littered with examples of this error; a lot of them are in one particular post.

Tuesday 19 June 2012

Sitecore vs the world

In previous places of work, I've picked up skills from working with multiple content management systems. I've built websites using Drupal and Wordpress, but the main ones I've worked with have been built within EPiServer and Umbraco environments.

My latest experience however, has been working with the Sitecore environment.

For the purposes of this blog post, I'll talk a little bit about the three of them, and how they measure up to each other from a developer's point of view.

EPiServer
The majority of my work with EPiServer has been in V5.3 R2, and I discovered quite quickly that you can't use ASCX files as templates, which meant that we had to make our traffic drivers (slang for little bits of re-usable content across the site) implement ITrafficDriver (an interface we made up) just to know which ASCX file should be dynamically pulled in by the ASCX file's container ASPX page.

On the plus side, there's lots of help from people within the EPiServer community, and despite a little bit of waiting between responses, if there's a genuine big bug in the CMS, the support ticket system will get you heard by one of their staff in Sweden.

It also has geat access management, allowing you to reduce the visibility of bits of the content tree in the back-office to certain users.

I also found that it's really quite straight-forward to bolt extra bits of functionality onto EPiServer using custom modules that allowed me to create entirely new bits of the CMS (new content trees dynamically) using the API.

Umbraco
The great thing about Umbraco is that it's open-source and free. That's a massive boost to any small organisation. However, this free product comes at a price.

I was tasked with writing a wrapper CMS for the Umbraco CMS which would effectively encapsulate the underlying functionality, and obscure the back-office from users. This was because Umbraco couldn't do this, or multilingual stuff, by default.

The idea behind it was to ensure that users never saw the back-office, and so user permissions could be set to stop people viewing different parts of the content tree. This wasn't too difficult (although it was time-consuming and buggy) because there's great access to the entire Umbraco API.

However, you can't account for poorly written code, and version 4 (in any guise) of the Umbraco framework is poorly coded. Uncaught exceptions (empty catch blocks in try statements) and in-line SQL statements make for difficult code to read and debug.

Sitecore
My experience with SiteCore so far is very new. I've only been looking at it for a week, but I've already discovered the following benefits:

Package management in Sitecore's better
You can export templates, validation rules, content.. whatever you like! The process of doing this is simple, and the installer seems robust and facilitates pretty good deployment processes.

Better built-in support for logging within the UI
This is prettier (in my opinion) than EPiServer interface, and more reliable than Umbraco.

Handling of multiple databases for BIG sites
Sitecore has a tiny little drop-down icon that lets you choose between database environments. This can in turn allow you to publish content to multiple website environments from the same CMS. This struck me as pretty impressive, because it allows for better handling of load-balancing servers

Sitecore's very new to me, but I'm keen to learn more!