The Jargon File


The Jargon File
Introduction
How Jargon Works
How to Use the Lexicon

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [^a-zA-Z]

Appendix A --- Appendix B --- Appendix C

Introduction

**************

This document is a collection of slang terms used by various
subcultures of computer hackers.  Though some technical material is
included for background and flavor, it is not a technical dictionary;
what we describe here is the language hackers use among themselves for
fun, social communication, and technical debate.

The `hacker culture' is actually a loosely networked collection of
subcultures that is nevertheless conscious of some important shared
experiences, shared roots, and shared values.  It has its own myths,
heroes, villains, folk epics, in-jokes, taboos, and dreams.  Because
hackers as a group are particularly creative people who define
themselves partly by rejection of `normal' values and working habits,
it has unusually rich and conscious traditions for an intentional
culture less than 40 years old.

As usual with slang, the special vocabulary of hackers helps hold
their culture together -- it helps hackers recognize each other's
places in the community and expresses shared values and experiences.
Also as usual, *not* knowing the slang (or using it inappropriately)
defines one as an outsider, a mundane, or (worst of all in hackish
vocabulary) possibly even a suit.  All human cultures use slang in
this threefold way -- as a tool of communication, and of inclusion,
and of exclusion.

Among hackers, though, slang has a subtler aspect, paralleled perhaps
in the slang of jazz musicians and some kinds of fine artists but hard
to detect in most technical or scientific cultures; parts of it are
code for shared states of *consciousness*.  There is a whole range of
altered states and problem-solving mental stances basic to high-level
hacking which don't fit into conventional linguistic reality any
better than a Coltrane solo or one of Maurits Escher's `trompe l'oeil'
compositions (Escher is a favorite of hackers), and hacker slang
encodes these subtleties in many unobvious ways.  As a simple example,
take the distinction between a kluge and an elegant solution, and
the differing connotations attached to each.  The distinction is not
only of engineering significance; it reaches right back into the
nature of the generative processes in program design and asserts
something important about two different kinds of relationship between
the hacker and the hack.  Hacker slang is unusually rich in
implications of this kind, of overtones and undertones that illuminate
the hackish psyche.

But there is more.  Hackers, as a rule, love wordplay and are very
conscious and inventive in their use of language.  These traits seem
to be common in young children, but the conformity-enforcing machine
we are pleased to call an educational system bludgeons them out of
most of us before adolescence.  Thus, linguistic invention in most
subcultures of the modern West is a halting and largely unconscious
process.  Hackers, by contrast, regard slang formation and use as a
game to be played for conscious pleasure.  Their inventions thus
display an almost unique combination of the neotenous enjoyment of
language-play with the discrimination of educated and powerful
intelligence.  Further, the electronic media which knit them together
are fluid, `hot' connections, well adapted to both the dissemination
of new slang and the ruthless culling of weak and superannuated
specimens.  The results of this process give us perhaps a uniquely
intense and accelerated view of linguistic evolution in action.

Hackish slang also challenges some common linguistic and
anthropological assumptions.  For example, it has recently become
fashionable to speak of `low-context' versus `high-context'
communication, and to classify cultures by the preferred context level
of their languages and art forms.  It is usually claimed that
low-context communication (characterized by precision, clarity, and
completeness of self-contained utterances) is typical in cultures
which value logic, objectivity, individualism, and competition; by
contrast, high-context communication (elliptical, emotive,
nuance-filled, multi-modal, heavily coded) is associated with cultures
which value subjectivity, consensus, cooperation, and tradition.  What
then are we to make of hackerdom, which is themed around extremely
low-context interaction with computers and exhibits primarily
"low-context" values, but cultivates an almost absurdly high-context
slang style?

The intensity and consciousness of hackish invention make a
compilation of hacker slang a particularly effective window into the
surrounding culture -- and, in fact, this one is the latest version of
an evolving compilation called the `Jargon File', maintained by
hackers themselves for over 15 years.  This one (like its ancestors)
is primarily a lexicon, but also includes `topic entries' which
collect background or sidelight information on hacker culture that
would be awkward to try to subsume under individual entries.

