Skip to content →

Tag: open standards

Web vs native

imageWhen Steve Jobs first launched the iPhone in 2007, Apple’s perception of where the smartphone application market would move was in the direction of web applications. The reasons for this are obvious: people are familiar with how to build web pages and applications, and it simplifies application delivery.

Yet in under a year, Apple changed course, shifting the focus of iPhone development from web applications to building native applications custom-built (by definition) for the iPhone’s operating system and hardware. While I suspect part of the reason this was done was to lock-in developers, the main reason was certainly the inadequacy of available browser/web technology. While we can debate the former, the latter is just plain obvious. In 2007, the state of web development was relatively primitive relative to today. There was no credible HTML5 support. Javascript performance was paltry. There was no real way for web applications to access local resources/hardware capabilities. Simply put, it was probably too difficult for Apple to kludge together an application development platform based solely on open web technologies which would get the sort of performance and functionality Apple wanted.

But, that was four years ago, and web technology has come a long way. Combine that with the tech commentator-sphere’s obsession with hyping up a rivalry between “native vs HTML5 app development”, and it begs the question: will the future of application development be HTML5 applications or native?

There are a lot of “moving parts” in a question like this, but I believe the question itself is a red herring. Enhancements to browser performance and the new capabilities that HTML5 will bring like offline storage, a canvas for direct graphic manipulation, and tools to access the file system, mean, at least to this tech blogger, that “HTML5 applications” are not distinct from native applications at all, they are simply native applications that you access through the internet. Its not a different technology vector – it’s just a different form of delivery.

Critics of this idea may cite that the performance and interface capabilities of browser-based applications lag far behind those of “traditional” native applications, and thus they will always be distinct. And, as of today, they are correct. However, this discounts a few things:

  • Browser performance and browser-based application design are improving at a rapid rate, in no small part because of the combination of competition between different browsers and the fact that much of the code for these browsers is open source. There will probably always be a gap between browser-based apps and native, but I believe this gap will continue to narrow to the point where, for many applications, it simply won’t be a deal-breaker anymore.
  • History shows that cross-platform portability and ease of development can trump performance gaps. Once upon a time, all developers worth their salt coded in low level machine language. But this was a nightmare – it was difficult to do simple things like showing text on a screen, and the code written only worked on specific chips and operating systems and hardware configurations. I learned C which helped to abstract a lot of that away, and, keeping with the trend of moving towards more portability and abstraction, the mobile/web developers of today develop with tools (Python, Objective C, Ruby, Java, Javascript, etc) which make C look pretty low-level and hard to work with. Each level of abstraction adds a performance penalty, but that has hardly stopped developers from embracing them, and I feel the same will be true of “HTML5”.
  • Huge platform economic advantages. There are three huge advantages today to HTML5 development over “traditional native app development”. The first is the ability to have essentially the same application run across any device which supports a browser. Granted, there are performance and user experience issues with this approach, but when you’re a startup or even a corporate project with limited resources, being able to get wide distribution for earlier products is a huge advantage. The second is that HTML5 as a platform lacks the control/economic baggage that iOS and even Android have where distribution is controlled and “taxed” (30% to Apple/Google for an app download, 30% cut of digital goods purchases). I mean, what other reason does Amazon have to move its Kindle application off of the iOS native path and into HTML5 territory? The third is that web applications do not require the latest and greatest hardware to perform amazing feats. Because these apps are fundamentally browser-based, using the internet to connect to a server-based/cloud-based application allows even “dumb devices” to do amazing things by outsourcing some of that work to another system. The combination of these three makes it easier to build new applications and services and make money off of them – which will ultimately lead to more and better applications and services for the “HTML5 ecosystem.”

Given Google’s strategic interest in the web as an open development platform, its no small wonder that they have pushed this concept the furthest. Not only are they working on a project called Native Client to let users achieve “native performance” with the browser, they’ve built an entire operating system centered entirely around the browser, Chrome OS, and were the first to build a major web application store, the Chrome Web Store to help with application discovery.

