Based upon message passing programming model
User-level libraries provided for explicitly specifying messages to be sent between executing processes on each computer .
Use with regular programming languages (C, C++, ...).
Can be quite difficult to program correctly as we shall see.