Though the format is that of a reference volume, it is intended that
the material be enjoyable to browse.  Even a complete outsider should
find at least a chuckle on nearly every page, and much that is
amusingly thought-provoking.  But it is also true that hackers use
humorous wordplay to make strong, sometimes combative statements about
what they feel.  Some of these entries reflect the views of opposing
sides in disputes that have been genuinely passionate; this is
deliberate.  We have not tried to moderate or pretty up these
disputes; rather we have attempted to ensure that *everyone's* sacred
cows get gored, impartially.  Compromise is not particularly a hackish
virtue, but the honest presentation of divergent viewpoints is.

The reader with minimal computer background who finds some references
incomprehensibly technical can safely ignore them.  We have not felt
it either necessary or desirable to eliminate all such; they, too,
contribute flavor, and one of this document's major intended audiences
--- fledgling hackers already partway inside the culture -- will benefit
from them.

A selection of longer items of hacker folklore and humor is included
in Appendix A, Hacker_Folklore. The `outside' reader's attention is
particularly directed to Appendix B, A_Portrait_of_J._Random_Hacker.
Appendix C, the Bibliography, lists some non-technical works which
have either influenced or described the hacker culture.

Because hackerdom is an intentional culture (one each individual must
choose by action to join), one should not be surprised that the line
between description and influence can become more than a little
blurred.  Earlier versions of the Jargon File have played a central
role in spreading hacker language and the culture that goes with it to
successively larger populations, and we hope and expect that this one
will do likewise.

Of Slang, Jargon, and Techspeak

=================================

Linguists usually refer to informal language as `slang' and reserve
the term `jargon' for the technical vocabularies of various
occupations.  However, the ancestor of this collection was called the
`Jargon File', and hackish slang is traditionally `the jargon'.  When
talking about the jargon there is therefore no convenient way to
distinguish it from what a *linguist* would call hackers' jargon
--- the formal vocabulary they learn from textbooks, technical papers,
and manuals.

To make a confused situation worse, the line between hackish slang and
the vocabulary of technical programming and computer science is fuzzy,
and shifts over time.  Further, this vocabulary is shared with a wider
technical culture of programmers, many of whom are not hackers and do
not speak or recognize hackish slang.

Accordingly, this lexicon will try to be as precise as the facts of
usage permit about the distinctions among three categories:

   * `slang': informal language from mainstream English or
     non-technical subcultures (bikers, rock fans, surfers, etc).

   * `jargon': without qualifier, denotes informal `slangy' language
     peculiar to or predominantly found among hackers -- the subject
     of this lexicon.

   * `techspeak': the formal technical vocabulary of programming,
     computer science, electronics, and other fields connected to
     hacking.

This terminology will be consistently used throughout the remainder of
this lexicon.

The jargon/techspeak distinction is the delicate one.  A lot of
techspeak originated as jargon, and there is a steady continuing
uptake of jargon into techspeak.  On the other hand, a lot of jargon
arises from overgeneralization of techspeak terms (there is more about
this in the Jargon_Construction section below).

In general, we have considered techspeak any term that communicates
primarily by a denotation well established in textbooks, technical
dictionaries, or standards documents.

A few obviously techspeak terms (names of operating systems,
languages, or documents) are listed when they are tied to hacker
folklore that isn't covered in formal sources, or sometimes to convey
critical historical background necessary to understand other entries
to which they are cross-referenced.  Some other techspeak senses of
jargon words are listed in order to make the jargon senses clear;
where the text does not specify that a straight technical sense is
under discussion, these are marked with `[techspeak]' as an etymology.
Some entries have a primary sense marked this way, with subsequent
jargon meanings explained in terms of it.

