This is a pretty hefty blog, read on at your own will!
You might have heard recently that we are adding another string to our bow here at Mayfly Media by offering Sitecore as an alternative CMS offering. This doesn't mean we're moving away from Umbraco, far from it, we are as committed (if not more committed) than we've ever been to provisioning and supporting Umbraco based projects. Our decision to offer Sitecore is down to the number of enquiries that we receive from clients who demand an enterprise grade CMS.
From our perspective the skillsets to develop within Umbraco and Sitecore are so complimentary that Sitecore is such a natural fit within our team. We can use a lot of the methodologies, patterns and practises and code libraries (with a little tweaking) that we already use in our Umbraco projects directly on the Sitecore platform. So for us, the decision to offer Sitecore and to become a Sitecore agency is a bit of a no-brainer.
Once we made the decision, we had to start getting certified. This involves partaking in the Sitecore certification programme, a 4 day course with an exam at the end (and a pretty difficult exam to boot). So we wandered down to London and got cracking. Once the training started we started to realise what a powerful platform Sitecore is and we decided that one of the best ways for us to get the most of the 4 days was to try to rip apart Sitecore at the seams and throw all types of questions at the trainers; questions about:
- Things that we can already do in Umbraco, couldn't live without and are praying that are included in Sitecore
- Things that we really, really wish Umbraco could already do, but is missing from Umbraco's codebase
Yep that's right, we were the annoying attendees that sit at the back and ramble on about "Umbraco this…..", and "Umbraco that"............but we had a plan.
In short, we were amazed and blown away by Sitecore. Though we initially started taking these notes to compare Umbraco and Sitecore, as you'll see the list ended up being more of our very own wish list for the new Umbraco V4 roadmap. So, here we go, here's our guide to the key differences between the two CMS's.
Thing's that Sitecore can do and Umbraco can't (or are more of a challenge to do in Umbraco) include...
OOTB Sitecore is delivered with 3 databases. From a content perspective the two key databases are "Master" and "Web". Essentially "Master" stores all of the content and it is into this database that CMS user's save, edit and delete content. Think of it as the standard Umbraco database. The "Web" database stores only the published content. I'll say this again. The "Web" database does not include un-published content. As such, when publishing in Sitecore what we are really doing is deploying content to this database. What this means is that the front-end of the site (the important bit and the reason the website has been built in the first place) is only ever reading from and writing to a database that contains what it needs, and nothing else. Meaning:
- Smaller databases
- Faster application start times: Smaller database, means less data to join on and scan when re-generating the in memory content cache during application start
- A more secure architecture: Web database could be hosted on a DMZ
- Less risk of human / application error: A developer is never going to retrieve unpublished content, which is possible in Umbraco through the incorrect use of various API's).
- CDN: Due to the smaller size and isolation of the database, it's incredibly easy to set-up a servers to serve as a CDN
Though we can achieve in-line editing through Canvas mode in Umbraco it's more tricky (and more buggy) when are rendering content elements using macro's (rather than page fields directly added to templates). This is where Sitecore wins. Essentially, there are a number of methods available that allow the developer to "mark-up" areas in a Rendering (even in an XSLT rendering) that pertain to a given field in the underlying item. At run-time and when in the "Page Editor" mode Sitecore maps these areas to the given fields that sit underneath and hey presto we are able to edit them inline. That's right, page editing is available on any field, on any item in any type of rendering.
If we want a property in Umbraco to be validated in the content editor we have two choices, regular expressions and mandatory field validation. For the most part this works great. But what if I want to apply multiple validation rules to a field? Or I want to compare a property value to another property value on the same document (i.e. email address comparison)? Ok, so I could write the world's most complicated regular expression (this wouldn't help with the comparison though), and get 90% of the way there. But then there is the old adage to worry about - "if you have a problem that requires a regular expression, now you have two problems". And the error message you'll receive when the value is not valid is pretty bland "XYZ is invalid" - not very helpful when trying to explain to the user what is going wrong. Sitecore comes up trumps here. In Sitecore we can assign multiple validation rules to a field and we can also write our own validators. Easy peasy, problem solved.
Part 2 to follow...