The templates in Umbraco are build with XSLT, with XSLT so you are very flexible to create your html. Umbraco supports also XSLT extension methods, so when you miss some functionality in XSLT you can create methods it in .NET and call them from your XSLT templates.
What’s also great about Umbraco is the event model, you can hook up at a lot of events and create your own logic. Hooking into these events is simply a matter of creating a .NET class that implements an interface.
What i haven’t mentioned yet is that Umbraco is licensed under the MIT license, so you can see and modify all the source code, but isn’t likely that you will change the source because it support mostly all features that are needed.
Richard Soeteman have given us Demo that includes most of aspects of Umbraco. First we did the installation of Umbraco. It’s very easy to install Umbraco, you only have to unzip Umbraco to the wwwroot and request the website and follow the configuration wizard. You can start with a empty Umbraco or with a starter kit.
In the demo we started with the starter kit Umbraco installation and we added also some packages that are needed for the demo, we modified some templates and created some usercontrols in Visual Studio and added them to Umbraco.
With this demo I get a good impression about Umbraco, Umbraco is very easy to use and to implement. So if your are searching for a open source .NET CMS, try it out at umbraco.org