What's next? There's no one in IT better equipped to answer that question than Bill Joy, a man FORTUNE once dubbed the "Edison of the Internet." Nor could there be a better time to ask him than now, as the 48-year-old computer whiz embarks on his next gig after resigning as chief scientist of Sun Microsystems, the company he helped found 21 years ago. As you will see in the next few pages, the breadth of Joy's interests and expertise is exceeded only by the piquancy of his opinions. He's a curious, often self-contradictory blend of philosopher, doomsayer, aesthete, Microsoft basher, political idealist, and, naturally, geek.
The day after he resigned, he dropped by the office of FORTUNE's Brent Schlender for a three-hour chat covering everything from how best to scan old photos into a computer to the high jinks of Orson Welles. He talked about the fallout from his April 2000 article in Wired, which concluded that robotics, nanotech, and genetic engineering were emerging so quickly thatif we weren't carefulthey could endanger the human species. But mainly he talked about the Internet, a hotbed of innovation that heperhaps more than any other individualhas helped shape. His musings tumbled forth, bordering on rambling before being saved by just-in-time epiphanies as he discovered ever more parallels in the workings of nature, markets, human behavior, and computer science. There was one question about the future he couldn't really answer, however, and that was what he would be doing later that evening ...
What's on your to-do list now that you've left Sun?
Yesterday I had my tech guy come to the house and disconnect my Sun network, and tomorrow I'm having them shut down my company e-mail account.
Man, you're really cutting the cord completely.
Well, limbo is not a good place to be.
Seriously, though, I'm interested in figuring out how we can build a Net that is a lot less prone to viruses and spam, and not just by putting in filters and setting up caches to test things before they get into your computer. That doesn't really solve anything. We need an evolutionary step of some sort, or we need to look at the problem in a different way.
I'm not convinced there's not something modest we can do that would make a big difference. You have to find a way to structure your systems in a safer way. Writing everything in Java [a programming language created by Sun] will help, because stuff written in antique programming languages like C [a widely used language created by Bell Labs in the early 1970s] is full of holes. Those languages weren't designed for writing distributed programs to be used over a network. Yet that's what Microsoft still uses. But even Java doesn't prevent people from making stupid mistakes.
My own biggest mistake in the last 20 years was that sometimes I designed solutions for problems that people didn't yet know they had. That's why some of the things that could've made a difference couldn't find a market. When people get hit between the eyes with a two-by-four by these viruses, they know they have a problem. Still, the right time to address it would have been a while ago. The hardest part isn't inventing the solution but figuring out how to get people to adopt it.
Do you have any specific ideas for solving the virus problem? After all, most commercial activity depends on the Internet.
Nature deals with breakdowns in a complex system with evolution, and a very important part of evolution is the extinction of particular species. It's a sort of backtracking mechanism that corrects an evolutionary mistake. The Internet is an ecology, so if you build a species on it that is vulnerable to a certain pathogen, it can very well undergo extinction. By the way, the species that go extinct tend to have limited genetic diversity.
Are you implying that Microsoft Windows is vulnerable to extinction precisely because it is so dominant?
I wasn't thinking of any particular piece of software, but if you're running a monoculture of softwareduh, this is not good. People have studied how to make software systems more reliable by running three distinctly diverse implementations at the same time and then comparing the results. That's what they used to do in the space program, when not only were redundant systems built for, say, guidance, but each of them also ran on different computers with different software.
It may seem like a big effort to write programs several times, but not if you do it in a modular way. That's because, if a program is built out of 20 modules and you write two versions of each, you've now got some enormous number of possible combinations. Then, if you test each combination to see how "fit" it is in some fitness landscape, you're basically doing what evolution does.
This is not something I thought of. People have been publishing papers about it for years. But the fact that the standard industry practice is to do none of this shows that software engineering as a discipline is in the Dark Ages compared with something like mechanical engineering. We shouldn't really build servers or operating systems that are genetically inferior, but we do.
Why can't what's been going on in the labs for decades work its way into the real world?
Because the business is such a horserace. I've tried to get people at Sun to completely re-architect Solaris [Sun's version of Unix] in a more modular form. We did provide people with tools like Java to build more safe and reliable services on the network. But Java has been underappreciated because, once again, it was a solution to a problem people had heard about but had not felt viscerallywhereas the perceived cost of not choosing Microsoft or IBM was felt much more measurably and emotionally.