Slingboards Lab

Achieve a sense of fulfillment

We are building our mobile app with Xamarin.Forms

Sixteen months ago, I wrote on this blog that if a startup has to build a mobile application, the entrepreneurs should never go native. At the time, there were only three options for building a mobile application:

  • Build three different native applications: Native apps are specific to a given mobile platform and are built using the development tools and language that the respective platform supports (e.g., Xcode and Objective-C with Apple iOS, Eclipse and Java with Google Android, Microsoft Visual Studio and C# with Windows Phone).
  • Build an HTML5 application: HTML5 apps use standard web technologies—typically HTML5, JavaScript and CSS. This write-once-run-anywhere approach to mobile development creates cross-platform web page that work on multiple devices by mimicking the native user control behaviors.
  • Build an hybrid application: Hybrid apps make it possible to embed HTML5 apps inside a thin native container. Hybrid apps combine the best elements of HTML5 app but, unfortunately, they do not provide a native user experience.

Since last spring there is a new option:

  • Build native applications with Xamarin.Forms: With a C# shared codebase, Xamarin.Forms is a cross-platform development tools that enable to easily create user interfaces that can be shared across Android, iOS, and Windows Phone. The user interfaces are rendered using the native controls of each the platform, allowing to retain the appropriate look and feel for each platform.

xamarinThe option proposed by Xamarin seems very promising, especially since this company is not a newcomer. Xamarin was founded in 2009 by the instigators of the Mono project. Xamarin.Forms is the result of five years of work to build a cross-platform natively backed UI toolkit abstraction for mobile development. This is a serious player in the mobile arena. In fact, last week they held their annual conference in Atlanta. With over 1,200 registered developers, the event was not only sold out but also the largest cross-platform mobile development event.

Why all the interest about Xamarin? Probably because there is a growing awareness in the industry that when it's time to write a mobile app -- something interactive, not just a document with some hyperlinks, the Web is a second-class option. I was not surprised to read this week that Tim Bray lamented that the mobile apps are leaving Web work in the dust. The reality is quite simple, native rendering is important and the three major mobile platform vendors (Apple, Google and Microsoft) are embedding this feature in their proprietary operating system not in the open Web browser.

For those of you who follow this blog, you know that in recent months we have repositioned our startup and that we are currently building a personal task planner for smartphones. Following the above arguments for Xamarin, what development tools do you think we chose to build our mobile app? The very nature of a startup is that you have little money and need to be super fast on the market to validate your assumptions (and discover that you're wrong). On the other hand, because the apps are the natural structure for mobile experience, I think native rendering is mandatory. So there is only one logical choice. Do we think that everything will be perfect and really easy with Xamarin? No, but we are confident that in the next 12 months we will not regret our decision. Anyway, if Xamarin proves unsustainable and our product is a success, then we should have the resources to rewrite the application with another option.

Why Slingboard will be an hybrid app?

In this post, I explain why at Slingboards Lab (my new venture), we have decided to build an hybrid mobile app instead of a native or HTML5 app.

I said in the past and I will say it again: the tablet is a completely different platform than the PC and in this sense it has its own natural structure for UX experiences.

Each space has a natural structure, which is an organizing principle that helps people form a mental model of how they think about and navigate that space. Rooms are the structure of homes, neighborhoods and streets are fixed structure of cities, aisles are the structure for most stores, and Web pages are the structure for Web sites.

The natural structure for the PC experience was the desktop and accompanying folder/ file system. Influenced by notions of containment and place, this structure allowed people to traverse their personal file systems with ease. Within the PC platform, applications are often relegated to the role of a secondary actor. Files are the stars of the desktop experience, whereas applications are merely the tools that make files.

In contrast, within the tablet platform, applications are the star, making them a natural structure for mobile experiences. In fact, we can summarize the tablet experience as a list of “native” apps. Disappointing by its simplicity, this minimalist approach has proven effective. Tablet application marketplaces also reinforce the app as the natural structure for mobile experiences. A tablet platform’s value and popularity are largely attributed to the depth and breadth of its App Store portfolio.apps-ipad

Nowadays, the main challenge for organizations is to develop mobile applications. However, we no longer control the mobile platform in use. Tablets are provided by individuals according to their personal preferences. Some will bring Apple IOS devices such as the iPad while other will arrive with Microsoft windows 8 tablets or with Google Androids tablets such as the Amazon Fire. This diversification of mobile devices would not be a handicap if there was a single programming model to build native apps. Unfortunately, this is not the case. Native apps are specific to a given mobile platform and are built using the development tools and language that the respective platform supports (e.g., Xcode and Objective-C with Apple iOS, Eclipse and Java with Google Android).

If developers want to avoid writing three different mobile applications, an alternative is to rely on the open web and create HTML5 apps. HTML5 apps use standard web technologies—typically HTML5, JavaScript and CSS. This write-once-run-anywhere approach to mobile development creates cross-platform web page that work on multiple devices. While developers can create sophisticated apps with HTML5 and JavaScript alone, the vital limitations remain that this application is not visible as a native applications. The user must first start the browser application and navigate to a web pages to reach the application.

A third alternative is to create an hybrid apps. Hybrid apps make it possible to embed HTML5 apps inside a thin native container. Hybrid apps combine the best elements of native and HTML5 apps. With  the  rise  of  mobile  platforms, “native”  has  come  to  mean  an  experience  more  than  the  underlying language and runtime circumstances. That is, the new reality is that you don’t have to  write  an  application  in  Objective-C, Java or C# in order to have a native app.  With the appropriate container and a mix of CSS plus media query, the same Javascript application can target all the most important mobile platforms (Apple IOS, Google Android, Microsoft Windows 8).

So, if you are a young startup like Slingboards-Lab, should you go native, HTML5 or hybrid? Faced with this fundamental issue, I must acquiesce with Stephen Forte: A startup should never, ever, go native. The very nature of a startup is that you have little money and need to be super fast on the market to validate your assumptions (and discover that you're wrong). On the other hand, because the apps are the natural structure for mobile experience, I think opting for an HTML5 app is a mistake. So there is only one logical choice; the hybrid app.

This thinking explains why we have chosen to build Slingboards as an hybrid app. We are working hard and soon we will be able to share with you the results of our discovery. Stay tune.