Miguel de Icaza on his journey from open source to Microsoft: 'It's a different company'
'I feel vindicated (about) Mono... turns out that Java is the big problem'
Interview At Xamarin's Evolve conference in Orlando, I sat down with Miguel de Icaza, the initiator of both the GNOME desktop for Linux and the Mono open source version of Microsoft's .NET Framework. Miguel de Icaza co-founded Xamarin with Nat Friedman, who became CEO.
Xamarin, which provides tools for developing mobile applications for iOS and Android using Microsoft's C# language, based on Mono technology, was acquired by Microsoft in February 2016. As soon as the acquisition completed, Microsoft announced that the Xamarin SDK and tools would be open source and free to use.
What is it like coming to Microsoft, once perceived as a staunch opponent of the open source movement?
“It is a different organization,” says de Icaza. “The press, around early 2000, said this is the end of Microsoft, Windows is dead, open source is going to destroy them. Their immediate reaction was like an allergic reaction, very negative, and it created a culture that damaged for many years. Microsoft by being so opposed to open source ended up rebuilding things that the community was building, and meanwhile Google, Apple, Facebook, they were able to have their engineers solve different problems and just reuse solutions that existed. So yes, 15 years ago they were not very open source friendly, but the people that are now there are a different crowd.”
Despite these issues, de Icaza says that “The .NET team was always very supportive. We always had questions like, how does this work in .NET, and they said, it works this way, so they were always helpful.”
Do you feel vindicated that your investment in open source .NET is now something Microsoft has adopted?
“Most of the attacks on Mono really didn’t come from Microsoft, they came from the open source community. [Steve] Ballmer at one point said Linux is a cancer. That was enough for the open source community to run with it. There were all kinds of blogs popping up against Mono. So I feel more vindicated against those guys that were so set against Mono, that said, just do Java, Java is a safe path. Because now it turns out that Java is the big problem,” says de Icaza.
Miguel de Icaza, now responsible for engineering mobile development tools at Microsoft
What will you be doing at Microsoft?
“I keep running the engineering for Xamarin. It doesn’t change very much. My boss continues to be Nat Friedman [former Xamarin CEO]. The things that change a little bit is that now one of our goals is to help developers adopt Azure on their back end. We will add features to Xamarin Studio for ASP.NET, and deploy to Azure. In the past we were cloud-neutral,” he says.
Xamarin Studio is the Mac IDE for mobile development in C#. With ASP.NET support, might it become a kind of Visual Studio for the Mac?
“That is my ultimate goal,” says de Icaza, emphasising that these are his raw plans rather than an officially agreed roadmap. “We need to add project support for ASP.NET, Razor [the ASP.NET view engine], and a couple of other things. What I’ve asked the team, is to find a way of taking Visual Studio Code’s editing modes and capabilities and bring that into Xamarin Studio. So we’re researching that.”
Xamarin’s culture is very different from that of Microsoft, being that of a small and nimble business rather than an enterprise. Can that be preserved following the acquisition?
“Nobody is moving,” de Icaza tells me. “We have a big centre in San Francisco that is mostly marketing and sales, and engineering in Boston. We are not planning to move anyone to Redmond.
“The second piece is that we are staying under Nat, Nat reports to Scott Guthrie [Executive VP of Cloud and Enterprise], and we’re technically peers of the Visual Studio and .NET division. Visual Studio has its own cadence, our cadence is driven by when new versions of iOS and Android ship.
“Our goal is to help developers go mobile, and hopefully with Azure. What Scott told me was, your mandate is to give developers what they want and your space is mobile, so go make it happen.”
The challenge of working with Google and Apple
Android and iOS are third-party platforms. What is the relationship with Google and Apple and do you trust them not to skewer you with some change that you cannot work round?
“We’ve had relationship with both the Apple guys and the Google guys for a long time. We get advance access to the hardware, way before anybody knows it exists. When they were doing the new Apple TV, they came to us and said we need you guys to support this thing, on a need to know basis, and I couldn’t even tell Nat,” says de Icaza. “We also have a very good engineering team.”
“There are a lot of shared ideas there. Apple wants to go into the enterprise, C# is a fantastic language for the enterprise. iPad in the enterprise is a marriage made in heaven.”
What about Apple’s requirement that developers submit applications to its Store in bitcode, an intermediate format used by the LLVM compiler chain? Apple is making this mandatory for Apple Watch, and may do so for other versions of iOS?
“We’ve been generating bitcode for a long time,” says de Icaza, “and Mono has had support for LLVM for many years. The thing that makes the new bitcode requirement challenging is that we modified LLVM to support constructs that C or C++ don’t need, of which the most important one is this notion of implicit exceptions. C or C++ have this concept that an exception will be explicitly called out in the bitcode, but in .NET things can raise exceptions implicitly and we modified the bitcode to support them.”
Examples are what happens when you try to dereference a null pointer, or divide by zero. “In C++ it is just, we will crash. There is no concept of raising an exception. In Mono we catch the signal, then we unwind the stack. That support doesn’t exist in pure bitcode,” de Icaza explains.
“There are two things that we are doing. One is preparing a contribution so that we can get that support to the LLVM guys. But adoption will take time. So what we have to do in the meantime is add a mode where we make all of this implicit exception handling explicit. Right now it is in preview for iOS and TVOS.”
With Windows development in decline, can cross-platform pull C# back into the mainstream?
“I am certainly hoping,” says de Icaza. “We started Xamarin in 2011. We remember coming out with C# and some of the investors said, hmm, C# is dead, C# is legacy, the world has moved to HTML 5. And we found that there was a real thirst with developers to use a high level language which is better than Java and Objective-C. We saw our market grow from zero to hundreds of thousands of developers. I think C# is definitely growing. It is nice how much investment is still going into C# the language.”
Microsoft now has its own home-grown version of open source and cross-platform .NET, called .NET Core, overseen by the .NET Foundation, of which de Icaza is one of three directors. At some future point, might Mono and .NET Core be the same thing?
“We are trying to converge in as many places as possible, but it is not very easy,” de Icaza replies. “We have done the low-hanging fruit. We have replaced between 40 and 60 per cent. There are a lot of pieces that are difficult. I would like to take their engine if I could reduce memory usage. Eventually we will integrate those pieces.”
As we close, de Icaza mentions what he calls a “cute anecdote” to illustrate how Microsoft has changed. “Someone in the Azure team emailed us and said hey, we need you guys to do a release of Mono for this particular thing, we just need this bug fixing. We said what is this for, and they said, oh it’s running services on Azure. It’s nice to see that Microsoft is actually using Mono on Linux to power some services on Azure. Eventually they should move to .NET Core because .NET Core is way, way faster.”
It is early days, but talking with de Icaza raises the hope that Microsoft may not in fact crush Xamarin’s spirit. If the company can make this work, its ability to take .NET beyond Windows will be substantially enhanced.®