Distributed Artificial Intelligence has been loosely defined in terms of computation by distributed, intelligent agents. Although a variety of projects employing widely ranging methodologies have been reported, work in the field has matured enough to reveal some consensus about its main characteristics and principles. A number of prominent projects are described in detail, and two general frameworks, the System conceptual model and the agent conceptual model, are used to compare the different approaches. The paper concludes by reviewing approaches to formalizing some of the more critical capabilities required by multi-agent interaction.