A shared-memory multiprocessor can efficiently support many different programming paradigms. In particular, shared-memory multiprocessors need not be programmed using the shared-memory model. SMP is a structured message-passing software library developed for the BBN Butterfly Parallel Processor that provides an alternative to the shared-memory model of the BBN Uniform System package. SMP supports the construction of process families, a fixed set of asynchronous processes that communicate using messages according to a given interconnection pattern. A dynamic hierarchy of process families is possible. The author describes the SMP user interface, the Butterfly implementation, and his experiences in using a message-passing model to program a shared-memory multiprocessor.