We have also tried to indicate (where known) the apparent origins of
terms.  The results are probably the least reliable information in the
lexicon, for several reasons.  For one thing, it is well known that
many hackish usages have been independently reinvented multiple times,
even among the more obscure and intricate neologisms.  It often seems
that the generative processes underlying hackish jargon formation have
an internal logic so powerful as to create substantial parallelism
across separate cultures and even in different languages!  For
another, the networks tend to propagate innovations so quickly that
`first use' is often impossible to pin down.  And, finally, compendia
like this one alter what they observe by implicitly stamping cultural
approval on terms and widening their use.

Despite these problems, the organized collection of jargon-related
oral history for the new compilations has enabled us to put to rest
quite a number of folk etymologies, place credit where credit is due,
and illuminate the early history of many important hackerisms such as
kluge, cruft, and foo.  We believe specialist lexicographers
will find many of the historical notes more than casually instructive.

Revision History

==================

The original Jargon File was a collection of hacker jargon from
technical cultures including the MIT AI Lab, the Stanford AI lab
(SAIL), and others of the old ARPANET AI/LISP/PDP-10 communities
including Bolt, Beranek and Newman (BBN), Carnegie-Mellon University
(CMU), and Worcester Polytechnic Institute (WPI).

The Jargon File (hereafter referred to as `jargon-1' or `the File')
was begun by Raphael Finkel at Stanford in 1975.  From this time until
the plug was finally pulled on the SAIL computer in 1991, the File was
named AIWORD.RF[UP,DOC] there.  Some terms in it date back
considerably earlier (frob and some senses of moby, for instance,
go back to the Tech Model Railroad Club at MIT and are believed to
date at least back to the early 1960s).  The revisions of jargon-1
were all unnumbered and may be collectively considered `Version 1'.

In 1976, Mark Crispin, having seen an announcement about the File on
the SAIL computer, FTPed a copy of the File to MIT.  He noticed that
it was hardly restricted to `AI words' and so stored the file on his
directory as AI:MRC;SAIL JARGON.

The file was quickly renamed JARGON > (the `>' caused versioning under
ITS) as a flurry of enhancements were made by Mark Crispin and Guy L.
Steele Jr.  Unfortunately, amidst all this activity, nobody thought of
correcting the term `jargon' to `slang' until the compendium had
already become widely known as the Jargon File.

Raphael Finkel dropped out of active participation shortly thereafter
and Don Woods became the SAIL contact for the File (which was
subsequently kept in duplicate at SAIL and MIT, with periodic
resynchronizations).

The File expanded by fits and starts until about 1983; Richard
Stallman was prominent among the contributors, adding many MIT and
ITS-related coinages.

In Spring 1981, a hacker named Charles Spurgeon got a large chunk of
the File published in Stewart Brand's "CoEvolution Quarterly" (issue
29, pages 26--35) with illustrations by Phil Wadler and Guy Steele
(including a couple of the Crunchly cartoons).  This appears to have
been the File's first paper publication.

A late version of jargon-1, expanded with commentary for the mass
market, was edited by Guy Steele into a book published in 1983 as "The
Hacker's Dictionary" (Harper & Row CN 1082, ISBN 0-06-091082-8).  The
other jargon-1 editors (Raphael Finkel, Don Woods, and Mark Crispin)
contributed to this revision, as did Richard M. Stallman and Geoff
Goodfellow.  This book (now out of print) is hereafter referred to as
`Steele-1983' and those six as the Steele-1983 coauthors.

Shortly after the publication of Steele-1983, the File effectively
stopped growing and changing.  Originally, this was due to a desire to
freeze the file temporarily to facilitate the production of
Steele-1983, but external conditions caused the `temporary' freeze to
become permanent.

The AI Lab culture had been hit hard in the late 1970s by funding cuts
and the resulting administrative decision to use vendor-supported
hardware and software instead of homebrew whenever possible.  At MIT,
most AI work had turned to dedicated LISP Machines.  At the same time,
the commercialization of AI technology lured some of the AI Lab's best
and brightest away to startups along the Route 128 strip in
Massachusetts and out West in Silicon Valley.  The startups built LISP
machines for MIT; the central MIT-AI computer became a TWENEX system
rather than a host for the AI hackers' beloved ITS.

The Stanford AI Lab had effectively ceased to exist by 1980, although
the SAIL computer continued as a Computer Science Department resource
until 1991.  Stanford became a major TWENEX site, at one point
operating more than a dozen TOPS-20 systems; but by the mid-1980s most
of the interesting software work was being done on the emerging BSD
UNIX standard.

