Tuesday, April 28, 2009


A kludge (or kluge) is a workaround, an ad hoc engineering solution, a clumsy or inelegant solution to a problem, typically using parts that are cobbled together.

Kludges are particularly widespread in computer programs, where processing speed is such that they may not make a big difference in performance.


[edit] Etymology

The etymology of kludge is itself a kludge, since there are many overlapping reports as to the word's origin, spelling and pronunciation.

Although the term may have been in use as early as the 1940s in the United Kingdom, the first printed usage given in the Oxford English Dictionary is from an article by Jackson Granholm titled “How to Design a Kludge,” which appeared in the American computer magazine Datamation in February 1962:[1]

An ill-assorted collection of poorly matching parts, forming a distressing whole.

Mr. Granholm goes on to say: "The word ‘kludge’ is...derived from the same root as the German Klug..., originally meaning ‘smart’ or ‘witty ’... ‘kludge’ eventually came to mean ‘not so smart’ or ‘pretty ridiculous’." It seems probable, however, that negative associations were intended from the beginning, since the words "fudge" and "botch" sound similar and have similar connotations. Granholm himself alluded to this less noble dimension in eulogistic terms: "The building of a kludge ... is not work for amateurs. There is a certain, indefinable, masochistic finesse that must go into true kludge building."

