Introduction to LINCKS

A lot of noise has been made lately about “Computer Supported Cooperative Work” (CSCW) and “groupware”. This is an introduction to using an interesting CSCW product, which is licensed under the GNU GPL and is available for Linux. Another article will cover building a small CSCW application with LINCKS.

LINCKS is a multi-user, client-server, object-centered database system built on top of a storage server called NODE. The storage server provides LINCKS with an append-only, object-centered database and object development history (“from which object was this object created?”), temporal history (relationship between objects), and optional command history (which is not enabled by default). An object consists of an image section, where anything can be stored (text, images, sounds, etc.); a set of attributes which, in a sense, types the object; and a set of links to other objects.

The current main user interface, xlincks, is an X11 application that allows you to edit and browse a LINCKS database in a hypertext fashion, using Emacs-like commands. xlincks provides a basic environment for document editing in a work-group setting, but provides only limited mark-up facilities at this time. The hypertext nature of LINCKS, together with the advanced view support, allows easy sharing of information and re-use of parts of documents (section, subsection, or paragraph) simply by creating links to the parts to be used.

A view is a definition of how to present the data to the user. You can define your own views, which are stored and edited like any other objects in the database. You define the logical structure (parts and their order), the location in the database from which to retrieve the different parts and the formatting attributes for the objects. By applying different views to the same objects, you are able to look at a document, for example, as a “full document”, as a “document overview”, or as only the highest level, the table of contents. Any editing of an object performed in one view is automatically propagated to all views built from (containing) the same object.

Also, when several users edit the same documents in a database, LINCKS issues warnings when parallel editing of the same object (a section, subsection, paragraph, etc.) occurs. Thus, you can coordinate your work with other people working with you using a secondary channel (email, talk, telephone, etc.) for synchronization.

LINCKS has its origin as a research database system, developed at the Intelligent Information System Laboratory at the University of Linköping, Sweden. We released LINCKS under the GNU GPL in the Autumn 1993, to gain feedback from outside researchers and users. Since then, we have ported LINCKS to SunOS 4.1.x, SunOS 5.x, Ultrix, AIX, Dynix, Linux, HP-UX, IRIX, SCO, 4.3BSD Reno, and DEC OSF/1 Alpha. It is running under X11R5, X11R6, and OpenWindows (and even X11R4, but not with full functionality). We ported LINCKS to Linux to enable us to run demonstrations on a portable unix box.

Installing and Running LINCKS

To run LINCKS, you must be running the RPC port-mapper (normally started from /etc/rc.d/rc.inet2), a kernel with TCP/IP, and X11 for xlincks. Also, you will need at least 8MB of RAM to run the database servers and the X11 application interface xlincks on the same machine.

To install the LINCKS binary distribution (lincks2x.ybin.tgz), you first should create a new user who will own the database, perhaps called “lincks” (It is not a good idea to install LINCKS as “root”).

  • As root, cd / and un-tar the zipped tar archive.

  • If you created a special LINCKS user, change the owner of all the files in /usr/local/lincks/ directory by typing chown -R lincks /usr/local/lincks.

  • Then make /usr/local/bin/dbpasswd set-user-id “lincks” by typing chown lincks /usr/local/bin/dbpasswd and chmod +s /usr/local/bin/dbpasswd to enable users to modify their own passwords, even though the files are owned by “lincks”

  • Finally, running as user “lincks” start the database server by typing lincks -s /usr/local/lincks/DB

The next step is either to continue reading this article or run the interactive tutorial. To start the on-line tutorial, you invoke xlincks with xlincks/usr/local/lincks/DB. You will be prompted for your LINCKS login and password; give the user name “demo” and the password “demo”.

The following is the LINCKS directory hierarchy:

  • usr/local/man/{manl,catl} for formatted and preformatted manual pages

  • usr/local/bin/ for the LINCKS programs

  • usr/local/lincks/ is the main LINCKS directory with a “ready-to-run” database in the DB subdirectory, postscript documentation, FAQ, README, etc. The bitmaps subdirectory contains X11 bitmaps which might be missing on few systems.