In an industry known for seemingly endless debates about pretty much everything, the web vs. native debate seems to one of the more durable, sustainable ones, and a new round of opinion-sharing took place recently, so I thought I'd try to add some perspective here. I will talk about the role of Windows 8 later in this post , but first, let's just vet this recent round of "web vs. native" discourse. It seems to have flared up around TechCrunch Disrupt this past September, when Mark Zuckerberg attracted some attention with his comments on mobility, and web vs. native apps. For context, part of his discussion with Mike Arrington was about the role of mobility in Facebook's business, and the approach chosen for the app experience. At that point, Mark said:
"When I'm introspective about the last few years I think the biggest mistake that we made, as a company, is betting too much on HTML5 as opposed to native... because it just wasn't there. And it's not that HTML5 is bad. I'm actually, on long-term, really excited about it."
So before we go down this path, let's just set a little context around what "native" actually means, because it means a lot of different things depending on how & where you use it, and I want to be clear about how I'm using it in this post (and how I believe Mr. Zuckerberg used it in the discussion at Disrupt).
"Native app" is a term that's historically been used to refer to apps programmed directly to the native capabilities of the machine, so think of machine code, for instance, executed directly by the CPU. As of late, we've seen folks play a little fast & loose with the term "native", essentially using it as a catch-all term for "non-web". A definition that fits this use case might be that a native app is one that is device/platform/runtime specific or exposed to the full capabilities of the underlying application platform, regardless of how close to the metal it is. So for purposes of this discussion, I am going to take that same liberty here ...
Now, back to the Disrupt interview. So Mark says this, and a lot of people start scratching their heads, wondering if HTML5 is somehow getting knocked here, but this is actually pretty simple ... this is a statement about web apps vs. native apps (fast & loose definition applies), and his position was clear ... the best experiences on mobile devices remain native experiences. Then, on Sept 12th (the last day of Disrupt), Mashable ran this opposing-point-of-view headline: "Why Web Apps Will Crush Native Apps". See here. Not surprisingly, others then jumped into the fray, deriding the web vs. native debate as silly, probably best articulated by Jean-Louis Gassée (see here). For the record, I agree ... it is silly, and just another one of these "tyranny of the 'or'" discussions, which is why it's déjà vu all over again. As this debate has ebbed & flowed over the years, there seems to be this underlying quest for singularity ... the proverbial "write once, run anywhere" answer to the multi-device, multi-platform conundrum. I think the pros & cons of both native and web development have been well-chronicled, so I won't bore everyone with a retrospective of something that's been beaten to death on the internet for the last decade. But if you want more depth, there's always Bing. But I do want to come back to the HTML5 piece in particular ... what does this mean for HTML5? More importantly, what does this mean for the web developers who've bet on HTML5, who periodically hear an industry opinion leader like the founder of Facebook assert that native is the way to go if you want a first-class experience on mobile devices?
Well, one thing we all know by now is that people who use mobile devices use more than one, which means developers have a compound issue ... having your app on the multiple platforms that matter in the market for a device category, and having that app run across the multiple device categories being used by the customer you're trying to win. The reality is that many (if not most) user experiences will eventually be some combo of native and web, depending on the device, the context, the task at hand, the time available to complete the task, the reliability of the connection that's available, etc. Of all the reasons people are excited about HTML5, this is probably the frontrunner: people use a collection of different devices throughout the day, and you need to deliver an experience across all of them. So back to our question: if you've bet on HTML5, have you simply just bet on the "web" side of the "web vs. native" debate? No, you have not ... you can also go native, and that's where Windows 8 comes in ...
In Windows 8, HTML5 *is* a full-fledged application platform for building client apps (along with C++, C#/XAML, and VB). This means that if you know HTML5, you can come to Windows 8 and use those same skills to build native apps, in the sense I described earlier. And to be clear, HTML5 is indeed the path forward for web apps, and energy around HTML5 (see Mark's quote above ) continues to grow. The meta point here is that on Windows 8 you have the choice: if you're building in HTML5, you can build for the web and take advantage of HTML5 in IE10, along with hardware acceleration, site pinning, and full-screen experiences, or go native and take advantage of WinRT, which includes HTML5 as a first-class application platform, or build for the multi-screen scenarios that are increasingly becoming the norm. Either way, you can do great things with HTML5 when HTML5 is done right ... both in the browser and on the device itself.
The closing thought on all of this is that we shouldn't get suckered in by click-baiting headlines that depict the app dev equivalent of red states vs. blue states. It's great fodder for debate I suppose, but app experiences are all about the "and". When people (and by that, I mean regular people) talk about apps, they talk about PCs and phones and tablets and game consoles and cars and (increasingly) home appliances, and the list goes on and on. There's a bigger 'internet of things' discussion to be had later, but this is the reality of how people do stuff, both in and out of work, and these old, ongoing debates about this vs. that always seems to end in an impasse. The only difference now (as opposed to, say, 5-10 years ago) is that we get to impasse much faster, and in 140 characters.