It’s been a busy week with evaluating content management systems, a whole lot of domain and server switching and the day job! It’s been a while since I delved into the world of content management systems for the web – I have used SharePoint a lot and would generally have looked to Umbraco outside of that, and maybe even ADXStudio Portals (using MS CRM).
But this time round I wanted to look at something based on ASP.NET MVC – I really like the way ASP.NET MVC works, and thought it was time I looked at what’s out there. The main project that has got my attention is Orchard CMS.
I know Umbraco is shifting its architecture to MVC in version 5, but its not been released yet (as far as I can tell). There’s also Atomic CMS, but on first inspection it doesn’t really suit my needs. So Orchard is what I’ve been really interested in!
Where to start?!
So Orchard is a fairly large project, sponsored (and largely developed) by Microsoft employee’s, but not supported by Microsoft itself!! It doesn’t have nearly as much of a user base as something like Umbraco or DotNetNuke, but its gaining popularity and making some very positive noises.
My first thoughts with Orchard CMS are that it’s clearly separating roles, such as the web designer / theme writer, the developer, the content editor etc. This is a really good thing, but to a degree is what we’ve come to expect from a good CMS. Another nice thing is that out of the box it’s very easy to set-up – whether you’re building from the source or using the web platform installer, it’s really easy and works very well. I also like the simple but useful choices such as existing SQL database, or SQL embedded SQL compact database, and also the option to use Visual Studio or Web Matrix. This is all great, and getting up and running with a decent set of templates is very easy.
The admin section is all very nicely set out, very easy to navigate and looks pretty modern and stylish. It also acts like you expect it to (i.e. when you click the back button, it goes back!!) – that’s one thing I always hated about Umbraco – it always feels like it’s hijacking your browser!
The clear focuses of the Orchard team has been around re-use, which isn’t a bad thing, but it does introduce a lot of complexity to the project, and a whole new language! Just in summary there’s Modules, Features, Content Types, Content Parts, Content Items, Content Fields, Drivers, Widgets, Zones, Placement, Layers, Shapes, UI Composition and so on. It is quite daunting when you first read the Basic Orchard Definitions (http://orchardproject.net/docs/Basic-Orchard-Concepts.ashx) page, and even afterward you’ll still be checking back to it for quite some time! For my money, this is where Umbraco shines – the basic concepts are easy to understand.
Probably the saving grace for Orchard is that practically everything comes with a default behaviour / template, and you just choose to override that template when and where you like. A lot of the challenge is finding the right template to override (Shape Tracing is really helpful), and doing it the right way! Being designed this way its extremely modular, and it means you only have to override what you want – but it is complicated to start with. Umbraco is definitely easier to pick up on this front, but once you start to understand Orchard, you start to see some really interesting possibilities!
I will say that Orchard makes heavy use of the Razor – so if you’ve not looked at this yet its time to start! I’m not going to get into Razor, but if you like ASP.NET MVC you’ll probably like Razor! There are some great tutorials on the Orchard website, for Razor and everything Orchard-like really.
So where next?
Up to now its been pretty much an evaluation for me – the outcome being that I’m going to rework my existing MVC website into Orchard. If you persist through all the bits that are hard to get your head around, you end up with this feeling that this project is really going somewhere, and has some real potential.
Hopefully it won’t take too long to rework my website into Orchard – I’ll write more about my experiences in a future posts.
EDIT: I was meant to post some links to an excellent series from Tony Johnson at deepcode.co.uk titled “Real World Orchard CMS”. They really are great, and give a good feel of the process of developing an Orchard CMS site:
Part 1: http://www.deepcode.co.uk/2011/05/real-world-orchard-cms-introduction.html
Part 2: http://www.deepcode.co.uk/2011/05/real-world-orchard-cms-part-2-creating.html
Part 3: http://www.deepcode.co.uk/2011/05/real-world-orchard-cms-part-3-creating.html
Part 4: http://www.deepcode.co.uk/2011/05/real-world-orchard-cms-part-4-cleaning.html
Part 5: http://www.deepcode.co.uk/2011/05/real-world-orchard-cms-part-5-caching.html
Part 6: http://www.deepcode.co.uk/2011/05/real-world-orchard-cmspart-6custom.html
Part 7: http://www.deepcode.co.uk/2011/06/real-world-orchard-cmspart-7finding.html