While it remains to be seen if any of these initiatives will end up successful, this is definitely a compelling view of how the technology ecosystem evolves, and, putting on my forward-thinking cap on, I would not be surprised if:

  1. The major operating systems became more ChromeOS-like over time. Mac OS’s dashboard widgets and Windows 7’s gadgets are already basically HTML5 mini-apps, and Microsoft has publicly stated that Windows 8 will support HTML5-based application development. I think this is a sign of things to come as the web platform evolves and matures.
  2. Continued focus on browser performance may lead to new devices/browsers focused on HTML5 applications. In the 1990s/2000s, there was a ton of attention focused on building Java accelerators in hardware/chips and software platforms who’s main function was to run Java. While Java did not take over the world the way its supporters had thought, I wouldn’t be surprised to see a similar explosion just over the horizon focused on HTML5/Javascript performance – maybe even HTML5 optimized chips/accelerators, additional ChromeOS-like platforms, and potentially browsers optimized to run just HTML5 games or enterprise applications?
  3. Web application discovery will become far more important. The one big weakness as it stands today for HTML5 is application discovery. Its still far easier to discover a native mobile app using the iTunes App Store or the Android Market than it is to find a good HTML5 app. But, as platform matures and the platform economics shift, new application stores/recommendation engines/syndication platforms will become increasingly critical.

I can’t wait :-).

(Image credit – iPhone SDK)

22 Comments

Linux: Go Custom or Go Home

In a post I wrote a few weeks ago about why I prefer the Google approach to Apple’s, I briefly touched on what I thought was one of the most powerful aspects of Android, and something I don’t think is covered enough when people discuss the iPhone vs Android battle:

With Google[’s open platform strategy], you enable many suppliers (Samsung, HTC, and Motorola for starters in the high-end Android device world, Sony and Logitech in Google TV) to compete with one another and offer their own variations on hardware, software, services, and silicon. This allows companies like Cisco to create a tablet focused on enterprise needs like the Cius using Android, something which the more restrictive nature of Apple’s development platform makes impossible (unless Apple creates its own), or researchers at the MIT Media lab to create an interesting telemedicine optometry solution.

imageTo me, the most compelling reason to favor a Linux/Android approach is this customizability. Too often, I see people in the Linux/Android community focus on the lack of software licensing costs or emphasize a high-end feature or the ability to emulate some Windows/Mac OS/iOS feature.

But, while those things are important, the real power of Android/Linux is to go where Microsoft and Apple cannot. As wealthy as Microsoft and Apple are, even they can’t possibly create solutions for every single device and use case. iOS may work well for a general phone/tablet like the iPhone and iPad, but what about phones targeted for the visually impaired? What about tablets which can do home automation? Windows might work great for a standard office computer, but what about the needs of scientists? Or students? The simple fact of the matter is neither company has the resources to chase down every single use case and, even if they did, many of these use cases are too niche for them to ever justify investment.

Linux/Android, on the other hand? The open source nature allows for customization (which others can then borrow for still other forms of customization) to meet a market’s (or partner’s) needs. The lack of software licensing costs means that the sales needed to justify an investment goes down. Take some recent, relatively high-profile examples:

Now, none of these are silver bullets which will drive 100% Linux adoption – but they convey the power of the open platform approach. Which leads me to this, potentially provocative conclusion: the real opportunity for Android/Linux (and the real chance to win) is not as a replacement for a generic Windows or Mac OS install, but as a path to highly customized applications.

Now I can already hear the Apple/GNOME contingent disagreeing with me because of the importance of user experience. And, don’t get me wrong, user experience is important and the community does need to work on it (I still marvel that the Android Google Maps application is slower than the iPhone’s or my inability to replace Excel/Powerpoint/other apps with OpenOffice/Wine), but I would say the war against the Microsoft/Apple user experience is better fought by focusing on use-case customization rather than trying to beat a well-funded, centrally managed effort.

Consider:

  1. Would you use iOS as the software for industrial automation? Or to run a web server? No. As beautiful and easy-to-use as the iOS design is, because its not built as a real-time operating system or built for web server use, it won’t compete along those dimensions.
  2. How does Apple develop products with such high quality? Its simple: focus on a few things. An Android/Linux setup should not try to be the same thing to all applications (although some of the underlying systems software can be). Instead, different Android/Linux vendors should focus on customizing their distributions for specific use-cases. For example, a phone guy should gut the operating system of anything that’s not needed for a phone and spend time building phone-specific capabilities.

The funny thing is the market has already proven this. Where is Linux currently the strongest? I believe its penetration is highest in three domains: smartphones, servers, and embedded systems. Ignoring smartphones (where Android’s leadership is a big win for Linux) which could be a special case, the other two applications are not particularly sexy or consumer-facing, but they are very educational examples. In the case of servers, the Linux community’s (geeky) focus on high-end features made it a natural fit for servers. Embedded systems have heavily used Linux because of the ability to customize the platform in the way that the silicon vendor or solution vendor wants.

