Collaborative editing of text documents

Teamwork


If you are looking for a tool for collaborative text editing across a network, Gobby might be the answer. Gobby lets multiple users edit text documents collaboratively and discuss the changes online.

By Carsten Schnober

andresr, Fotolia

Helpful colleagues: Knowing that the letter has to be out by the end of the business day, they have lined up behind your desk, shoulder-surfing your screen and pointing out typos, tacky phrasing, or whatever. They mean well, but honestly, I would prefer to complete the sentence before they jump on it - and it would be a big help if they took turns shouting!

Gobby offers a convenient group approach to editing a document [1]. The collaborative editor (Figure 1) gives multiple users the opportunity to work on a single document without getting in each others' way. The texts appear on your own screen across the network, and you can collaborate to your heart's content. Different colors highlight contributions by individual users, and the session participants can discuss the results in a separate chat area.

Figure 1: Gobby lets network users collaborate on a single document. Users can discuss changes in a separate chat window.

Classical Model

Gobby relies on the tried-and-trusted client/server model: Users install the program locally on their desktops, and one of the clients additionally acts as a server that the other users log in to. It doesn't really matter which operating system you have because Gobby is available for Linux, Windows, and Mac OS X.

Establishing a connection is easy; thanks to Zeroconf support [2], Gobby automatically locates a server on the local network and offers point-and-click login. Users need to know the server address and enter the address manually if this doesn't work, which will be the case for an Internet connection. Bad luck for Windows users - the Windows version of Gobby does not have Zeroconf support.


Zeroconf: This technology automates the configuration of computers on a network by automatically advertising services such as shared printers, files or directories, and other services to all network clients. Network addresses are assigned automatically. Apple's Appletalk and Microsoft NetBIOS provide this functionality on Mac OS and Windows, respectively; however, the Zeroconf project is looking to develop a solution based on open standards and with comprehensive documentation.
NAT router: When several machines on a LAN share an Internet connection to communicate with the outside world, the method of choice typically relies on a NAT-capable router (NAT = Network Address Translation). The router establishes a connection to the Internet service provider and is assigned an Internet address. Computers on the internal network contact the NAT router, which forwards their requests to the Internet.
Cross compiler: a compiler that runs on one platform but can compile programs for another. For example, Mingw on Linux will create programs that run on Windows if needed.

Internet with Some Concessions

Collaborative editing with Gobby on the Internet can be tricky because Gobby will share with any application. In many cases, NAT routers prevent incoming external connection requests for computers on the internal network. In addition, the Internet address will typically change between sessions, leaving the server operator with the chore of informing the other participants.

A simple workaround does not exist for these issues. Services such as DynIP [3] and DynDNS [4] will give you a permanent Internet address, though. To run a server on an internal network behind a NAT router, you need to configure the router to forward the port you use, which defaults to 6522 for Gobby.

If you have an Internet server with a static IP, the Gobby project gives you a more elegant approach. The Sobby program provides a dedicated server that accepts and manages Gobby client connections but does not have a graphical front-end.

Installation

Users with Ubuntu and Debian can install Gobby version 0.4.1 via their distribution's package management system or by typing apt-get install gobby. Ubuntu users will need to enable the Universe repository. Fedora users can type yum install gobby to install Gobby 0.4.1 conveniently after binding the Fedora Extras package source. Gentoo users can emerge gobby to launch into the install. Users with openSUSE 10.2 (Gobby 0.4.1) and SUSE Linux 10.1 (Gobby 0.3.0) can run YaST to install the packages referred to further down. Next, become root and type rpm -Uhv *.rpm to install the RPM packages.

Do-it-Yourself Gobby

If you have any other Linux distribution, or simply prefer to use the latest 0.4.4 version, you will need to build Gobby from scratch. Building Gobby means installing a number of developer packages up front. Besides the typical requirements, such as the C and C++ compilers (gcc, g++) and Make, would-be Gobby builders will need the developer versions - versions ending in -dev (Debian) or -devel (RPM-based distributions) - of Libsigc++, Gtkmm, Libxml++, GtkSourceView, GnuTLS, and Gtk. If you will be using automatic network configuration, you will also need the Zeroconf library.

The Gobby developers also rely on the MinGW cross-compiler; the package is called mingw or mingw32, depending on your distribution. I also recommend installing Gettext, which provides language support for the front-end. The libraries and programs are included with all major distributions.

The long trek to a do-it-yourself version of Gobby starts with the Net6 package, which handles network communications between Gobby clients and the server. After unpacking by typing tar -xzf net6-1.3.5.tar.gz and changing to the new net6-1.3.5 directory this creates, type ./configure, make, and make install to build and install the Net6 library.

