Google Native Client: The web of the future - or the past?

This time, it's Mozilla v Google

Chad Austin believes in Google's Native Client because he believes in the web.

He sees the web as the ultimate programming platform – something that spans not only disparate devices but the competing interests of the world's corporate tech giants – and he sees Native Client as a way of bringing most any language to the platform, including C, C++, and other lightning-fast "native" languages that have access to a machine's underlying hardware.

Native Client – a Google open source project more than three years in the making – is specifically designed to run native code securely inside web browsers, and for Austin, it puts web applications on "the same playing field" as local applications, providing the raw speed needed to compete with traditional software on 3D games, video editing, and more.

"Native Client democratizes web technology," says Austin, a typical Silicon Valley developer who writes a typical blog on the side. "The web needs to be a first-class platform at the level of Windows and iOS."

Many agree with Chad Austin. But just as many accuse him of talking nonsense, dismissing his democratization argument as one big oxymoron. Applications built with Native Client, they say, aren't web applications. In bringing native code to the browser, they say, Native Client undermines everything the web should be: a contained set of technologies that behave the same way on any machine.

"The web is not native. It's not meant to be. And it will never be," cries one voice. "And I for one am glad that it's so different from native development."

Mozilla, maker of the Firefox browser, is among those who take a dim view of Native Client. In January, Austin took the open source outfit to task with a post entitled "Mozilla’s Rejection of Native Client Hurts the Open Web", and his views were met with a virtual avalanche of both praise and scorn.

Chad Austin

Chad Austin

At Hacker News, the online-hangout-du-jour for Valley developers, the arguments were equally vehement on each side of the issue, and though both camps spewed their fair share of pointless vitriol – "Native Client is a bunch of horse poo," howled one coder – both also had some rather sensible things to say.

Some were technical arguments, picking apart how Native Client may or may not operate. Others were religious arguments, concerned with what the web should and shouldn't be. And in many cases, the technical and the religious couldn't be separated.

Native Client is due to make its official debut inside Google's Chrome browser this fall – it's already in the Chrome beta – and its fate will ultimately be decided by developers, including those who agree with Chad Austin and those who don't.

Its future lies with Google's ability to answer not only the technical concerns but the religious concerns as well. Developers take their religion very seriously, particularly when it comes to the web.

In search of the multilingual web

"In the browser," Brad Chen likes to say, "you can use any language you want – as long as it's JavaScript." Chen oversees the Native Client project at Google, and he describes his baby as an effort to expand the browser beyond JavaScript, the standard web scripting language originally developed at Netscape in the mid-90s.

"While JavaScript is a fabulous language and it just keeps getting better, there is a lot of great software that isn't written in JavaScript, and there are a lot of software developers that are brilliant, but they would rather work in a different language," says Chen, who spent four years on the faculty at Harvard and several more as a software engineer at Intel before joining Google.

"If we're successful with this [Native Client] project, we will make other languages more useful in the context of the web. We want to create a system that gives languages like C and C++ – but eventually others as well – the same excellent level of portability and safety that JavaScript provides on the web today."

That's a tall task. And so far, Google believes it has achieved half of it: the safety half. The portable bit comes later.

"We want to create a system that gives languages like C and C++ – but eventually others as well – the same excellent level of portability and safety that JavaScript provides on the web today."

– Brad Chen

As it stands today, Native Client is a software "sandbox" meant to securely run native code inside a browser. JavaScript is an interpreted, dynamically-typed language, and it was specifically designed to protect netizens from malicious and buggy code, but native languages such as C and C++ – which have access to a machine's underlying components – were not. Native Client seeks to add such protection.

"One of the key features of the web is that it's safe to click on any link. You can fetch code from some unknown server on the internet," says Google vice president of engineering Linus Upson, a former Netscape engineer who has championed Native Client inside Google and out. "Before, when you downloaded a native application, you had to install it and you had to trust it. With Native Client, you can now download native code, just like you download JavaScript and run it, and it's every bit as safe."

Sponsored: Driving business with continuous operational intelligence