CCF is a software system that supports collaborative, distributed, computer-based problem solving in the natural sciences, business, government, and in educational environments. The goal is to evolve a virtual environment for distributed computation that supports integrated human AV communication, high performance heterogeneous computing and distributed data management facilities. CCF is a research project at Emory University involving the Math/Computer Science and Chemistry departments.


This is alpha release 0.99 of CCF -- Collaborative Computing Frameworks.

This software is provided as is with no warranty expressed or implied. We hope you find it useful, but we won't be held responsible for any damage that may occur from reading, compiling, installing, using, or even thinking about it.


CCF is Copyright (C) 1996 by Emory University except for the code in directories GSM, LPC, LPC10 in the CCFaudio directory and is distributed under the terms of GNU General Public License (GPL) and the GNU Library General Public License (LPGL). The files COPYING and COPYING.LIB in each directory will tell exact licensing restrictions.

This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the license, or (at your option) any later version.


CCF was created by Vaidy Sunderam, Injong Rhee, Alan Krantz, Shun Yan Cheung, Julie Sult, Soeren Olesen, Paul Gray, Phil Hutto, Sarah Chodrow, Michael Hirsch, Ted Goddard, Mic Grigni, N. Balaguru, Jim Nettles, Luigi Marzilli, Sue Onuschak, Scott Childs, Kevin Williams.

The CCF project is sponsored by the U.S. National Science Foundation under the multidisciplinary challenges initiative.

CCF currently supports three platforms: IRIX-6.2, SunOS-5.6, and SunOS-5.5.1. The SunOS-5.6 version is the most thoroughly tested.


The CCFxmux directory contains the source for two components: ccfx and ccsm that together comprise the application multiplexing capability of CCF. ccsm implements the distributed virtual desktop and is the primary user interface for CCF. Together ccsm and ccfx implement a distributed X pseudo-server. ccsm is launched by session participants. It, in turn, lauches a background ccfx process whenever a participant joins or creates a session. X applications launched by a participant, connect to the local ccfx. This ccfx then multicasts a modified X stream to the ccsm's of all other session participants. These X streams are then further modified by the remote ccsm's as required by the local environment before being transmitted to the real local X server for display.

A ccfx is currently started on the local machine when a session is joined but other configurations are possible. It is possible for a session participant to view and remotely manipulate applications in a session without a ccfx running but then no applications can be launched locally.

The CCFxmux package contains four subdirectories:


The gui directory contains interface routines used by ccsm. The share directory contains utilities common to both ccfx and ccsm.


Applications can not be launched until the ccsm user joins or creates a session. Sessions can only be established if the CCF white pages and session name server (cctlwp and ccfsns) are running on a machine described by the environment variable CCTL_WP_HOST_NAME.

Sometimes a ccfx from a previous session has difficulty terminating properly. Since ccfx uses a well-known port, a newly launched ccfx will fail. If an old ccfx is still running (or perhaps a ccfx launched by another user on the same machine) application launching will fail. Use the PERL SCRIPT ccfzap to kill all CCF components before restarting:

% CCF_BIN/ccfzap

% CCF_BIN/ccsm

The script ccfzap will only kill CCF components owned by the current user. If another user is running CCF components on the same machine, you may not run ccsm or ccfx on the same machine.

If you have difficulty creating or joining a session, you may need to kill and reset cctlwp and ccfsns or simply start new instances of these applications on another machine. Be sure to reset CCTL_WP_HOST_NAME if you run the servers on a new machine.

Various diagnostics and error messages are printed in the shell window used to start ccsm. If you see repeated messages like these:

CHANNEL default channel(1):packet: 40 is multicasted (8)
CHANNEL default channel(1):packet: 41 is multicasted (8)
CHANNEL default channel(1):packet: 42 is multicasted (8)
CHANNEL default channel(1):packet: 43 is multicasted (8)
CHANNEL default channel(1):packet: 40 is multicasted (8)
CHANNEL default channel(1):packet: 41 is multicasted (8)
CHANNEL default channel(1):packet: 42 is multicasted (8)
CHANNEL default channel(1):packet: 43 is multicasted (8)

the multicast transport layer (CCTL) is timing out and retransmitting. It is likely that some CCF component has failed or crashed (like ccsm, ccfx, ccfaudio, ccfchat, ccfcb, or ccfdssh). Existing participants may be able to continue working but no new participants may join the session.

