I’ve posted in this spot before about some of the annoyances of working with DotNetNuke. DNN taught me the value of a good content-driven web site framework, but its general clunky feel was making me crazy. There had to be something better.
My local ASP.NET user group announced earlier this year that they were bringing Niels Hartvig in from Denmark to expound on Umbraco, the open source CMS system that his company has gestated over the past several years. So I downloaded and played with Umbraco a bit, and armed with some initial good impressions, attended Niels’ talk. It was very worthwhile, unlike most dog-and-pony shows.
[Niels told me that ‘Umbraco’ refers to essentially a nuts and bolts metaphor — it’s a word for a hex screw like you’d drive with an allen wrench. But the spelling turned out to be very close to a trademark used by another company and so the nuts-and-bolts logo has passed away and officially, ‘Umbraco’ is “just a trade name”.]
One of the key differences between Umbraco and DNN is that DNN requires that your user controls inherit from DNN classes. This means that you tend to end up with gigantic solutions that include references to the DNN core, just to crank out user controls. In my experience these solutions tend to be fragile and cranky, too, sort of like me on a bad day. At least in the DNN 3.x / VS 2003 environment I have experience with, I’m constantly removing / re-adding references to fix bizarre problems, manually copying DLLs to /bin, etc.
With Umbraco on the other hand you can drop in any arbitrary user control and while you *can* write integration code to Umbraco you don’t *need* to. Umbraco’s clever use of reflection means that you can even do some integration (by exposing public properties and selectively assigning values to them in the Umbraco admin UI) without causing the controls to break when used outside the Umbraco environment. And, since all Umbraco needs is the ascx and the dll for each control, your projects don’t have to be tangled up with Umbraco projects. Even when you use the Umbraco API, you just need a reference to the Umbraco DLLs.
It’s this kind of flexibility, simplicity, clean design and attention to detail that impressed me from the start about Umbraco. While I recognize that DNN is geared to a somewhat different use case than Umbraco (membership-driven portals), DNN still feels like something that evolved on the fly without a lot of forethought, and fixed in various ways as issues came up. Umbraco on the other hand feels like something put together after some careful advance thought and feels right “from the ground up”. For most of the web sites / applications I do, Umbraco would be a wonderful foundation.
Another advantage over DNN would have been so welcome in the DNN project I’ve been laboring with lately: Umbraco is much more unobtrusive than DNN. By this I mean, DNN assumes it’s going to be in total control of everything and so it is relatively challenging to bolt it on to an existing site in such a way that legacy and DNN code coexist peacefully. Umbraco on the other hand is designed to coexist peacefully with whatever else you are using.
Another nice Umbraco advantage is that it seems to be on a more leisurely release schedule with major new releases a year or two apart and a great deal of attention paid to smooth and easy upgrades. This contrasts with DNN’s penchant for breaking changes and frequent tricky updates.
Umbraco has a couple of downsides. First, documentation is somewhat thin, and slightly dated, especially with the immanent release of version 3.0. It also has the uneven flow of prose written by someone for whom English is not a mother tongue. More documentation and a training DVD are promised later this summer.
Although Umbraco drives over 20,000 sites worldwide, much of that adoption has been in Europe and it’s just catching on here in the US. This means that there are not nearly as many free-to-inexpensive add-ons and plugins available compared to DNN. But this situation will change dramatically in the next 12 months. And some of the plugins already available are mind-blowing. Niels put together a blog (compatible with WordPress skins) in about five minutes, as we watched, gape-jawed.
One other thing: Umbraco is blindingly fast. Between that and its “AJAX-y” look, you’d almost think you were using a desktop app. The entire web site (or at least those parts you chose to manage with Umbraco) is kept in memory as a giant XML document. Compare this to DNN’s grinding slowness. (In fairness to DNN, the 4.x release series that I haven’t yet worked with, had considerable attention to performance tuning and is said to be much better).
I already have a client drooling about what Umbraco brings to the table for their next project; I’ll hopefully be posting more about this great product in coming months.
{ 2 comments… read them below or add one }
Bob… as usual, you have an uncanny ability to sift down to the pragmatic essentials and report them with fluency and seeming ease (and I have observed many prior instances of this). I wish we lived in a world where YOU might write documentation for Umbraco!
Bob responds: Thanks for the kind words! Who knows … if I end up doing enough work with Umbraco, as I hope, maybe I will!
Hi Bob! Thank you for your review – it’s spot on. Both on a great evening and problems with documentation. As I mentioned I was on my way to Louisville to a US umbraco retreat to meet the most experienced umbraco users here (we’ll be together for 3 days).
One of the things that came up on this first day, was documentation. So we made a documentation system for umbraco (that’ll go on the coming website), where anyone can create a “book” and do documentation on specific topics – infact editing the books directly from microsoft word (like I showed on the meetup). We’re currently eight people sitting writing the first “books”.
So, mate – welcome to a world of cms that so friendly, that there’s actually people who will compensate for my bad English. I hope you’ll stick around :-)