Centralized systems are easier to build and maintain as compared to completely distributed systems. However, distributed systems have the potential to be responsive and robust relative to centralized systems. This thesis proposes an architecture and concurrency algorithm for collaborative editing that lies between these extremes and preserves the advantages of both approaches while minimizing their shortcomings The Jupiter collaboration system at Xerox PARC uses a 2-party synchronization protocol for maintaining consistency between two users performing unconstrained edits to the document simultaneously. The primary goal of our work has been to extend this 2-party synchronization protocol to an n-way synchronization algorithm. NetEdit is a prototype collaborative editor built to demonstrate this n-way protocol. It uses a replicated architecture with the processing and data distributed across all the clients and the server. Due to replication, the response time of the local edits performed by the users is quite close to a single user editor. The clients do not need to be aware of other clients in the system since each of them synchronizes with their counterpart at the server. All communication regarding editing operations takes place through this server. As a result this system is quite scalable (linear growth) relative to distributed systems (quadratic growth) in terms of number of communication paths required as the number of clients grow. I discuss the details of this extension and illustrate it through an editing scenario. NetEdit uses groupware widgets (telepointers, and radarview) to distribute awareness information between participants. It supports completely unconstrained editing and allows late joining into a session. It does not assume any structure in terms of roles of participants or protocol for collaboration and thus allow users to form whatever protocol suits them. The results and conclusions derived from a preliminary usability study of NetEdit, discuss its efficacy. They also investigate the role of communication and its use in a groupware setting.