Abstract: The architecture of a collaborative application is characterised by the modules, layers, replicas, threads, and processes into which the application is decomposed; the awareness in these components of collaboration functions; and the interaction among these components. It influences the function, fairness, fault tolerance, ease of modification, and performance of the application, the amount of programming effort required to implement the application, and the reuse of existing single-user code. We present here a design space of existing and potential collaboration architectures and discuss the consequences of choosing different points in this space.