To provide an efficient, thread--based communication library capable of supporting distributed and parallel processing on variety on platforms. |
To ensure interoperability between different types of architectures with different CPUs and Operating Systems. |
To make the environment as simple as possible without compromising the performance or functionality. |
To assist the programmer in choosing computational nodes and style of interactions between his processes. |