Native Client Portability, Almost Native Graphics Layer Engine

Google’s Native Client (NaCl) is a browser technology to deliver native x86 binaries to users on Windows, Mac and Linux. Whilst this bridges the gap between modern JavaScript speeds and native binaries, portability is limited and that’s especially important on the web where there’s greater device diversity than on the desktop. Google are announcing that NaCl now also supports x86-64 and ARM. In addition to this Google are also announcing the ANGLE project, an open source compatibility layer to map WebGL (OpenGL ES for the web) to DirectX calls for Windows systems without an OpenGL library.

Whilst JavaScript engines have been getting much quicker over recent years (with IE9 joining the fray), there are some things where absolute speed is essential and the web just won’t cut it. Portability is the web’s greatest asset and cementing a web littered with x86 only binaries won’t do for Android sales.

Interestingly, to take things beyond jut x86, Google are making use of LLVM (a bytecode compiler that spits out highly optimised binaries, developed largely by Apple for on-demand GPU shader compilation in Leopard and eventually to replace GCC outright) to create highly portable bytecode binaries in a Java / .NET fashion.

Another emerging technology is WebGL. Essentially “OpenGL for the web” both Firefox and WebKit nightlies offer experimental support. WebGL allows JavaScript to have access to the 3D capabilities of your GPU, it is expected that games of iPhone-esque quality will be possible in your browser.

On a certain operating system that has a competing 3D graphics API, the OpenGL libraries may not always be present and this means that WebGL content will not be available to these users. To solve this Google have partnered with TransGaming (makers of the Cider compatibility layer that allows easy porting of DirectX games to Mac, so named because of its roots in Wine) to produce an open source project (BSD licence) called ANGLE (“Almost Native Graphics Layer Engine”) to translate OpenGL ES 2.0 to DirectX.

What’s most interesting about both of these announcements is the difference it shows in company tactics between Google, Apple and Microsoft. Google don’t care what device you use to access the Internet as long as you’re using Google and the experience is fast. NaCl helps push us more to the web, filling in gaps where JavaScript alone won’t suffice. If you can push a native binary to a user over a URL, then why can’t you do video editing on the web? The code is native, it’s running as fast as a program you install traditionally; so what’s the hang-up?

With Apple, NaCl represents a threat to their walled app store, necessary to drive iPhone sales. If native apps can be delivered by URL, why would any developer want to put up with the insane app store restrictions where they can’t even communicate with their own customers? If lots of developers are delivering compelling content using NaCl on desktops and on non-iPhones, and Apple don’t support NaCl, then users might consider an Android phone over an iPhone. It’s one long-term possibility, certainly.

With Microsoft, ANGLE represents a threat to their single-vendor ecosystem that encourages developers to learn and use only DirectX, to drive sales of Windows, XBoxes and Windows phones. Microsoft’s plate of offerings to developers is that if they come and learn C# they can target the XBox, Windows (and Mac/Linux via Silverlight) and Windows Phone 7 Serieses using just one codebase. They promise to make developing easy if you stick to them. WebGL is not DirectX and you will not see WebGL in IE9, or any version of IE because Microsoft do not want developers learning a competing graphics API and they do not want to legitimise the use of OpenGL as the standard on the web. It would be devastating in the long term to Microsoft’s iron grip on the gaming market. If a generation of kids are growing up writing games in WebGL, they’re naturally going to be armed to write full games in OpenGL, and not DirectX.

In the end, both Apple and Microsoft have bottom lines (hardware sales) that will be compromised by certain emerging web technologies. The self-crippling they may go through trying to not compromise themselves (Intel Atom, anybody?) may lead to Google getting the upper hand. That is, if Apple and Microsoft can’t invent a technology that threatens Google’s 97% income through online advertisements.

11 Comments

  1. 2010-03-18 10:32 pm
    • 2010-03-18 11:00 pm
  2. 2010-03-19 1:56 am
    • 2010-03-19 1:04 pm
      • 2010-03-21 11:54 pm
  3. 2010-03-19 2:29 am
  4. 2010-03-19 2:49 am
    • 2010-03-19 3:07 am
  5. 2010-03-19 5:29 am
  6. 2010-03-19 12:59 pm
    • 2010-03-20 4:32 am