Friday, 29 June 2012

Umbraco 4.7.2 on Linux

Hi again, with U5 abandoned, I have shifted my porting efforts over to the U 4.7.2 branch. I was really hoping to get something done by the end of Codegarden 12, but there was just way too much to do...

However, what I can say now is that I am pretty confident that we will be able to do a good port over to Linux. I have been working on this, and most of the code changes are pretty minor (or, looking back now seem minor) - but there are a fair number of them. In a nutshell, I have a got a partially working version now, and am working towards, let's say an alpha release. It is probably too early to share a version of the code b/c there are still a lot of errors, and it may end up frustrating people.

The good news: In the past two years, since I started on looking at porting Umbraco over to Linux, mono has developed by leaps and bounds - this is now making a successful port possible.

The bad news: Linux is case sensitive. There are a lot of minor changes to be done here, and some discipline to be had in the future in casing conventions. Mono does have the  MONO_IOMAP=all option - but this is too slow for any production system. Hence, all casing needs to be vetted for Linux. Mono offers some inspection tools but it is still work, lots of it, and requires consistency for future releases. I had hoped to have a univeral release of Umbraco but we will probably end up with two branches - one for Windows and another for Linux.

The small print: I have had success compiling Umbraco with mono 2.11.2 (using a parallel development environment), and forcing all assemblies to .NET 4.0. I have not had any success under .NET 3.5 - indeed with 3.5 you get a lot of resource not found errors (that are not case related).

The even smaller print: Other than case errors, I am at present dealing with some MYSQL errors, and other unspecified oddities (E.g. as you can get it in London: "The train is delayed, and the cause is unknown, and under investigation")

But the overall outlook remains optimistic. I will check in again.


  1. Sebastiaan Janssen12 July 2012 at 13:56

    Interesting stuff! I just don't understand the casing problems, is that file names? Anything that could be fixed in the core to make it easier?

  2. Hi Sebastiaan, yes it is file names. Ideally it would have to be done in the core. For example: in the code, a file is referenced as umbracoSpeechBubble.js, but the file system has UmbracoSpeechBubble.js. Windows does not mind this, but Linux will not find the referenced file. I am writing a tool that will automate the process for finding and resolving casing issues. Will post a summary of code changes I have made so far to the core 4.7.2 on Friday, here and on the forum . This should help out the core team as well. So far my progress in porting over to mono / Linux has been very encouraging. Cheers.