Net6 is followed by Obby, the library that synchronizes collaboratively edited documents. Build and install the archive by first unpacking and then typing ./configure, make, and make install.

Now it's Gobby's turn - you can follow the same steps to build and install. If you also require the dedicated server, don't forget to give Sobby the same treatment.

Starting a Session

After covering the installation mileage, which could be considerable depending on your distribution, you can now launch the program by typing gobby. First, you are given the option of opening a session in the main window (Figure 2) or of joining an existing session (Figure 3). The buttons for this are aptly named Open session... and Join session.... Nothing prevents collaboration between Gobby client versions 0.4.1 and 0.4.4 or collaboration across operating system borders. Gobby 0.3 is excluded, however, because of network protocol changes; the current version uses encrypted data transmission.

Figure 2: Any Gobby client can also be a server for other clients.

Figure 3: Thanks to Zeroconf, Gobby detects current sessions on the local network, allowing users to click to join.

When you launch a new session or join an existing session, the program will prompt you to enter the network port, your username, and your choice of color. Typically, you need not change the default network port of 6522. Users can identify each other and individual contributions by color.

Gobby sessions currently running on the local network are automatically displayed in the Join session dialog, assuming that Zeroconf is running. Manual configuration means entering the server address in the Host box and then clicking on OK.

If you launch your own Gobby session, you can enter a password in the dialog, if needed; any users joining the session will need to know the password. Additionally, the Session file box lets you open a saved version of a previous session. In contrast to the text-only documents, the session file contains both the document content and Gobby-specific details of what changes where made by which users.

Documents

After establishing the Gobby session, any participant can create new documents or open existing files. A message to all users appears in the lower part of the Gobby window, the user chat area. The message contains the name of the document that the participants can now edit collaboratively.

The Document list button or the Window | Document list menu takes you to a dialog box that shows a list of files available to the current Gobby session (Figure 4). Click on Subscribe to open a file in the editor.

Figure 4: The document list window shows the documents opened by other users in the session.

The Gobby editor is reminiscent of the default Gnome editor, Gedit, which is no coincidence because both editors use the GtkSourceView basic library. This means that the Gobby editor also offers syntax highlighting for any major programming language. Compared with Gedit, the integrated Gobby editor lacks a spellchecker, but worse, it also lacks an Undo function (see the "No Undo Function?" box).

Users can save both the text and the whole session at any time. To do so, select Gobby | Save session.... The advantage of saving a session is that it stores both the file content and information on the session participants and the changes they made. If you only need the text in future, you can save it to disk by selecting Session | Save document.

Figure 5: Gobby's user list helps you keep your place in complex multiuser collaborations.
No Undo Function?

Previous versions of Gobby had an Undo function that the developers just lifted from GtkSourceView. However, the Undo function failed to distinguish between contributions by different users in Gobby, meaning that a user clicking on Undo would not undo their last edit, but the last edit by anyone in the session. The developers decided that this function did more harm than good and removed it. A new, improved Undo function is on the wish list for future versions of Gobby, but right now, it does not appear to be advanced enough to make the cut for version 0.5.

No Competition

Gobby has virtually no competition in the field of free collaborative text editing. Nothing has been heard from the KDE-based MateEdit [5] project for more than two years. MoonEdit [6] is a free (as in beer) but unfree (as in freedom) product that has not seen a new release for more than two years, although the developers have announced a new, probably commercial, version dubbed MoonEdit Pro. That said, web services like Google Docs [7] question the necessity of a local application such as Gobby in many work scenarios.

In some cases, one might prefer not to allow all participants in a session to edit and view every single document. More granular access would be useful; anyone with the optional password automatically becomes a peer in the session. The solution is simple: You can always launch a second Gobby instance and establish a session on another port.

The lack of an alternative to Gobby is nothing to worry about. The program has a fairly complete set of features, although the lack of an Undo function and an integrated spellchecker are annoying. Aside from those problems, the Gobby does an admirable job and is very stable. Thanks to Gobby's Zeroconf support, users should have no trouble establishing connections. I was left with a good overall impression.

INFO
[1] Gobby: http://gobby.0x539.de/trac/
[2] Zeroconf: http://www.zeroconf.org
[3] DynIP: http://www.dynip.com
[4] DynDNS: http://dyndns.com
[5] MateEdit: http://mateedit.sourceforge.net
[6] MoonEdit: http://www.moonedit.com
[7] Google Docs: http://docs.google.com