Self Serving System

A system that "eats its own DogFood" by consuming some of its own results (outputs and/or services), possibly in a recursive and/or compositional fashion.

Examples: There may be two levels of "dogfooding" going on in such a system: The obvious one is that the developers of the system are actually using it (the developers consume what they produce); The other one is that the system is actually using itself as well (the system consumes what it produces -- similar to the bootstrapping mentioned above). I believe system dogfooding always implies developer dogfooding, but not vice versa. The above are examples of system dogfooding (the system consumes itself). Examples of developer dogfooding might be: All these examples require some BootStrapping to get to that first working version of the product before it can be used on itself, but afterward the product is used for itself (though its not always the same as the product using itself).

When a system eats its own DogFood, it helps show the viability and credibility of the system by showing that it can successfully rely upon the very same outputs/services that are "allegedly" of utility to its intended users.

-- BradAppleton (originally posted to patterns-discussion list in Sept'97)

EditText of this page (last edited October 22, 2005) or FindPage with title or text search