This page gives an introduction to the Saros project for any interested parties. It is a distillation of a number of resources, most of them available at the official Saros website.
What is Saros?
Saros is fully functional Eclipse plug-in that enables two or more developers to edit a project simultaneously in real-time over the Internet and share each other’s changes. All members of a session have an identical copy of an Eclipse project, which Saros keeps in sync as editing progresses.
In addition, Saros provides a number of in-built communication methods (including IM, VoIP and screen-sharing), and also simple user role management (each user can be a “driver” or an “observer”, and a user can automatically “follow” another user’s movements).
Your fellow users can be tracked by the integrated Roster, which shows all your buddies who are available for a shared session. Here’s an image of it in action:
In which scenarios is it useful?
- Joint review: One participant (“driver”) reviews the contents of one or more files together with other participants (“observers”). Saros is set to show the observers the same region of text that the driver sees (“follow mode”). At any time, any participant can highlight text with the mouse for all the others to see. Also, any participant can become driver at any time.
- Introducing beginners: Much like the previous scenario, except that explaining rather than reviewing is the goal. Each of the beginners (staying in the observer role) can individually peek at other regions of the file or even other files without influencing the flow of the session for the others.
- Distributed Party Programming: Two or more participants (parties) work together in a loosely coupled fashion. They work independently much of the time, but can call one of the others to help whenever the need arises, for possibly only a very short time (“Do I need to use A or B here?”) or for a longer episode (“Can you help me decide a good API for this class?”). In this mode, distributed work can even be more powerful than working in the same room, as nobody needs to leave a seat to help multiple others in the course of an hour.
- Distributed Pair Programming (also called remote pair programming) is a particular form of Distributed Party Programming in which two people develop code or text in continuous close collaboration, discussing the approach and combining the best of their ideas.
A bit more detail?
In any mode, markers in every participant’s viewport will indicate who is currently seeing what (“awareness information”). Highlighting text for others is done by means of simple text selection which will be shown in a colour that indicates who performed the selection.
With multiple concurrent drivers (enable this in the preferences), write conflicts can occur. Saros will resolve them consistently by means of the Jupiter algorithm taken from the Open Source project ACE.
Saros will automatically sync the contents of the Eclipse project from the initiator of a session (“host”) to the other participants. Separate high-quality audio conferencing completes the collaboration scenario; we are working on integrating voice conferencing into Saros itself.
Saros uses an XMPP/Jabber server for session initiation and will also use it for all its internal protocol communication if some participants cannot be reached directly via IP (because their computer is behind a firewall or NAT). However, Saros uses STUN to provide low-latency, high-bandwidth direct connections even in the presence of some kinds of NATs. You can optionally synchronise by using version control system information, e.g. if you have Subclipse, all participants simply share SVN repo information and can interact directly with the repository.