This document discusses distributing OSGi applications across multiple nodes. It describes how the OSGi architecture provides a collaborative service-oriented architecture model within a single Java virtual machine. It then explains how the Distributed OSGi specification allows OSGi services to publish themselves and discover services outside their own runtime, maintaining the OSGi service programming model. The document provides examples of how services can invoke each other across OSGi runtimes. It also describes responsibilities of the DistributionProvider and Discovery services and how service registry hooks can be used. Finally, it outlines a demo using Terracotta middleware to cluster services across OSGi runtimes.