The bold promise of "write once, run anywhere" has been around for as long as I can remember. We've tried to skin this cat many ways over the years. When Windows 8 was coming into shape a few years back, Microsoft made it clear that its strategy for this bold promise was HTML5. Many other software vendors jumped on the HTML5 bandwagon, too. As far as HTML5 is concerned, we aren't a whole lot closer to "write once, run anywhere."
In fact, it's more like, write it once the really hard way with client side code, tweak the heck out of it to render consistently for three major browsers, and then run it anywhere -- as long as it's in the three major browsers, and you are okay with it running really slowly because it's running in the browser.
For years now, myself and many others in the app dev community have lamented that we really need cross-platforming tools that produce software that really looks, feels, and performs like native apps and targets every platform. Meaning, I want a drop-down box or checkbox list that includes the output platform from Visual Studio. One code base with separate projects in the Visual Studio solution for the UI layer, and then an option that lets you select all the output platforms before hitting F5. One solution where the Microsoft platforms such as WPF, ASP.NET, WinRT, HTML5, and Windows Phone would be included. But, it would also include all versions of iPad, iPhone, Blackberry, and the seemingly hundreds of varieties of Android. Wouldn't that be awesome?!
Then Xamarin came around. Well, it didn't just come around. Its genesis was in the genius of the Mono work that Miguel de Icaza did. Mono was an open source .NET project that ran on other platforms. I have not seen Miguel or talked to him since those days. He moved on to Novell to continue the work, and the short story is that it has evolved into the Xamarin product of today.
With Xamarin, you can build and platform to Windows or iOS and do it from Visual Studio using C#! And the applications you build look, feel and behave like native apps. I know. My company uses Xamarin for cross-platform development. Currently, the only real drawback is that its licensing is too expensive and it's missing a number of platforms. And people like me have been saying, "We really need Microsoft to build cross platform end-to-end for the entire lifecycle from design to development to testing to staging and all and in between, or we need Microsoft to acquire Xamarin and take cross-platform to its bold potential."
As I write this, the web is on fire with Microsoft and Xamarin speculations. A writer I really respect, Kevin McLaughlin of CRN, seemed to break this story "Sources: Microsoft In Talks To Acquire Mobile App Development Startup Xamarin." And sure enough, I can't finish this little editorial because I keep getting interrupted with texts and emails with speculations that basically have the same message, "Huckaby, what you have been whining about seems to be coming true!" Interestingly enough, right after Kevin McLaughlin wrote his story, Miguel de Icaza himself tweeted, "Working together with Microsoft's .NET team in the last four months has been an absolute delight. So excited about the future."
Working together with Microsoft's .NET team in the last four months has been an absolute delight. So excited about the future.— Miguel de Icaza (@migueldeicaza) March 17, 2014
This is better than reality TV. It's a cross-platform docu-drama!
And it is exciting. It's exciting because of the potential of using Visual Studio and .NET to build apps for every platform. And if it actually does come true, I won't be surprised. Because as I wrote last month, Microsoft's new CEO, Satya Nadella "gets it." So does his right hand man, Scott Guthrie.
And Satya and Scott: If you do read this, we also need Silverlight 6 for all platforms. And an end-to-end office suite that runs on iPad would be nice, too. And yes, we can all impatiently wait until the Build conference a couple weeks from now for these huge announcements.