What is the history of the use of "foo" and "bar" in source code examples? (2012)

Origins and Etymology

  • Multiple overlapping origin stories are cited, none conclusively dominant.
  • Military links: WWI graffiti “Foo was here” (possibly from “Forward Observation Officer”); WWII slang FUBAR (“fouled/fucked up beyond all repair/recognition/reason”).
  • Pop‑culture: the 1930s “Smoky Stover” comic heavily used “foo” and “Foomobile,” and some recount a folklore chain: German “furchtbar” → “foo-bar” joke → FUBAR → programming.
  • MIT stories: early AI Lab reports used “foo/bar/baz/quux” as placeholders; one commenter claims “fu” and “bar” were originally used, then “fu” softened to “foo,” but others can’t find archival evidence and call this uncertain.
  • An April 1st IETF RFC on “foo” is cited; readers treat it as partly humorous, so its historical claims are viewed cautiously.

Military and Phonetic Alphabet Connections

  • NATO phonetic alphabet (alpha, bravo, charlie, …) is noted as another military → technical naming influence; older “Able/Baker/Charlie” system is recalled, including its use in atomic tests Able and Baker.
  • Commenters detail non‑NATO phonetic alphabets used by US fire/EMS/law enforcement and mixing of alphabets in practice.
  • Discussion touches on NATO naming of Soviet/Russian submarines and on special pronunciations (“niner,” “Quebec”) to reduce mishearing.

Metasyntactic Variables and Variants

  • Foo/bar/baz/qux/quux are treated as standard metasyntactic variables, comparable to x/y/z in math.
  • Other sequences: quxx, xyzzy/plugh (from Colossal Cave Adventure), gazonk (noted as common in Sweden and in Emacs/Erlang examples), zot (from comics), and personal chains like foo/bar/baz/bing/bang/bong.
  • Some enjoy this shared “hacker lore”; others find it dated or opaque.

Pedagogical Debate: For vs. Against “foo/bar”

  • Critics:
    • Argue foo/bar are meaningless, confusing for beginners and non‑native speakers, and easy to mix up, especially in longer, nontrivial examples.
    • Prefer descriptive names (myList, myString), simple letters (a, b, c), or “thing/stuff,” claiming this clarifies what is a variable, function, or type.
  • Defenders:
    • Say the point is that they mean nothing, preventing readers from over‑focusing on domain details.
    • Compare them to lorem ipsum or algebraic x/y, and value their brevity and conventional ordering.

Profanity, Gender, and Historical Norms

  • One narrative: as more women entered computing in the 1960s, vulgar “fu” was softened to “foo.”
  • Others challenge this as speculative or sexist, arguing women were both over‑protected and subjected to stricter “professional” standards, but there’s no clear evidence this drove the spelling change.
  • General consensus: earlier environments were more openly sexist; how that specifically shaped “foo” remains unclear.

Jargon File and Cultural Canon

  • The Jargon File is mentioned as key background on foobar and hacker slang, but also criticized as dated, culturally biased, and shaped by a controversial maintainer.
  • An earlier “canonical” version is linked; readers note divergences and suggest the need for an updated, more representative lexicon.