Prologue -- Bootstrapping the Development Tools

Willard Wilfred Williams III was a geek's geek. He wrote his first Invaders style video game at seven, installed and dual-booted Debian at eight, was running openBSD as his day-to-day OS by nine.

Recognized that computers were not the real world sometime in his ninth year.

Tested out of high school at twelve. Wrote his senior English paper on OpenOffice running on openBSD. His Industrial Electronics project was some forgettable robotics project involving the 68HC12 and embedded Linux running on an ARM processor. Got accepted to MIT with a full-ride scholarship in the computer science department, but turned it down to enroll dual-major in chemistry and biology at Texas A&M. Less rules to deal with.

A&M gave him a tuition scholarship, and he lived at home, rode his bike to classes.

Decided not to hurry through college, so he graduated with his dual major and a large, eclectic selection of extra non-major credit at sixteen. Then he enrolled in physical chemistry at the University of Texas at Austin and again took his time, adding astrophysics and theoretical math somewhere along the line, and getting his masters degree at eighteen. Published several research papers in the process.

He decided he needed a break, so he worked part-time jobs for a while, living at home again, building interesting toys in his parents' basement and attic. Served a proselyting youth mission for his church.

When he finished his time for his church, the newspapers were full of the latest scandal about government agencies spying on the citizens. So he decided it was time to build his own OS distribution while he lived (again) at his parents' house and worked more part-time jobs.

The first item on his agenda was bootstrapping the development environment, to avoid any possible backdoors piggy-backing in library code (per Ken Thompson's famous experiment in the C library).

Compiled Clang on netBSD, on an ARM system.

Used m4 to obfuscate the library calls in the gcc source code. Compiled the obfuscated source with Clang. When he got a clean compile, he cross-compiled the kernel source for openBSD, targetting PPC-32. It took a few weeks to clear out bugs and get the openBSD kernel running on the PPC box, and a few more weeks to get the basic openBSD toolchain and utility set cross-compiled on the ARM box and running on the PPC box.

After that, cross-compiling openBSD on the bootstrapped PPC box, targetting PPC-64, went fairly smoothly. Communication on the openBSD lists while he did this was the usual mix of interested comments, encouragement, and abuse.

This gave him a development system to work from, that he could be fairly confident was free of hidden backdoors, and he released it on sourceforge as "wopenBSD", for "washed openBSD". Unfortunately, no one else was interested, so the wopenBSD project never took off. Got some flack about "womenBSD" for his efforts.

This all took over six months, and the best he could claim was that he was confident that he had washed all the library backdoors that might be piggybacking in the library, hidden by methods similar to those Ken Thompson described in "Reflections on Trusting Trust". That would still leave various coding errors, accidental or deliberate, as well as obscured code backdoors.

Even if he thought he could trust the openBSD team to refrain from backdooring their public distributions, there are lots of packages in the functioning OS that come from elsewhere.

So he applied again at MIT, and they accepted him on a doctorate program, got him some teaching work to help him pay his bills. And while he worked on his doctorate on building trusted computing environments, he took theoretical physics, studying the physics of time.

Figured out how to travel in time somewhere around the age of twenty-five. Of course he didn't tell anyone. He didn't want to get kicked out of school, and he especially didn't want anyone in the government taking his work on time seriously.

Built a functioning time machine about the time he got his doctorate and got an invitation to go to Berkeley to teach and research. He could even send living cats back and forth a few hours.

When he got moved in at Berkeley, he built a time machine big enough to carry himself. And that was when he started working on a new OS for real.

He would go to work during the day, send himself back in time when he got home, sleep in one room, send himself back again, and work in another room on the OS. And he was always careful to time himself, so he wouldn't meet himself walking through the kitchen/dining area of his apartment.

Of course he had to buy enough food to feed himself twice. And he was aging twice as fast as the people around him. So he took up modern dance and martial arts to keep his health up.

Popular Posts