  Software engineers who collaborate to develop software in teams often have to
manually merge changes they made to a module (e.g. a class), because the change
conflicts with one that has just been made by another engineer to the same or
another module (e.g. a supplier class). This is due to the fact that engineers
edit code separately, and loosely coordinate their work via a source control or
a software configuration management system (SCM). This work proposes to
eliminate almost all the need to manually merge a recent change, by proposing a
Collaborative Real Time Coding approach. In this approach, valid changes to the
code are seen by others in real time, but intermediate changes (that cause the
code not to compile) result in blocking other engineers from making changes
related to the entity (e.g. method) being modified, while allowing them to work
on most of the system. The subject of collaborative real time editing systems
has been studied for the past 20 years. Research in this field has mostly
concentrated on collaborative textual and graphical editing. In this work we
address the challenges involved in designing a collaborative real time coding
system, as well as present the major differences when compared to collaborative
editing of plain text. We then present a prototype plug in for the Eclipse
Integrated Development Environment (IDE) that allows for a collaborative coding
to take place.
