Google has passed a significant milestone with the release of its first version of Native Client, a software foundation designed to let Web-based applications tap into a person's computer chip.
The software, called Arctic Sea, is available built into Chrome 10, which entered beta testing last week. "A big goal of this release is to enable developers to start building Native Client modules for Chrome applications," product manager Christian Stefansen said of the Native Client release in a blog post.
Google's NaCl project lets such native software be downloaded directly from a Web server but includes specific security mechanisms to keep out malicious code. Native Client modules must be written with specially modified tools to restrict use of potentially harmful instructions, and the browser examines the software in advance to ensure it executes only the safe operations. NaCl also confines software to a "sandbox" with limited privileges.
Native Client could let code libraries written in the C programming language be relatively easily adapted for browser-based applications. That could make it easier, for example, to build into Web applications the codecs Skype uses for compressing and decompressing video and audio or for the processor-intensive tasks used in Photoshop's image processing. One company that's committed to Native Client is Unity 3D, whose video-game engine can use NaCl for things like simulating physics.
Why is that important? Because Google is a huge believer in cloud computing, in which the state of an application is stored on a central server on the Internet and a browser acts as a vessel to run it. With Native Client, Google thinks it can get to within just a few percentage points of the performance of ordinary native applications, removing a major impediment to the cloud-computing technology.
That is, as long as Google can convince the rest of the world to adopt it. Fortunately for Google, it's got Chrome as a vehicle to deliver such technology into people's hands--and with more than 10 percent of people on the Net using Chrome, Google has a real foothold. With Native Client, Chrome OS could become significantly more capable, too, and with a variation called PNaCl still in the works, it works on the ARM processors that power virtually all smartphones today. Today Native Client works only on 32-bit and 64-bit x86 processors.
A major part of Google's recent NaCl work has been rebuilding it to use a new browser plug-in interface called Pepper, or PPAPI. (NaCl is the chemical abbreviation for sodium chloride--table salt--and is paired with Pepper. Get it?) With this release and Chrome 10, NaCl now uses Pepper.
Native Client remains turned off by default for now, since its own interface isn't quite finished, but it can be enabled through Chrome's about:flags mechanism.
One reason Google is pitching NaCl to developers is that it's finished some security work that had been incomplete. An outer sandbox, not just an inner one, is working for additional protection. And an auto-update mechanism lets Google more quickly replace a version if it's found to have a security problem, the company said.
How far NaCl will spread beyond Chrome remains to be seen. But to be truly useful, it needs programmers writing code.
That's quite possible, of course. One indicator of interest came in a draft Firefox road map for 2011. Regarding Native Client support, Mike Beltzner, Mozilla's outgoing director of Firefox, had this to say: "Some vendor push here, mostly from Adobe."
Google still has some convincing to do. "I don't think Native Client is going to be a very big deal, but Google does, so we'll see how that plays out," Mike Shaver, Mozilla's vice president of engineering, said in a 2010 interview.
And to use NaCl, browsers need a design that isolates plug-ins into separate memory compartments. "We aim to support multiple browsers. However, a number of features that we consider requirements for a production-quality system are difficult to implement without help from the browser. Specific examples are an out-of-process plug-in architecture and appropriate interfaces for integrated 3D graphics. We have worked closely with Chromium developers to deliver these features and we would be eager to collaborate with developers from other browsers," Google said on a NaCl FAQ.
Native Client has support now for computing, audio, and 2D graphics. In addition, Google reworked NaCl so that programmers need not worry so much about specifying which particular processor NaCl is running on.
For those who want to give it a try, Google offers a few NaCl demos.
Coming up will be support for 3D graphics, local file storage, the Web Sockets technology for fast server-to-browser communication, and peer-to-peer networking, Google said. Some of that doubtless will wait for the second-generation "Baltic Sea" release.
"We are excited to see Native Client progressively evolve into a developer-ready technology," Google said. Next up will be seeing if programmers share the excitement.