Google has released a programming tool to help move its Native Client project--and more broadly, its cloud-computing ambitions--from abstract idea to practical reality.
The new Native Client software developer kit, though only a developer preview version, is designed to make it easier for programmers to use the Net giant's browser-boosting Native Client technology.
"The Native Client SDK preview...includes just the basics you need to get started writing an app in minutes," Google programmer David Springer said Wednesday in a blog post announcing the SDK, a week before the developer-oriented Google I/O conference. "We'll be updating the SDK rapidly in the next few months."
Native Client, or NaCl, is designed to let browsers run programs at nearly the speeds of those compiled to run natively on a computer system. It's fast enough to handle tasks such as video decompression and first-person shooter video games, and it's designed to handle adjusted versions of existing software, not just programs written from scratch.
Native Client is one of several efforts at Google to weave the Web deeply into the fabric of computing. That mission will be on center stage at the company's I/O conference, set for May 19 and 20 in San Francisco.
To let people download Native Client modules from Web pages without security problems, NaCl prohibits various operations and confines NaCl program modules to a sandbox with restricted privileges. NaCl lets programmers write in a variety of languages, and a special compiler converts their work into the NaCl modules.
Google argues that it profits by increased use of the Web, since that drives more search traffic and therefore search-ad revenue. But Google also has a growing Google Apps subscription business to support--a service that CEO Eric Schmidt calls Google's next billion-dollar opportunity. More powerful tools for Web-based word processing, presentations, spreadsheets, image editing, and the like could help that business grow.
Google has been working hard on fleshing out the NaCl promise. One step has been expanding from 32-bit modules for x86 chips only; NaCl now supports ARM processors and NaCl modules also can take advantage of 64-bit x86 processors. Some of this work has been through a project called PNaCl, or Portable Native Client.
Another move was adding NaCl support for OpenGL ES 2.0, a standard interface for tapping into hardware-accelerated graphics. That could help modules such as games that use 3D graphics.
A software developer kit could help NaCl become more useful, but only if there's a way to run the modules. Google early on released a Native Client browser plug-in, but potentially more interesting is its work to build Native Client into Chrome and into the browser-based Chrome OS it plans to release later this year on Netbooks.
Indeed, projects like NaCl illustrate why Google is so interested in Chrome. With its own browser, it can push its agenda much faster, even if it's only through projects such as Gears or O3D that didn't live beyond the experimental stage.
To use the NaCl developer kit, programmers need a browser with a new plug-in technology called NPAPI Pepper. (Nomenclature nuts will note that NaCl is the chemical symbol for sodium chloride, or salt. NPAPI stands for Netscape Plug-in Application Programming Interface.) Guess which browser is the only one to support Pepper? Chrome, of course, though Adobe and Mozilla are backing the project, too.
The NPAPI Pepper project and NaCl SDK show one of Google's biggest challenges in bringing its cloud-computing vision to reality, though: getting others to come along for the ride.
To make NaCl real, it must convince programmers to use the software, convince browser makers to include it or at least support it as a plug-in, and convince the general public to upgrade their browsers to use it.
With Chrome and Google Apps, Google can ensure its technology is used in the real world. But especially as Google's dominance brings it into competition with more computing companies, extending its ideas beyond its own products and services can become tougher.