Umbraco 4.10.0 Release Candidate
Today we are proud to announce the long awaitedRelease Candidate of Umbraco 4.10.0, (also known as "The MVC Edition")!
There's an awesome, mind boggling,list of changesfor this version, including 65 bug fixesincluding 31 community contributions, a large portion of which were submitted during the recent Hackathon the day before theUmbraco UK Festival. Thank you everybody who has contributed (great or small), youabsolutely rock!
It's always fun to see that people start contributing when they find a little thing that has annoyed them for ages and finally decide to do something about it (I dida talk at the UK festshowing how easy it is to get involved if you have a similar annoyance!).
As I've mentioned before, this release has been in the works since CodeGarden 2012 and is a rather big one. This has unfortunately led to multiple delays because we wanted to be really sure that we could deliver the highest possible quality release for you.
To that end, we've done a few things to verify that we didn't break anything:
- Dogfooding - Internally, we've been building a few sites on the pre-release versions of 4.10.0, using WebForms, MVC and existing packages
- A nightly and beta release to get help from the community
- Upgrades of existing sites to see if everything still worked
- Installing the top 50 most popular packages and weeding out any problems that we might've caused in the core
Today, we are confident that we have a very solid release ready for you but we still want to give everyone a little time to verify that. So today we present the release candidate that will become the final release next Friday (November 9th) unless we find any major problems with it.
I can haz bugs
We're also very sure that we probably introduced a bug or two somewhere. Yes, bugs happen. We're working very hard to write solid unit tests for this and future releases so that we can see things starting to fail before we release, but the codebase is pretty old and hard to unit test at the moment. This is one of the major reasons that we decided to rewrite the request pipeline and make it testable.
Currently we have 434 passing unit tests in the 4.10.0 codebase (and having a little look at 6.0.0 reveals that there's 608 passing unit tests in that version). Progress!
To make sure that you don't have to beg us for new releases, we're going to actually open a patch branch as soon as the first bug is found. In the past we've posted an updated dll in the issue tracker, but that doesn't actually scale (what if there's 2 important fixes, which dll to use?). By actually actively committing to a patch branch, you can very easily upgrade to a nightly release after we fix a few things that are very important for you.
The two most important parts that we worked on for this version is the request pipeline and MVC support.
For the request pipeline we've had a helping hand fromStéphanewho has delivered an awesome contribution that should be celebrated.
Stéphane, like other people decided to scratch his own itch (so to speak). The request pipeline was something he was very unhappy about for ages and he couldn't stand it any longer. So after consulting with us he decided to make himself very happy and refactor it, the side effect is that it makes us also much happier! Everybody was completely avoiding any changes to the request module as it was such a spaghetti that a minor change would most likely have a huge impact.
Not only did Stéphane do an awesome job, he also managed to explain what he has done so that he's not the only one to understand it now, go read it here (it's human readable, not technical):
Yes, the rumors are true: Umbraco supports both WebForms and MVC. Fully, completely, in every way, shape and form. No compromises.
Everything you can do in WebForms, you can do with Umbraco.
Everything you can do in MVC, you can do with Umbraco.
Shannonhas been working on porting a lot of the v5 MVC support to Umbraco 4. This means that SurfaceControllers are back, razor helpers are back (and better than ever). Now, don't be scared, none of the complexity of v5 is back. Instead, working with MVC in v4 really is a breeze!
Actually, MVC support is the best documented feature of Umbraco we've ever released, currently the documents still live in Shannon's fork, but they will be merged into the documentation section of Our umbraco soon, go have a look if you want to use MVC in Umbraco:
Also Shannonhas done a few blog postsand Peter has also written upa MVC primeron this blog.
I can hear people scratching their head and thinking: does that mean you can only use MVC or WebForms, but not both?
No! You can actually use both! Let me explain.
In the UmbracoSettings.config file there's a new key caled defaultRenderEngine. If you set this to MVC and create a new template or create a new document type and tell it to also create a template for that, then it will create MVC views. If you leave defaultRenderEngine set to WebForms then you will always get masterpages instead of views.
However, if you already have a masterpage and decide that you actually would like to use MVC features you can just create a new file in the Views folder that has the same name as the masterpage. So if you have a Home.master, you can create a Home.cshtml.
Umbraco will then automatically pick that up and render the view instead of the masterPage.
So if you're the type of person that can't stand WebForms and want to move existing Umbraco sites over to MVC immediately you can use this hybrid form to have both for a while, until you move everything over to MVC.
Currently, Courier won't install correctly because it puts a slightly older version of log4net in the bin folder, so do not try to do a new install of Courier at this point. Upgrading a site that has Courier already installed should not be a problem at all.
Courier 2.7.3 also has a release candidate available that includes the new version of log4net and will install perfectly (look for builds 26 and higher!).
There's also a problem with formatting code in the code editor on IE9 and lower.
As always, please report issues inthe issue trackerand use the "Affected versions" field to set it to 4.10.0.