The second story in the series of stories about how alpha geeks got into computers in the first place. Next up, Karl Fogel. He wrote the definitive CVS book, was one of the forces behind the Subversion project, and just released Producing Open Source Software.
Karl Fogel’s Story
How I got into computers…
It’s not the usual story, I guess. When other people my age (34) get
nostalgiac for their old Apple IIs and Commodore 64s and 300 baud
acoustic coupler modems, I get teary-eyed right along with them, but
it’s only for show. I never experienced those things directly. Most
of my friends did: they were into the BBS scene, and I could tell
something deep was going on, because they all talked very excitedly
about what the Sysop had done to so-and-so, the files they’d uploaded,
etc. I enjoyed the sense that they were doing something new and
interesting — that our parents didn’t understand — but I wasn’t
really part of it, except vicariously.
This was in the mid-1980s. My family was well-off, and I’d asked my
parents to buy a computer, because I wanted to join the world my
friends were in. But I’d also asked for a piano. My parents thought
about these two expensive items, and told me I’d have to choose. I
reasoned that one can learn computers anytime, but with piano, the
sooner one starts the better, so we got a piano, and I spent high
school becoming a musician instead of a programmer.
I entered college as a musician too, at the Oberlin Conservatory in
Ohio. Oberlin has two halves: a music conservatory, and a college.
Because some of my friends were in the college’s Computer Science
Department, I ended up hanging out in the CS lab a lot.
It’s hard to explain what happened next…
The Oberlin College Computer Science Department was a hotbed of free
software activity in the early 1990s. The students helped maintain
the department servers, installing GNU programs and documentation, and
tutoring new students in how to use them.
Now, by this time my family had a computer and I understood how
programs worked: you started them up, they did something, and then you
shut them down. If you wanted something different, you shopped around
for a different program.
So I still remember the shock that went through me the first time I
started up the GNU ‘info’ browser on the CS systems. The screen gave
a few basic instructions for navigating the Info hyperlinks, then
below that it said: “PLEASE ADD DOCUMENTATION TO THIS TREE. See blah
blah blah for instructions on how to do so.”
Somehow I understood the real message: the system was inviting me to
improve the system! No computer had ever done that before. It had
never occurred to me that the system documentation was just files, no
different in principle from the files I saved from my word processor
when writing a paper for class. But when I saw the Info tree inviting
me to make it better, I suddenly understood. Perhaps it is only one
of those ex post facto artificial memories, but I recall that I formed
a tentative hypothesis then that the *entire* system worked this way,
and that if I learned the right technical details, I could Make Things
Better too. Testing this hypothesis became my highest priority; in
some ways it still is.
The other important factor was, in retrospect, perhaps a sad
commentary on the nature of progress:
College dorms were not networked then. If you wanted access to the CS
servers, or even just to check your email, you had to go to the
Computer Science Lab. This was a small room with twenty or so
workstations, mostly 9600 baud text terminals but also a few graphics
workstations. So at any hour of the day or night, you could wander
into the Lab and find other CS students, working on programs, or
installing some new software on the department’s servers, or just
I realize now that we had caught a brief, golden moment in time. The
Internet was up (though the WWW wasn’t), but networking had not yet
penetrated to every corner of life. Those wanting to get serious work
done on a computer were forced to be in the same room with each other.
This had a tremendous effect. People shot questions across the room;
people traded code; people came and looked over each others’ shoulders
and offered tips on how to use the editor (usually Emacs) better;
people maintained files of hilarious quotes overheard in the Lab, and
wrote programs to serve up a randomly chosen quote at login time.
People played games together, did their homework together, designed
cool hacks together, explored the nascent Internet together.
It was a true programming community. Shortly after my epiphanous
encounter with the Info browser, a Lab regular named Jim Blandy (now a
GDB hacker at RedHat) pointed me at Richard Stallman’s GNU Manifesto,
and I remember reading it and thinking “Yes, I understand, this makes
total sense.” At the time I didn’t know why, but now I think I do:
the GNU Manifesto made sense because I was already living in a sharing
community. And since my first exposure to computer programming took
place in that environment, I simply assumed that kind of community was
The combination of an explicit philosophy of sharing and daily
interaction with other hackers proved intoxicating. I threw myself
into computers. Early on I went through “larval stage”, a months-long
coding spree in which I learned the basics not only of programming but
of talking to other programmers, helped along by some of the more
experienced coders in the Lab.
I never majored in Computer Science, because by that time I would have
had to spend an extra year in college to complete the requirements.
But I was in the CS Lab as much as any CS student, and in fact some of
the professors just assumed I was majoring in it, to the point where
they eventually hired me to grade and tutor some introductory classes.
I took a few classes, too, but since it wasn’t my major, I had the
luxury of selecting just the ones that looked most interesting. This
is a great way to learn a subject, IMHO: an eager student in the right
environment will instinctively know how to design a good curriculum.
After college my first jobs were in free software, and (except for a
brief interlude) that’s what I’ve been doing ever since. You asked
about my “path to world domination”. Well, I guess I want the whole
world to be like the Oberlin CS Lab was: a sharing community where
people assume that improving the system is within anyone’s reach.