Google software luminaries such as Unix co-creator Ken Thompson believe that they can help boost both computing power and programmers' abilities with an experimental programming language project called Go.
And on Tuesday, they're taking the veil of secrecy off Go, releasing what they've built so far and inviting others to join the newly open-source project.
The computing industry is in constant tension between making a fresh start and evolving the current technology. The limits of today's hardware designs and programming technology led the Go team to take the former approach.
Gordon, the Go gopher mascot, drawn by Rob Pike's wife and illustrator Renee French.
(Credit: Google)"We found some of those problems to be frustrating and decided that the only way to address them was linguistically," said Rob Pike, a principal software engineer working on Go. "We're systems software people ourselves. We wanted a language to make our lives better."
So far, Google's Go project consists of the programming language, compilers to convert what programmers write into software that computers can run, and a runtime package that endows Go programs with a number of built-in features. It's most similar to C and C++, but, Pike said, it employs modern features and has enough versatility that it could even be used within Web browsers.
Go's assets
There's a huge step between creating a new programming language and building into a major force in the industry. Sun Microsystems, which succeeded with Java, has had less success with a would-be Fortran successor called Fortress.
But Go has some assets most languages don't.
First, the project is at Google, which has a powerful incentive to make something useful in order to get more out of its hundreds of thousands of servers and its countless in-house programmers. An experiment at Google could have more commercial relevance than many other company's actual products, and Go is already graduated from a 20 percent time project to one with formal support.
"We don't intend it to be experimental forever," Pike said. "We really want to build stuff for real with this."
Second, there's the Go team's pedigree. Among them:
Thompson, the winner of the 1983 Turing Award and 1998 National Medal of Technology, who, along with Dennis Ritchie, was an original creator of Unix. Thompson also came up with the B programming language that led to the widely used C from Ritchie.
Pike, a principal software engineer who was a member of Bell Labs' Unix team and a later operating-system project called Plan 9. He's worked with Thompson for years and with him created the widely used UTF-8 character-encoding scheme.
Robert Griesemer, who helped write Java's HotSpot compiler and V8, the Chrome browser's JavaScript engine; Russ Cox, a Plan 9 developer; and Ian Taylor, who has worked on improving the widely used open-source GCC compiler.
The name Go itself stems from the challenging board game, a reference to Google itself and, of course, the idea of going somewhere, Pike said.
What's Go for?
Google has high hopes for Go.
It's designed to address some issues in getting software to take advantage of multicore processors that can perform multiple tasks in parallel. It has an approach to ease some of the pains of object-oriented programming. It has modern language features such as "garbage collection," which helps programmers deal with mundane but important memory management issues. And it's designed to be fast--nearly as fast as programs written in C or C++--and enable fast creation of programs in the first place.
"It seems it's getting much harder to build software than it used to be," even though computers are vastly faster than in the past, Pike said. "The process of software development doesn't feel any better than it did a generation ago. We deliberately tried to make a language that focused in part on rapid development, that compiles really efficiently, and that expresses dependencies efficiently and precisely so the compilation process can be controlled well. I find it much more productive to work in."
When it comes to the speed programs at which programs run, "Our target was to get as close as we could to C or C++," Pike said. They're reasonably close--programs run about 20 percent to 30 percent slower right now, he said.
The Go Web site itself is built with Go, but Google has broader ambitions. The software is designed to build server software--Google's Gmail is one example of what it's suited for. Google thinks that it could be good for other cases, including running software in a Web browser, a task JavaScript handles today.
"It's at least an order of magnitude better than JavaScript," Pike said. Note that Google built its own browser, Chrome, in part to speed JavaScript and Web performance, and that Google already is incorporating its technology such as Native Client and Gears.
Another nice Web-related feature in Go: tasks can be shared by servers and client devices such as PCs or mobile phones that use those services. That makes a service more easily adapted to different amounts of processing power for those clients, Pike said.
Making the most of multicore
Go also is designed to tackle one of today's big challenges, multicore processors. Programs often work sequentially, moving through a task one step at a time, but multicore processors are better at handling many tasks in parallel.
Go is no magic bullet for the problem, but Pike is optimistic that it will help. "We think we have support sufficient to take a crack at it," he said.
Specifically, Go uses a technology dating back to the 1960s called CSP, or communicating sequential processes, that handles interactions among a set of cooperating programs, Pike said. The technology made an appearance in programming languages such as Occom and Erlang, but it generally hasn't been applied in systems programming.
"We don't believe we've solved the multicore-programming problem," Pike said. "But we think we've built an environment in which a certain class of problems can take advantage of the multicore architecture."
The design also can apply, to some extent, to spreading tasks among multiple servers connected over a network, he added.
Lending a hand
The Go team is looking for help. One big area is in improving the runtime library from which Go programs can draw.
Such libraries speed up programming by providing many tools and functions so programmers don't have to create those ingredients on their own, and Go's library includes many elements crucial to Go's design. Go's libraries supply resources for handling concurrency, garbage collection, and other "low-level gunk you don't want to expose to programmers," Pike said.
The Go team also is looking for compiler help. Thompson has written some compiler support for 32-bit and 64-bit x86 processors, and for ARM processors, and Taylor has written a Go front end for the GCC compiler.
ARM processors are dominant in the mobile-phone market that Google is trying to spur into greater activity with the Android operating system, and Go software will be able to run on mobile phones, he said. "We're looking at interesting applications on things like Android phones. We're not sure where that's going to lead, but it's too intriguing to let it go," Pike said.
Google has released many products as open-source software over the years, in part to give something back to the pool from which it's drawn and in part because it stands to gain from the collective-development philosophy. Go fits with those motives.
"We did this to help Google first, but we decided (that) we need to open-source it," Pike said. "It's interesting, but it needs help from the community."
For all Google's ambitions for Go, the company doesn't expect it to erase today's technology.
"I don't think we'll replace anything," Pike said. "We're just putting another player into the arena."
LAS VEGAS--The Day One keynotes at Citrix Synergy 2009 were about users and desktops. Today was nominally about data centers and clouds--of which there were a variety of announcements. However, Citrix's XenClient ("Project Independence") loomed large as well.
Of the products discussed on stage, XenClient is perhaps furthest from being a fully realized product. But is also offers an intriguing window into how the PC as we know it is likely to fundamentally change over the coming years.
XenClient is a "Type 1" native hypervisor that sits on a PC and hosts one or more guest operating systems. This approach contrasts with the "Type 2" hosted hypervisors that are far more common on PCs today.
There are good reasons why we tend to see native hypervisors on servers and hosted hypervisors on desktops. Native hypervisors are higher performance, especially when it comes to interacting with networks and disks. As a result, it wasn't until native hypervisors like VMware ESX Server and Xen came to market that x86 virtualization started to seriously move beyond useful but relatively narrow uses such as in test and development labs.
The downside of native hypervisors is that, because they sit directly on top of a system's hardware, they have to take over a variety of the functions that an operating system usually performs. For example, a native hypervisor has to deal with things like power management and needs to know how to talk to graphics cards and chips, network and storage adapters, and other system hardware.
(Depending upon the virtualization architecture in question, some device interactions can be passed through to the guest operating systems, but the point remains that a native hypervisor is exposed to hardware details and idiosyncrasies that are masked if the hypervisor is hosted on an operating system.)
The great diversity of client hardware relative to server hardware therefore makes running native hypervisors on a PC tricky business.
It's also been the case that vendors haven't exactly pushed client-side virtualization--in contrast to using application virtualization to deliver software to clients--in a broad way. Hosted virtualization products handle specific use cases such as security (VMware ACE), running Windows applications on Macs (Parallels Desktop for Mac, VMware Fusion), and software development (VirtualBox, VMware Workstation). Start-ups are also tackling the security angle with alternative approaches. RingCube uses containers. Neocleus uses a Xen-based native hypervisor.
But no large vendor has seriously pushed a broad-based Type 1 hypervisor for the client. Microsoft, for its part, has been publicly skeptical about the idea. (Not especially surprising given that Microsoft has only reluctantly embraced virtualization--in part because native virtualization takes over some of the traditional tasks of the operating system.)
That changes with XenClient, a project that Citrix has collaborated on closely with Intel.
Here's how Citrix describes XenClient and its vision for desktop computing:
XenClient is a strategic product initiative with partners like Intel, focused on local virtual desktops. We are working together to deliver on our combined vision for the future of desktop computing.
This new virtualization solution will extend the benefits of hosted desktop virtualization to millions of mobile workers with the introduction of a new client-side bare metal hypervisor that runs directly on each end user's laptop or PC. This together with an innovative back-end desktop management solution for creating, delivering, and updating corporate desktop computing environments will transform the way corporate desktops are delivered and managed, giving IT all the security, simplicity and cost savings of centralized management, with an unprecedented level of performance, personalization and freedom for end users.
To net it out, Citrix is pushing for a future in which a hypervisor is a standard abstraction layer for every cleint and server--just the way that x86 architectures of all stripes are architected and built. Think of it as a BIOS on steroids if you will.
Citrix's interest here is obvious. After all, its strategy is to make money from managing virtualized environments. Thus, continuing with a theme from Synergy's first day, XenClient--like XenServer--will be free when made available later this year.
Intel's interest here is that XenClient is specifically targeted for systems with vPro technology. vPro includes:
- Intel Virtualization Technology (VT)--hardware assists for improved virtualization performance
- Intel Trusted Execution Technology (TXT)--formerly called LaGrande, provides hardware-based rooted security
- Intel Active Management Technology (AMT)--hardware management technology
Intel's Pat Gelsinger said in his keynote that vPro is ramping quickly--he claimed it was in 60 percent of the Fortune 100--but Intel is doubtless actively seeking more reasons to get businesses to upgrade to their latest and greatest client platforms.
The vision here seems a sound one. After all, IT vendors have essentially been adding layers of abstraction to mask complexity since the beginning. Even an operating system is an example of abstraction (actually many of them rolled into one software package). And use cases involving personal PCs used to access corporate networks or protected VMs that run security scanners seem far less esoteric than they did even just a couple of years back.
The question is more one of time frame. When do compelling uses get made available by software vendors in largely transparent ways for end users who are not developers or otherwise ready, willing, and able to explicitly manipulate multiple virtual machines on a single client? It isn't this year but there's a lot of reason to believe that this is the direction the client is headed.
- prev
- 1
- next





