# Saturday, March 3, 2012
« Decompilation: dotPeek and ILSpy | Main | Building with Umbraco 5: Part 1: Develop... »

[This is one of a series of posts I am doing about my experience building a live site with Umbraco 5.]

If you’re one of the few people actually reading this blog, you know that I love Content Management Systems and that I’ve worked with a fair number of them. Last time, I recommended a fantastic CMS called Concrete 5.

“But”, you say, “I don’t know PHP. I’ve spent all my career in C# and .Net and I don’t want to learn yet another language ecosystem.”

[Soapbox: If you want my advice (hey it’s my blog right?), you should learn at least one new language every year. You don’t have to master a new language every year (good for you if you do!), but you should at least try. Not sure where to start? Why not order a sampler?]

Now I do learn new languages all the time. I am on sort of a functional kick right now and learning Ruby and F#. But I still prefer to code in C#, ASP.Net MVC. So when I took on the task of rebuilding IU’s Web & Multimedia Community website, I decided it was going to be in C#/.Net. Of course, a big factor that dictated this choice was that the current hosting environment where we generously were given free resources supports only ColdFusion and .Net. The current site is built with ColdFusion/Mach II, which I know nothing about and I didn’t want to go through the trouble of shifting providers, changing DNS entries, blah blah…not interesting. So .Net it is.


I tried several different free Web software, not all of them CMSes. I am not going to go into detail explaining all the issues I had with all of them, but here’s a quick run down of what I tried and how it felt:

DotNetNuke Community Edition
Developing with DNN made me understand what a developer’s hell might feel like. It’s clunky, it has an incomprehensible model and nothing makes sense. At first, I thought it was me, because I hate WebForms, so I had another dev who loves SharePoint (I know) try it out. After struggling for a week, even *he* could not understand how the hell one went about customizing anything. I cannot understand why this thing is so popular. Fail.

It’s not a CMS and is really just for blogging. That’s fine. I could have made this work because most of the stuff I needed on the community site had to do with publishing news and events. And the only reason I even tried it is because Phil Haack, who I have great respect for (I’ve never met him but I read his blog) is the main main on the project. However, I tried to install on SQLExpress using WebMatrix and it died with an error which I could not even comprehend. Fail.

I went to download this after I heard good things about it on StackOverflow. On N2’s front page, it says:

Using it's interface is intuitive and empowering. The developer story is something exquisite.

Wow, that sounds amazing. But then I looked at the screenshots and sadly, it doesn’t look intuitive and empowering to me at all. It just looks clunky. Perhaps the developer experience is fantastic, but if the CMS builder didn’t care about how their own site looked, visual design must be pretty low on the priority list, right? Fail.

This is a decent CMS and so long as you are willing to give your CMS create table perms and watch the number of tables explode as you install modules, you’ll do fine with it (Concrete 5 does the same). It has outstanding documentation for an open-source product (cuz MS is behind it I guess). But I find Orchard’s theming architecture to be needlessly complicated. MVC already has all the infrastructure one needs to create theming: layouts, sections, functions, helpers, partials…now I have to learn widgets, layers, zones, shapes, placement files? Yikes. Still, I am trying to build the .Net UG site with it, because I was able to download, install and start adding custom content in less than 5 minutes and also because I don’t care about doing custom development with it. I am going to simply download modules for whatever I need and so far it looks like this strategy will work. Pass.

Which brings me to Umbraco. The first time I tried Umbraco 5 was on #umbweekend, when Umbraco 5.0 was being put through the final touches before release. After I downloaded it, it didn’t work when I tried to install it without admin rights on SQL CE. But it worked just fine on SQL Express and the response I got on JabbR when I asked a couple of questions (very friendly and positive) made me want to continue.

I really struggled with Umbraco for the first couple of days. I just didn’t know where to start or what to do. There were no docs, no videos, no blog posts, no forum answers. I downloaded the source code, set it up in Visual Studio, stepped through it in the debugger line by line and really tried to understand it. The fact that Umbraco’s data model is really a meta-model doesn’t make things easy. After a couple of days, I had this weird feeling that I had lots of different pieces that were somehow waiting to be connected. It was very frustrating, I couldn’t sleep and all my brain kept thinking about was connecting these pieces. I even started dreaming about Umbraco code.

I was almost about to give up and that’s when I finally ran into CodeGarden 2011. I can’t remember exactly which presentation it was, (I think it was Deep Dive into Jupiter) but there was this one moment when *BAM* my confusion just disappeared and suddenly I knew what I had to do.

Since then, working with Umbraco has been, I am happy to report, just plain fun. Just a few hours of working with Umbraco convinced me that this will be the only .Net CMS I’ll need for a long time.

Now the people who build Umbraco are awesome and the product is great, but the documentation is really terrible, mostly because there’s only so much a small group of people can do. Since the Umbraco HQ decided to make March documentation month, I am going to do my part. This is part 1 in a series of posts I am going to do documenting my experience with building a technical community website in Umbraco 5. I am starting from scratch. I have no affiliation with Umbraco and never even tried it before v4, but I am an experienced MVC 3 developer and I have a few CMSes under my belt so this shouldn’t be too hard.

I assume you are primarily a developer that knows C# and ASP.NET MVC. I will try my best to link to concepts and resources as I go along but I won’t provide much explanation for things like Linq, Razor, or how C# dynamic objects work.

I haven’t figured out much about Umbraco – it’s a deep product (i.e. lots of deep thought has gone into it) so it will be a while before I understand significant parts of it, but I am sure there will always be first timers like myself who are struggling with Umbraco as I was. So I hope these blog posts will help someone.

Next time, I’ll talk about how to setup the development environment.

.net | cms | umbraco