image

Of course, high levels of customization can introduce fragmentation. This is a legitimate problem wherever software compatibility is important (think computers and smartphones), and, to some extent, the Android smartphone ecosystem is facing this as more and more devices and phone manufacturer customizations (Samsung, HTC, and Motorola put out fairly different devices). But, I think this is a risk that can be managed. First, a strong community and support for industry standards can help limit issues with fragmentation. Take the World Wide Web. The same website can work on MacOS and Windows because the HTML is a standard that browsers adhere to — and the strength of the web standards and development community help to reduce unnecessary fragmentation and provide support for developers where such fragmentation exists. Secondly, the open source nature of Linux/Android projects means that customizations can be more easily shared between development teams and that new projects can draft off of old projects. This doesn’t mean that they become carbon copies of one another, but it helps to spread good customizations farther, helping to control some of the fragmentation problems. Lastly, and this may be a cop-out answer, but I believe universal compatibility between Linux-based products is unnecessary. Why does there have to be universal compatibility between a tablet, a server, and a low-end microcontroller? Or, for that matter, between a low-end feature phone and a high-end smartphone? So long as the customizations are purpose-driven, the incompatibilities should not jeopardize the quality of the final product, and in fact, may enhance it.

Given all this, in my mind, the Android/Linux community need to think of better ways to target customizations. I think its the best shot they have at beating out the larger and less nimble companies which make up their competition, and of living up to its full potential as the widely used open source operating system it can be.

(Comic credit – XKCD) (Image credit)

Leave a Comment

Why I Favor Google over Apple

image Many of my good friends are big fans of Apple and its products. But not me. This good-natured difference in opinion leads us into never-ending mini-debates over Twitter or in real life over the relative merits of Apple’s products and those of its competitors.

I suspect many of them (respectfully) think I’m crazy. “Why would you want an inferior product?” “Why do you back a company that has all this information about you and follows you everywhere on the internet?”

I figured that one of these days, I should actually respond to them (fears of flamers/attacks on my judgment be damned!).

imageFirst thing’s first. I’ll concede that, at least for now, Apple tends to build better products. Apple has remarkable design and UI sense which I have yet to see matched by another company. Their hardware is of exceptionally high quality, and, as I mentioned before, they are masters at integrating their high-end hardware with their custom-built software to create a very solid user experience. They are also often pioneers in new hardware innovations (e.g., accelerometer, multitouch, “retina display”, etc.).

