USENIX Technical Program - Abstract - USENIX Annual
Conference, General Session - June 2000
Plumbing and Other Utilities
Rob Pike, Bell Laboratories
Plumbing is a new mechanism for inter-process communication in Plan 9,
specifically the passing of messages between interactive programs as
part of the user interface. Although plumbing shares some properties
with familiar notions such as cut and paste, it offers a more general
data exchange mechanism without imposing a particular user interface.
The core of the plumbing system is a program called the plumber, which
handles all messages and dispatches and reformats them according to
configuration rules written in a special-purpose language. This approach
allows the contents and context of a piece of data to define how it is
handled. Unlike with drag and drop or cut and paste, the user doesn't
need to deliver the data; the contents of a plumbing message, as
interpreted by the plumbing rules, determine its destination.
The plumber has an unusual architecture: it is a language-driven file
server. This design has distinct advantages. It makes plumbing easy to
add to an existing, Unix-like command environment; it guarantees uniform
handling of inter-application messages; it off-loads from those
applications most of the work of extracting and dispatching messages;
and it works transparently across a network.
- View the full text of this paper in
and PDF form.
- If you need the latest Adobe Acrobat Reader, you can download it
- To become a USENIX Member, please see our Membership Information.
- Current USENIX Members may change their password.