It is not currently possible to leave a session and successfully join another during the same invocation of ccsm. (cctl currently lacks a working failure detector and can't reliably distinguish participants that fail and leave.) To initiate or join another session, simply exit and restart ccsm.

ccsm and ccfx manipulate the X stream generated by client X applications. Occasionally these manipulations involve reordering the original X stream sequence numbers. Xlib implementations (provided by various vendors) sometimes detect harmless modifications to the sequence and report warnings such as these:
Xlib: sequence lost (0x10000 > 0x64) in reply type 0xc!
Xlib: sequence lost (0x104ea > 0x67) in reply type 0xc!
Xlib: sequence lost (0x104ed > 0x6c) in reply type 0x8!
Xlib: sequence lost (0x104ea > 0x6f) in reply type 0xc!
Xlib: sequence lost (0x104ed > 0x75) in reply type 0x8!
Xlib: sequence lost (0x104ea > 0x75) in reply type 0x8!
Xlib: sequence lost (0x104ea > 0x77) in reply type 0xc!
Xlib: sequence lost (0x104e7 > 0x77) in reply type 0xc!

Such warnings can be safely ignored.

Some MOTIF applications fail to run properly (nothing is displayed or the application crashes or hangs). Others may hang during the use of pulldown menus. If an application fails while controlling exclusive access to the pointer, keyboard or display, it may be necessary to kill it (or ccsm) by logging in from another machine.

ccsm and ccfx currently fail to reclaim used file descriptors. It is possible exceed the system-imposed per-process file descriptor limit (usually 64) by opening and closing a large number of applications in a single session.

Users may experience severe delays across slow or unreliable Internet links.


A desktop

ccsm is the session manager portion of the ccf. ccsm creates a "virtual desktop" which provides an interface to collaborative tools (audio, clearboard, chat, and dataspace) and allows users to share applications.


Navigation in the virtual desktop can be done in several ways:

  1. The horizontal and vertical scroll bars
  2. The global navigation tool (the button next to the home icon) This tool shows the contents of the entire virtual desktop, including windows that are not currently in the screen display. The white box indicates the area of the virtual desktop you are currently viewing.

    To activate and use:

    1. Click this icon.
    2. Click or drag the white box with the left mouse button to the portion of the virtual desktop you wish to view.
    3. To move the pop-up window, click and hold middle mouse button and move window to a new location.
    4. Use the right mouse button to close the window (or click on the icon again).

  3. Click and hold a mouse button in the white virtual desktop background, then drag to move around the virtual desktop.

  4. Home button - returns you to upper left corner of virtual desktop when clicked.

The CCSM menu bar

Session menubar

The main ccsm menu bar has four pulldowns/buttons:

  1. Session
  2. Tools
  3. Applications
  4. Show/Hide Toolbar


To begin using the ccf, one user must create a session for others to join.

To create a session:

  1. Click the "Session" button in the upper left-hand corner of the screen with the left mouse button.

  2. "Create New Session". A new window will open asking for a Session Name and Description.

  3. Move the mouse pointer into the Session Name box and type in the name of the session. The Description field is optional.

  4. After the necessary information is entered, click the "Start" button to begin a session.

To join an existing session:

  1. Select the "Join Session" option under the Session menu. A window showing the list of active sessions will appear.

  2. Click on the name of a session. You will see a list of participants and a description of the session.

  3. Click the "Join" option in the lower left-hand corner of this window.

To quit a session:


To launch the audio, chat, clearboard, or dataspace tool:

  1. Click on the Tools button in the main ccsm menu. A window will appear listing the four tools.

  2. Select the box next to the tool(s) that you wish to launch.

  3. Select "Run".

The "Save" button will save the settings in this window for future sessions.


The applications button is used to configure and launch X-based applications into the ccsm.

To configure and launch new applications:

  1. Click the "Applications" button and select "CONFIG NEW APP". A new window will appear in which you can configure parameters for the new application.

  2. In the Abbrev: line, enter a name for the application.

  3. In the Command: line, give the command necessary to launch the application (the same command you would use to launch the application from a shell).

  4. The Options: line is used to enter any special options for the application, including command line arguments.

  5. The Working Dir: line is used to specify a working directory.

  6. Select either 8- or 24-bit multiplexing for the application. Certain applications will only work in one of the two modes; if you are unsure of the mode, try the 24-bit mode first.

  7. Once the information is entered, click "Save Config".

  8. Clicking on the name of the abbreviation and select "Run".

  9. To launch previously configured applications:

    Manipulating Application Windows

    Application Window within CCSM

    New application window(s) will appear with a blue border in the upper left-hand corner of the ccsm window.

    To move a window, click and hold the left mouse button on this border and drag to desired location.

    To iconify a window, click the box in the upper right-hand corner with the left mouse button. To restore window size, click this same button.

    To refresh a window's display, click the button to the left of the colored circle in the upper right-hand corner.

    Application Control/Token Passing

    A colored circle to the left of the iconify button indicates who has control of the application. A green circle indicates that you have control of the application. A red circle indicates that someone else has control of that application; the name of the person who has control will be listed to the left of the circle.

    To request application control:

    To change application control:

    To snatch application control:

    The button at the upper left corner of the blue border provides many options, several of which have already been described. Additionally, Raise and Lower are used to change a window's position relative to others with which it overlaps.


    CCSM toolbar

    This button displays or hides icons associated with the audio (leftmost three icons), chat (fourth icon),and clearboard tools (rightmost five icons).