WatersWorks

Blog archive

Mono for Macs

When I heard that Novel was set to unveil version 2.0 of its Mono Tools for Visual Studio, I was looking forward to chatting about the release with the manic Miguel de Icaza, original leader of the open-source Mono project, vice of Novell's Developer Platform group and super-fun interviewee. But Miguel was welcoming his first daughter into the world (¡felicitaciones!), so Mono product manager Joseph Hill pitched in for the briefing.

Hill is a former independent .NET developer/consultant and early Mono enthusiast, so he has an in-the-trenches perspective on the value of Mono. "As a .NET guy jumping into the middle of a Linux company, I've been able to say, here's what I think a Visual Studio developers are going to need to see to get interested in this." (BTW: It's Joseph not Joe, a preference with which I, as another guy saddled with a name made famous by someone else, sympathize.)

Mono, of course, is an open source implementation of the .NET Framework based on C# and the Common Language Runtime (CLR). Mono Tools for Visual Studio is a commercial add-in for the VS integrated development environment (IDE) designed to allow developers to write .NET apps for non-Windows platforms, including Linux, BSD and Solaris.

When Novell launched version 1.0 last November, the company focused on .NET developers targeting Linux, Hill said. "We created this module that would allow .NET developers to use familiar Visual Studio environments to design, code and maintain multi-platform applications," he said. "But what we were mainly interested in with 1.0 was getting them to Linux."

The 2.0 release expands the scope of the add-in to support VS developers targeting Mac OS X. It turns out, Hill says, that the developers Novell hears from who are interested in adding one more platform want that platform to be the Mac OS.

"We got a lot of flak for not creating a version that allows .NET developers to build and deploy for the Mac," Hill said. "As a Linux company, we're not exactly driven to enrich Apple's ecosystem, but as a company that likes to please developers, we really had to respond to the demand. Mac OS X really behaves more like Linux, so there's a pretty good chance that, if you make a .NET application Mono-compatible and it works on a Mac, it's probably just going to work on Linux as well."

This version of Mono Tools for Visual Studio also supports a relatively new debugging framework for Mono called the soft debugger. Unlike Mono's hard debugger, which takes control from the outside and acts as an all-knowing and controlling program, the soft debugger works cooperatively with Mono. Where the hard debugger can debug both managed and unmanaged applications, the soft debugger can debug only pure managed apps.

"The hard debugger is very powerful," Hill explained, "but the approach we took made it very Linux specific. It's one of the reasons that 1.0 didn't have support for the Mac. In fact, porting the debugger to Mac proved to be a very difficult process. Our engineers came up with a different approach that allows us to get the debugger running easily on any platform that Mono runs on. The soft debugger isn't as powerful as the hard debugger -- it can't stop the world and allow you to inspect everything -- but it debugs more kinds of applications and is generally more reliable."

This version of Mono Tools for Visual Studio also provides additional support for Windows. "This turns out to be a pretty big deal for guys who are developing something they want to be cross platform," Hill said. "It allows them to quickly test, debug and isolate issues on Windows; you couldn't do that in 1.0."

Mono Tools for Visual Studio 2.0 is available now.

Posted by John K. Waters on August 9, 2010