In April 1983, the PDP-10-centered cultures that had nourished the
File were dealt a death-blow by the cancellation of the Jupiter
project at Digital Equipment Corporation.  The File's compilers,
already dispersed, moved on to other things.  Steele-1983 was partly a
monument to what its authors thought was a dying tradition; no one
involved realized at the time just how wide its influence was to be.

By the mid-1980s the File's content was dated, but the legend that had
grown up around it never quite died out.  The book, and softcopies
obtained off the ARPANET, circulated even in cultures far removed from
MIT and Stanford; the content exerted a strong and continuing
influence on hackish language and humor.  Even as the advent of the
microcomputer and other trends fueled a tremendous expansion of
hackerdom, the File (and related materials such as the AI_Koans in
Appendix A) came to be seen as a sort of sacred epic, a hacker-culture
Matter of Britain chronicling the heroic exploits of the Knights of
the Lab.  The pace of change in hackerdom at large accelerated
tremendously -- but the Jargon File, having passed from living
document to icon, remained essentially untouched for seven years.

This revision contains nearly the entire text of a late version of
jargon-1 (a few obsolete PDP-10-related entries were dropped after
careful consultation with the editors of Steele-1983).  It merges in
about 80% of the Steele-1983 text, omitting some framing material and
a very few entries introduced in Steele-1983 that are now also
obsolete.

This new version casts a wider net than the old Jargon File; its aim
is to cover not just AI or PDP-10 hacker culture but all the technical
computing cultures wherein the true hacker-nature is manifested.  More
than half of the entries now derive from Usenet and represent jargon
now current in the C and UNIX communities, but special efforts have
been made to collect jargon from other cultures including IBM PC
programmers, Amiga fans, Mac enthusiasts, and even the IBM mainframe
world.

Eric S. Raymond <esr@snark.thyrsus.com> maintains the new File with
assistance from Guy L. Steele Jr. <gls@think.com> these are the
persons primarily reflected in the File's editorial `we', though we
take pleasure in acknowledging the special contribution of the other
coauthors of Steele-1983.  Please email all additions, corrections,
and correspondence relating to the Jargon File to jargon@thyrsus.com.

(Warning: other email addresses appear in this file *but are not
guaranteed to be correct* later than the revision date on the first
line.  *Don't* email us if an attempt to reach your idol bounces
--- we have no magic way of checking addresses or looking up people.)

The 2.9.6 version became the main text of "The New Hacker's
Dictionary", by Eric Raymond (ed.), MIT Press 1991, ISBN
0-262-68069-6.

The 3.0.0 version was published in September 1993 as the second
edition of "The New Hacker's Dictionary", again from MIT Press (ISBN
0-262-18154-1).

If you want the book, you should be able to find it at any of the
major bookstore chains.  Failing that, you can order by mail from

        The MIT Press
        55 Hayward Street
        Cambridge, MA 02142

or order by phone at (800)-356-0343 or (617)-625-8481.

The maintainers are committed to updating the on-line version of the
Jargon File through and beyond paper publication, and will continue to
make it available to archives and public-access sites as a trust of
the hacker community.

Here is a chronology of the high points in the recent on-line
revisions:

Version 2.1.1, Jun 12 1990: the Jargon File comes alive again after a
seven-year hiatus.  Reorganization and massive additions were by Eric
S.  Raymond, approved by Guy Steele.  Many items of UNIX, C, USENET,
and microcomputer-based jargon were added at that time.

Version 2.9.6, Aug 16 1991: corresponds to reproduction copy for book.
This version had 18952 lines, 148629 words, 975551 characters, and
1702 entries.

Version 2.9.8, Jan 01 1992: first public release since the book,
including over fifty new entries and numerous corrections/additions to
old ones.  Packaged with version 1.1 of vh(1) hypertext reader.  This
version had 19509 lines, 153108 words, 1006023 characters, and 1760
entries.

Version 2.9.9, Apr 01 1992: folded in XEROX PARC lexicon.  This
version had 20298 lines, 159651 words, 1048909 characters, and 1821
entries.

Version 2.9.10, Jul 01 1992: lots of new historical material.  This
version had 21349 lines, 168330 words, 1106991 characters, and 1891
entries.