So, given this, why on earth would I call myself a Google Fanboi (and not an Apple one)? There are a couple of reasons for it, but most of them boil down basically to the nature of Google’s business model which is focused around monetizing use rather than selling a particular piece of content/software/hardware. Google’s dominant source of profit is internet advertising – and they are able to better serve ads (get higher revenue per ad) and able to serve more ads (higher number of ads) by getting more people to use the internet and to use it more. Contrast this with Apple who’s business model is (for the most part) around selling a particular piece of software or hardware – to them, increased use is the justification or rationale for creating (and charging more for) better products. The consequence of this is that the companies focus on different things:

  • image Cheap(er) cost of access – Although Apple technology and design is quite complicated, Apple’s product philosophy is very simple: build the best product “solution” and sell it at a premium. This makes sense given Apple’s business model focus on selling the highest-quality products. But it does not make sense for Google which just wants to see more internet usage. To achieve this, Google does two main things. First, Google offers many services and development platforms for little or no cost. Gmail, Google Reader, Google Docs, and Google Search: all free, to name a few. Second, Google actively attacks pockets of control or profitability in the technology space which could impede internet use. Bad browsers reducing the willingness of people to use the internet? Release the very fast Google Chrome browser. Lack of smartphones? Release the now-very-popular Android operating system. Not enough internet-connected TV solutions? Release Google TV. Not enough people on high-speed broadband? Consider building a pilot high-speed fiber optic network for a lucky community. All of these efforts encourage greater Web usage in two ways: (a) they give people more of a reason to use the Web more by providing high-value web services and “complements” to the web (like browsers and OS’s) at no or low cost and (b) forcing other businesses to lower their own prices and/or offer better services. Granted, these moves oftentimes serve other purposes (weakening competitive threats on the horizon and/or providing new sources of revenue) and aren’t always successes (think OpenSocial or Google Buzz), but I think the Google MO (make the web cheaper and better) is better for all end-users than Apple’s.
  • Choice at the expense of quality – Given Apple’s interest in building the best product and charging for it, they’ve tended to make tradeoffs in their design philosophy to improve performance and usability. This has proven to be very effective for them, but it has its drawbacks. If you have followed recent mobile tech news, you’ll know Apple’s policies on mobile application submissions and restrictions on device functionality have not met with universal applause. This isn’t to say that Apple doesn’t have the right to do this (clearly they do) or that the tradeoffs they’ve made are bad ones (the number  of iPhone/iPad/iPod Touch purchases clearly shows that many people are willing to “live with it”), but it is a philosophical choice. But, this has implications for the ecosystem around Apple versus Google (which favors a different tradeoff). Apple’s philosophy provides great “out of the box” performance, but at the expense of being slower or less able to adopt potential innovations or content due to their own restrictions. image Case in point: a startup called Swype has built a fascinating new way to use soft keyboards on touchscreens, but due to Apple’s App Store not allowing an application that makes such a low-level change, the software is only available on Android phones. Now, this doesn’t preclude Swype from being on the iPhone eventually, but it’s an example where Apple’s approach may impede innovation and consumer choice – something which a recent panel of major mobile game developers expressed concern about — and its my two cents worth that the Google way of doing things is better in the long run.
  • image Platforms vs solutions – Apple’s hallmark is the vertically integrated model, going so far as to have their own semiconductor solution and content store (iTunes). This not only lets them maximize the amount of cash they can pull in from a customer (I don’t just sell you a device, I get a cut of the applications and music you use on it), it also lets them build tightly integrated, high quality product “solution”. Google, however, is not in the business of selling devices and has no interest in one tightly integrated solution: they’d rather get as many people on the internet as possible. So, instead of pursuing the “Jesus phone” approach, they pursue the platform approach, releasing “horizontal” software and services platforms to encourage more companies and more innovators to work with it. With Apple, you only have one supplier and a few product variants. With Google, you enable many suppliers (Samsung, HTC, and Motorola for starters in the high-end Android device world, Sony and Logitech in Google TV) to compete with one another and offer their own variations on hardware, software, services, and silicon. This allows companies like Cisco to create a tablet focused on enterprise needs like the Cius using Android, something which the more restrictive nature of Apple’s development platform makes impossible (unless Apple creates its own), or researchers at the MIT Media lab to create an interesting telemedicine optometry solution. A fair response to this would be that this can lead to platform fragmentation, but whether or not there is a destructive amount of it is an open question. Given Apple’s track record the last time it went solo versus platform (something even Steve Jobs admits they didn’t do so well at), I feel this is a major strength for Google’s model in the long-run.
  • (More) open source/standards – Google is unique in the tech space for the extent of its support for open source and open standards. Now, how they’ve handled it isn’t perfect, but if you take a quick glance at their Google Code page, you can see an impressive number of code snippets and projects which they’ve open sourced and contributed to the community. They’ve even gone so far as to provide free project hosting for open source projects. But, even beyond just giving developers access to useful source code, Google has gone further than most companies in supporting open standards going so far as to provide open access to its WebM video codec which it purchased the rights to for ~$100M to provide a open HTML5 video standard and to make it easy to access your data from a Google service however you choose (i.e., IMAP access to Gmail, open API access to Google Calendar and Google Docs, etc.). This is in keeping with Google’s desire to enable more web development and web use, and is a direct consequence of it not relying on selling individual products. Contrast this with an Apple-like model – the services and software are designed to fuel additional sales. As a result, they are well-designed, high-performance, and neatly integrated with the rest of the package, but are much less likely to be open sourced (with a few notable exceptions) or support easy mobility to other devices/platforms. This doesn’t mean Apple’s business model is wrong, but it leads to a different conclusion, one which I don’t think is as good for the end-user in the long run.

These are, of course, broad sweeping generalizations (and don’t capture all the significant differences or the subtle ones between the two companies). Apple, for instance, is at the forefront of contributors to the open source Webkit project which powers many of the internet’s web browsers and is a pioneer behind the multicore processing standard OpenCL. On the flip side, Google’s openness and privacy policies are definitely far from perfect. But, I think those are exceptions to the “broad strokes” I laid out.

In this case, I believe that, while short-term design strength and solution quality may be the strengths of Apple’s current model, I believe in the long run, Google’s model is better for the end-customer because their model is centered around more usage.

(Image credit) (Image credit) (Image credit) (Image credit) (Image credit)

14 Comments