Cross Platform?

“Recently I have taken up porting various pieces of Open Source software written in C# to the Mono platform. Though a tedious process, it actually has many benefits for Mono.

The dictionary states that a porter is "a person stationed at a door or gate to admit or assist those entering". By porting software to Mono one performs an analogous task. Having a large number of free programs that run out-of-the-box on Mono will greatly assist those looking to migrate to Mono, either from Microsoft's platform or from a legacy platform.

Porting is also a critical part of the hunt for bugs. Many tricky uses of the .NET platform are hidden inside the projects on SourceForge and GotDotNet Workspaces. Most of the bugs are quick bugs with one line patches, but I would rather have the bug fixed in 1.0 so that end users need not touch Bugzilla.

Reciprocal benefits are also provided to the projects which are ported. Running on Mono will enable a project to reach a larger audience, and potentially new markets. I am also hoping that before the 1.0 release, we will create a set of Open Source applications to create a "kick start" kit, much like the sample applications Microsoft has put on their site. For a small project, this could provide an opportunity to show the community their work.

To receive these benefits, however, a project must demonstrate an effort to write code that is not Windows dependent. As an example, today I was trying to get dasBlog to compile on Mono. Getting it to compile was very easy, so I ran XSP. To my horror, I discovered that the designers of dasBlog had chosen to read information from the Windows registry. Sadly, the registry reading was inextricably linked into the heart of the code. I was forced to download a much older version of dasBlog to port.

Though most projects do not have such great obstacles to porting, they are by no means making it easy. Almost every project I have downloaded had some sort of case sensitivity problem when it accessed the file system.

In that spirit, I make a plea to the Open Source community: please, please, think about other platforms. In the end, making your software not run on Mono will just hurt both projects, helping no one. I realize for a Windows developer who has never programmed for Linux writing with compatibility in mind does not come naturally. If there is enough community demand, I would be happy to write some guidelines and pointers for software authors to ease this process.

I would also be interested in hearing from any projects that would like to be ported to the Mono platform. I would be happy to work with the members of any project, as long as they realize that working on Mono will require an active effort on their part to be cross-platform” [1]

I would have thought Clemens would know better than accessing the registry... tisk... tisk... Either way, just a reminder, it isn't that hard to restrict yourself to cross-platform functionality.

[1] Exploring. Ben Maurer. http://codeblogs.ximian.com/blogs/benm/archives/000059.html

No Comments