The Jargon File dictionary of computer slang (a.k.a. The New Hacker's Dictionary) derives the word from Scottish Gaelic, via British military slang: kludge or kludgie meaning a common toilet.[2]

Another etymology which has been suggested derives from klumsy, lame, ugly, dumb, but good enough. This appears to be a folk etymology, or backronym.

[edit] Spelling and pronunciation

Most dictionaries have the spelling kludge as the headword (pronounced to rhyme with fudge), with kluge (rhymes with stooge) listed as an alternate spelling. The Jargon File however, claims that kluge was the original spelling, and kludge is in fact a variant.[3] The German word klug is pronounced approximately like clook.

[edit] Naval use

In naval slang of the World War II era, a kludge is "any piece of electronics that works well on shore but consistently fails at sea".[4]

A shaggy dog story told in the US Navy in the 1940s tells of Murgatroyd the Kluge Maker, who, when enlisted into the navy, gives "kluge maker" as his occupation.[5] Because none of the officers knows what a kluge is, Murgatroyd ascends through the ranks, eventually becoming "kluge maker, first class". When an admiral demands that Murgatroyd build him a kluge, he constructs a strange object with springs in all directions. He then drops it over the side of the ship into the ocean, where it goes "kkluuge".

The punchline suggests that the intended pronunciation within the story was clug, which is closer to the sound of an object hitting the water than clooge or cludge.

The idea of a jury rig, also marine, is close. Many of Rube Goldberg's or Heath Robinson's machines were kludgey jury rigs and evoked considerable amusement from newspaper and magazine readers worldwide.

[edit] Aerospace engineering use

In aerospace design a kluge was a temporary design using separate commonly available components that were not flight worthy to proof the design and enable concurrent software development while the integrated components were developed and manufactured. The term was in common enough use to appear in a fictional movie about the US space program.[6]

Perhaps the ultimate kludge was the first US space station, Skylab. Its two major components, the Saturn Workshop and the Apollo Telescope Mount, began their development as separate projects (the SWS was kludged from the S-IVB stage of the Saturn 1B and Saturn V launch vehicles, the ATM was kludged from an early design for the descent stage of the Apollo Lunar Module). Later the SWS and ATM were folded into the Apollo Applications Program, but the components were to have been launched separately, then docked together in orbit. In the final design, the SWS and ATM were launched together, but for the single-launch concept to work, the ATM had to pivot 90 degrees on a truss structure from its launch position to its on-orbit orientation, clearing the way for the crew to dock its Apollo Command/Service Module at the axial docking port of the Multiple Docking Adapter.

The Airlock Module's manufacturer, McDonnell Douglas, even recycled the hatch design from its Gemini spacecraft and kludged what was originally designed for the conical Gemini Command Module onto the cylindrical Skylab Airlock Module. The Skylab project, managed by the National Aeronautics and Space Administration's Marshall Space Flight Center, was seen by the Manned Spacecraft Center (later Johnson Space Center) as an invasion of its historical role as the NASA center for manned spaceflight. Thus, MSC personnel missed no opportunity to disparage the Skylab project, calling it "the kludge."

[edit] Computer science use

In modern computing terminology, a kludge (or often a "hack") is a 'solution' to a problem, doing a task, or fixing a system (whether hardware or software) that is inefficient, inelegant, or even unfathomable, but which nevertheless (more or less) works. It has been suggested, as a folk etymology, or backronym, that it means klumsy, lame, ugly, dumb, but good enough; which rather captures the point. To kludge around something is to avoid a bug or some difficult condition by building a kludge, perhaps relying on properties of the bug itself to assure proper operation. It is somewhat similar in spirit to a workaround, only without the grace. A kludge is often used to change the behavior of a system after it is finished, without having to make fundamental changes. Sometimes to keep backwards compatibility, but often simply because it is easier. That something was often originally a crock, which is why it must now be hacked to make it work. Note that a hack might be a kludge, but that 'hack' could be, at least in computing, ironic praise, for a quick fix solution to a frustrating problem.

A kludge is often used to fix an unanticipated problem in an earlier kludge; this is essentially a kind of cruft.

Something might be a kludge if it fails in corner cases, but this is a less common sense as such situations are not expected to come up in typical usage. More commonly, a kludge is a poorly working heuristic which was expected to work well. An intimate knowledge of the context (ie, problem domain and/or the kludge's execution environment) is typically required to build a corner case kludge. As a consequence, they are sometimes ironically praised.

An anecdotal example of a kludge involved a computer part supposedly manufactured in the Soviet Union during the 1960s. The part needed slightly delayed receipt of a signal to work. Rather than setting up a timing system, the kludge was to make the internal wires extra-long, increasing the distance and thus increasing the time the electrical signal took to reach its destination.

A variation on this use of kludge is evasion of an unknown problem or bug in a computer program. Rather than continue to struggle to find out exactly what is causing the bug and how to fix it, the programmer may hack the problem by the simple kludge of writing new code which compensates. For example, if a variable keeps ending up doubled in a certain code area, add code which divides by two when it is used, after the original code has been executed.

In computer networking, use of NAT (Network Address Translation) (RFC 1918) or PAT (Port Address Translation) to cope with the shortage of IPv4 addresses is an example of a kludge, in this case an awkward fix for a fundamental design flaw. Another common example are TSRs like the OpenOffice.org quickstarter, Real Player quickstarter, and Adobe quickstarter.

[edit] Other uses

In the science fiction television series Andromeda, genetically engineered human beings called Nietzscheans use the term disparagingly to refer to genetically unmodified humans.

In Scotland, "kludge" refers to an outside toilet.

[edit] See also

[edit] References

  1. ^ Robina Mapstone (June 7, 1973) (PDF), Computer Oral History Collection, Jackson Granholm, Smithsonian National Museum of American History, http://www.invention.smithsonian.org/downloads/fa_cohc_tr_gran730607.pdf 

  2. ^ Eric S. Raymond, The Jargon File, Eric S. Raymond, http://www.catb.org/~esr/jargon/html/K/kluge.html 

  3. ^ Eric S. Raymond, The Jargon File, Eric S. Raymond, http://www.catb.org/~esr/jargon/html/K/kluge.html 

  4. ^ Eric S. Raymond, The Jargon File, Eric S. Raymond, http://www.catb.org/~esr/jargon/html/K/kluge.html 

  5. ^ Agnes Nolan Underwood (Winter 1947), "Murgatroyd, The Kluge Maker" - New York Folklore Quarterly, Vol III, No. 4, New York Folklore Society 

  6. ^ Marooned (film). 1969. Dialog between space crew and Ted approximately 30 minutes into the movie, following capsule power down. Ted says, "I'm in Huntsville kludging up a simulator of the XRV." The film was based on the 1964 novel of the same name.

[edit] External links

No comments:

Post a Comment