S-NET is a declarative coordination language and component technology primarily aimed at modern multicore/many-core chip architectures. It builds on the concept of stream processing to structure dynamically evolving networks of communicating asynchronous components. Components themselves are implemented using a conventional language suitable for the application domain.We present the design and implementation of Distributed S-NET, a conservative extension of S-NET geared towards distributed memory architectures ranging from many-core chip architectures with hierarchical memory organizations to more traditional clusters of workstations, supercomputers and grids.Three case studies illustrate how to use Distributed S-NET to implement different models of parallel execution. Runtimes obtained on a workstation cluster demonstrate how Distributed S-NET allows programmers with little or no background in parallel programming to make effective use of distributed memory architectures with minimal programming effort.