Version 2.9.11, Jan 01 1993: lots of new historical material.  This
version had 21725 lines, 171169 words, 1125880 characters, and 1922
entries.

Version 2.9.12, May 10 1993: a few new entries & changes, marginal
MUD/IRC slang and some borderline techspeak removed, all in
preparation for 2nd Edition of TNHD.  This version had 22238 lines,
175114 words, 1152467 characters, and 1946 entries.

Version 3.0.0, Jul 27 1993: manuscript freeze for 2nd edition of TNHD.
This version had 22548 lines, 177520 words, 1169372 characters, and
1961 entries.

Version 3.1.0, Oct 15 1994: interim release to test WWW conversion.
This version had 23197 lines, 181001 words, 1193818 characters, and
1990 entries.

Version 3.2.0, Mar 15 1995: Spring 1995 update.  This version had
23822 lines, 185961 words, 1226358 characters, and 2031 entries.


Version numbering: Version numbers should be read as
major.minor.revision.  Major version 1 is reserved for the `old' (ITS)
Jargon File, jargon-1.  Major version 2 encompasses revisions by ESR
(Eric S. Raymond) with assistance from GLS (Guy L.  Steele, Jr.)
leading up to and including the second paper edition.  From now on,
major version number N.00 will probably correspond to the Nth paper
edition.  Usually later versions will either completely supersede or
incorporate earlier versions, so there is generally no point in
keeping old versions around.

Our thanks to the coauthors of Steele-1983 for oversight and
assistance, and to the hundreds of Usenetters (too many to name here)
who contributed entries and encouragement.  More thanks go to several
of the old-timers on the Usenet group alt.folklore.computers, who
contributed much useful commentary and many corrections and valuable
historical perspective: Joseph M. Newcomer <jn11+@andrew.cmu.edu>,
Bernie Cosell <cosell@bbn.com>, Earl Boebert <boebert@SCTC.com>, and
Joe Morris <jcmorris@mwunix.mitre.org>.

We were fortunate enough to have the aid of some accomplished
linguists.  David Stampe <stampe@uhunix.uhcc.hawaii.edu> and Charles
Hoequist <hoequist@bnr.ca> contributed valuable criticism; Joe Keane
<jgk@osc.osc.com> helped us improve the pronunciation guides.

A few bits of this text quote previous works.  We are indebted to
Brian A. LaMacchia <bal@zurich.ai.mit.edu> for obtaining permission
for us to use material from the "TMRC Dictionary"; also, Don Libes
<libes@cme.nist.gov> contributed some appropriate material from his
excellent book "Life With UNIX".  We thank Per Lindberg
<per@front.se>, author of the remarkable Swedish-language 'zine
"Hackerbladet", for bringing "FOO!" comics to our attention and
smuggling one of the IBM hacker underground's own baby jargon files
out to us.  Thanks also to Maarten Litmaath for generously allowing
the inclusion of the ASCII pronunciation guide he formerly maintained.
And our gratitude to Marc Weiser of XEROX PARC
<Marc_Weiser.PARC@xerox.com> for securing us permission to quote from
PARC's own jargon lexicon and shipping us a copy.

It is a particular pleasure to acknowledge the major contributions of
Mark Brader <msb@sq.com> and Steve Summit <scs@adam.mit.edu> to the
File and Dictionary; they have read and reread many drafts, checked
facts, caught typos, submitted an amazing number of thoughtful
comments, and done yeoman service in catching typos and minor usage
bobbles.  Their rare combination of enthusiasm, persistence,
wide-ranging technical knowledge, and precisionism in matters of
language has been of invaluable help.  The sustained volume and
quality of Mr. Brader's input over many months, especially, has only
allowed him to escape co-editor credit by the slimmest of margins.

Finally, George V. Reilly <georgere@microsoft.com> helped with TeX
arcana and painstakingly proofread some 2.7 and 2.8 versions, and Eric
Tiedemann <est@thyrsus.com> contributed sage advice throughout on
rhetoric, amphigory, and philosophunculism.


The Jargon File
Introduction
How Jargon Works
How to Use the Lexicon

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [^a-zA-Z]

Appendix A --- Appendix B --- Appendix C