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'
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.®
- Internet Explorer
- Microsoft 365
- Microsoft Build
- Microsoft Edge
- Microsoft Office
- Microsoft Surface
- Microsoft Teams
- Office 365
- Patch Tuesday
- SQL Server
- Visual Studio
- Visual Studio Code
- Windows 10
- Windows 11
- Windows 7
- Windows 8
- Windows Server
- Windows Server 2003
- Windows Server 2008
- Windows Server 2012
- Windows Server 2013
- Windows Server 2016
- Windows XP
- Xbox 360