If there's one company that's benefiting from Microsoft's new strategic direction, it's Xamarin. In advance of today's launch of Xamarin 3.0, we visited Xamarin's new San Francisco offices to talk to CEO Nat Friedman about the new releases and the future of cross-platform application development.
Taking advantage of Microsoft's .NET framework, Xamarin's tools are designed to allow C# developers to build apps that run on iOS, Android and MacOS (and now on Google Glass and Amazon's Kindle Fire). Apps built using Xamarin's tools use the native UI controls for each OS, so they work the way users expect them to.
The strategy's working well, as Friedman notes, "The company is growing like a weed. We've now got tens of thousands of customers and multiple products, with our platform as the backbone."
Certainly the year since the launch of Xamarin 2.0 has been a productive one, with the beta of the company's Test Cloud (itself due to launch later this year) and the launch of its online mobile application development program, Xamarin University, which uses human tutors and small classes to train developers in how to build mobile apps.
That brings us to the launch of Xamarin 3.0. Friedman has high expectations for the new release, "Our last major release put us on the map. This is the first big release since then, with major new features in the product." Friedman describes the key new features as focusing on four "big areas."
The first new feature is a logical development of the Xamarin 2.0 release, completing the company's iOS tool chain by adding a visual designer to Xamarin's developer tools. The new designer, which Friedman proudly describes as "better than the XCode designer" will be available in Xamarin's own Xamarin Studio and in its Visual Studio plug-in. If you've used Visual Studio's XAML designer, you'll find Xamarin's tooling familiar, with a pixel-perfect rendering of your app's UI (including any custom controls you're using).
Friedman describes the second new feature as "the most significant". Certainly it's a big change in direction for Xamarin, the launch of its own set of UI controls, Xamarin Forms. Instead of creating separate user interface projects for each device you're targeting, you'll be able to use Xamarin Forms to share user interface code across all your devices -- not just back end code.
Xamarin will be delivering 40 controls, as well as a set of common layouts to speed up application development. While the controls have common code, they're still native, as Friedman points out. "There's no drawing, they're all native controls." He doesn't expect them to be used in all apps, saying, "Writing apps with 100% shared code has its place, it's for simple apps and for enterprise apps." Friedman expects consumer apps to still use native and custom controls.
You're not limited to using just Xamarin Forms for an app, you'll be able to mix them with native controls on a screen or on a sub-screen. You'll even be able to add Xamarin Forms controls to native UIs. It's easy to get started with Xamarin Forms, thanks to a simple set of APIs, which Friedman describes as being "very like working with WPF or Silverlight". That's going to be important for Windows developers, as Xamarin is also making its controls available for Windows and Windows Phone applications.
Friedman is very clear that this is not a step away from Xamarin's focus on native application development, "App performance has to be native, so we're using native APIs to drive this. It's an approach that matters in an enterprise app. [..] You need native access rather than the lowest common denominator." That means you'll get direct access to device features from Xamarin Forms controls, something that's important when using cameras for bar code scanning, or when using NFC for payments. It's important that there are no performance issues when using Xamarin Forms, and while there's a small penalty (of the order of milliseconds) when accessing back end code, Xamarin Forms themselves are as fast as working with a native control.
Xamarin Forms are also intended to take advantage of device UIs. If you use a tabbed page, for example, on an iPhone it'll render as an iOS tab-view, with the tabs on the bottom. On Android the tabs will be at the top, and on Windows Phone you'll get a scrollable Panorama control. That way users don't have to learn something that's at odds with their device's native metaphors. As Fried man says, "It's all about delivering good experiences to users."
Support for shared code
Friedman's third announcement follows on from Microsoft's BUILD launch of .NET shared code, the heart of its Universal apps. As part of Xamarin's improved relationship with Microsoft, it had early access to Microsoft's .NET roadmap, and that's led to support for shared code in Xamarin 3.0, as well as support for .NET's Portable Class Libraries. Friedman sees shared code as a good way of sharing assets in a single multi-device app, and PCLs as a way of sharing code between different apps (Xamarin Forms are distributed as a PCL). Support for shared code has also led to support for the .NET Framework's NuGet package manager in Xamarin Studio, making it easier to take advantage of the wider .NET ecosystem in Xamarin apps.
New designers and new ways of working with code need new tools, and Xamarin 3.0 includes upgrades to the core Xamarin Studio IDE as well as improvements to Xamarin's Visual Studio plug-in, now a single extension. Studio gets new icons, a new clearer welcome screen and improved workflows. And while it's not yet built on Microsoft's open sourced Roslyn .NET compiler, it does get support for the full set of .NET class libraries and improved IntelliSense for code completion. Developers interested in working with more than C# will get a pleasant surprise, as there's now also first class support for Microsoft's functional programming language F#. "It's an awesome paradigm for a lot of applications," Friedman told us, "So we're trying to get ahead, with programming and with devices."
Xamarin is also announcing that it's acquiring the Visual Studio group from Clarius Consulting. "They're experts on extending Visual Studio, consulting for the Fortune 500 and for Microsoft," Friedman says. The Clarius team will be focused on Xamarin's own Visual Studio tools.
The big picture
Friedman is pleased with what Xamarin has done with its new tools, and has big expectations, "I'm really excited to see what people do with Xamarin Forms and with an improved user experience in the new iOS designer."
He also sees this release as a sign of growth at Xamarin, "It's the result of a much more mature engineering process. The product is in really great shape."
There's a lot to the new Xamarin tools, but Friedman is also thinking about the big picture: why we need new tools for building mobile apps.
"Mobile is about your data and whatever device you're using," Friedman suggests, "It's not about shrinking desktop applications. There are shorter sessions, and different user contexts." That means designing apps that cache data aggressively and that can work offline.
It's a situation that's going to get more complex in the future, as Friedman notes, "Things get even more compressed on wearables. We'll be supporting more device types in the future, as our mobile vision is for all your devices."