Wednesday, October 22, 2008

13 Days: Self Hosting And Dogfood

Computer programs are written using compilers (and interpreters), which translate high-level languages into machine language, either directly or indirectly. But what do you write the compiler in? For almost fifty years, many compilers have been written in the language they compile. Although that sounds like a contradiction, there are many ways to accomplish it, usually involving using an earlier version of the compiler not written in the language to compile and then bootstrapping forward, like the robot of many a science fiction story that can build more robots. A compiler that can compile itself is referred to as a self hosted compiler. Self hosting is a good thing. It helps ensure that the people working on the compiler know as soon as possible when there are problems.

A related term that is in more common use is dog food, as in the phrase "eating one's own dog food." Although originally used only at Microsoft, the term is now widespread throughout the industry to refer to a company or team using its own products to do their work. Like self hosting, when a team uses its own products, they ensure that they discover problems first, before users do. Sometimes, its painfully obvious when a product hasn't been used by the people who created it, because it has flaws so obvious that nobody could have actually used it without discovering them.

Groupthink reached a major milestone today, without even fireworks to mark the occasion. The first piece of real data -- part of my task list for the project -- is now live in Groupthink Projects. As a project, Groupthink is on the way to being self hosted and I am starting to eat my own dog food. It's good news, but it also makes me acutely aware of just how much work I have left to do.


Post a Comment