Download - Anonymous FTP directory - Mailing lists - Current task list - Screenshots - Reading list - Source Forge project page - Source Forge

If you live in Europe: please sign this petition against software patents.

A DPS extension for XFree86

Table of contents

This page presents the DPS extension for XFree86 -- a free implementation of a protocol extension mostly compatible with Display PostScript (r).

Introduction

The X Window System (X11) is the most commonly used window system on Unix-like systems. X11 has many advantages: it is small and efficient, it runs on a wide range of hardware, it is network-transparent, it is well-documented. X11 offers powerful facilities for window management, for event handling, for synchronisation, and for inter-client communication. Unfortunately, the facilities offered by X11 for rendering are often not sufficient for many applications. Jim Gettys, one of the creators of X11, when arguing about the need for a rendering extension, wrote the following:

We designed a good (I'll say it: damn fine) window system, with a (with 20-20 hindsight) poor rendering system.

It seemed like the right idea at the time (in fact, it probably was the right idea at the time), but technology has finally run over the idea. I had qualms even in 1987 about X11's rendering model, but did not understand enough about alternatives (just developed, and certainly not practical on the machines of the day) to protest too loudly about what we were doing.

X11, however, is extensible, and people have developed a number of rendering extensions to X11. Most notable are GLX -- an interface to OpenGL (see also Mesa and DRI), and DPS/X -- an interface to Display PostScript (DPS).

Unlike other extensions, DPS does not offer a procedural interface. DPS clients interact with the server by requesting that it execute snippets of code -- known as wraps -- in a programming language called PostScript (PS). A wrap may consist of a single PS instruction, thus simulating a procedural API. A wrap may also consist of a large PS procedure definition, which will later allow the client to request complex rendering with a single request. This form of interaction is known as code mobility.

It is important to understand that DPS/X does not replace the X server, but extends it. A client, even when it does all rendering through DPS, still uses core X requests for event handling, window management, inter-client communication, etc.

In short, DPS offers the following features:

DPS does not offer the following:

For more information on DPS, see our collection of DPS information.

About this implementation

The DPS extension for XFree86 is a platform-independent loadable server module for XFree86 4.0 and later. This means that you do not need to recompile the X server in order to use it -- the extension is loaded at run time. This also means that a version compiled on, say, GNU/Linux/Intel should in principle work on FreeBSD/Intel. On the other hand, it means that all the code needs to be written in the ``C'' programming language.

In principle, this implementation should work on all the platforms supported by XFree86 4; this includes a number of platforms running under GNU/Linux, FreeBSD, NetBSD, OpenBSD and commercial Unixen. At the time of writing, it has only been tested on GNU/Linux/Intel and GNU/Linux/PowerPC; however, the fact that it works on both little- and big-endian architectures bodes well for its portability. As far as I know, there are no GCCisms in the code. (Please drop me a note if you try it out on other platforms.)

This is not a Display PostScript implementation. PostScript and Display PostScript are registered trademarks of Adobe Coporation, and only they have the right to call their implementation Display PostScript. (As far as I know, the acronym DPS is not trademarked; please inform me if you know otherwise).

Status

The extension is in pre-alpha state, but is fast getting to a state where it might be useful for experienced DPS users. If you have an urgent need for running DPS code on XFree86, however, please consider using dgs.

I have managed to to correctly run the following clients:

OPENSTEP for Solaris will not run until we implement the NeXT extensions.

To see some clients in action, please see our screenshots page.

How you can help

Please see our current tasks list for a list of projects that you may want to help with. If you decide to work on any of these projects, and are willing to make your code available to us under the X11/MIT license, please send a note to the devel mailing list (dps-devel at lists.sourceforge.net) to let us know.

We are also looking for sample XDPS clients. If you have the source code for any XDPS clients that you would like to make available to us for testing (under any reasonable license) and are legally entitled to do so, please drop us note on the devel list.

NeXTstep/OPENSTEP clients should be donated to the GNUstep project instead.

Mailing lists

There are currently two open and one closed mailing lists relevant to this project.

The dps-announce list is a very low traffic mailing list that is reserved for announcements of new versions. The dps-devel list is an open mailing list dealing with issues related to the development of the DPS extension. Please check the DPS mailing lists page at Source Forge for more information.

There is a DPS list at XFree86. This list is only available to XFree86 developers and is not used much.

Download

Please download one of the released versions of the DPS extension. This code is for XFree86 version 4.0 or later. Note in particular that versions 0.0.2 and later will not work with anything earlier than XFree86 3.9.18.

Other source code is available from our public FTP directory on dps.sourceforge.net:/pub/dps/. In particular, this directory contains the sources of Adobe's DPS client library and example code. While the DPS library has been integrated into the XFree86 4.0 source tree, you may still want to try out the sample code.

Licensing issues

The following information is provided in good faith, but with no warranty whatsoever. I suggest that you consult a lawyer before taking action based on it.

The DPS extension consists of code under two distinct licenses. All the code written by me comes under the X11 license, which roughly speaking allows you to do anything with it except claiming that you wrote it. Aladdin Ghostscript, the PostScript interpreter that we use, comes under the ``Aladdin Free Public License'' (AFPL), a license that forbids commercial redistribution, mandates dating and commenting all modifications and requires distributing source code (not just a pointer to the source code), but doesn't constrain linking or use.

L. Peter Deutsch, the author, maintainer, and copyright holder of Ghostscript, has assured me that this version of Ghostscript will be re-released under the GNU Public License (GPL) in roughly a year's time.

Please do not write to Mr. Deutsch about licensing issues. I have extensively discussed these issues with him.

This heterogeneous licensing means that we need to be very careful about separating our code from Ghostscript code. All code that is suitable for inclusion in the XFree86 source tree must go in the extension code or the rendering library, and carry a suitable copyright notice. Rendering code, in particular, we are likely to want to reuse for other pieces of XFree86.

Information about DPS

DPS publications

We have compiled a hopefully useful list of publications about DPS, both on paper and in electronic form.

Related systems

Sun Microsystems' NeWS, developed by Gosling, Rosenthal, and a bunch of others, was the direct predecessor to DPS. Unlike DPS, a NeWS client would do everything in PostScript, including window management and event handling. NeWS aficionados consider DPS to be but a poor imitation of The Real Thing. The NeWS Book is still available.

The NeWS Book, James Gosling, David S. H. Rosenthal and Michelle J. Arden. The Sun technical reference library, Springer-Verlag, 1989.

Other systems based on mobility -- the ability of a machine to send code to another machine over the network -- include the Java System, designed by Gosling (again!) and Steele, as well as Squeak, by Cardelli and Pike.

Luca Cardelli and Rob Pike. Squeak: a Language for Communicating with Mice. Proc. of SIGGRAPH'95, Computer Graphics 19:3, San Francisco, 1995. pp. 199-204.

Other implementations of DPS

For many years, Adobe used to license a DPS implementation (based on their CPSI PostScript interpreter) to workstation vendors. This implementation is included in a number of commercial systems, including NeXTStep/OPENSTEP, SunOS 4, Sun Solaris 2, IBM AIX, HP/UX and earlier versions of Digital Unix/Tru64 Unix (Compaq appears no longer to provide DPS in the latest versions of Tru64 Unix). The current status of the Adobe DPS implementation is unclear, but it might be the case that they no longer support it.

The GNUstep project have been working for some time already on dgs, a standalone implementation of a large subset of DPS. Dgs is not a server extension, but a standalone program that provides DPS services to the client by talking to the X server using core X -- in Adobe parlance, a DPS/NX agent.

Our project is fairly independent from the dgs effort; indeed, there is little or no code to share due to very significant differences in the designs. However, we are in touch with the dgs developers, who have a fair amount of experience with DPS implementation. Furthermore, we are using the DPS support code in Ghostscript; this was all implemented by L. Peter Deutsch with dgs in mind.

Dgs is available from the GNUstep download area.

Software related to DPS

The DPS client library is copyright by Adobe and Digital, and available under a standard X11 licence. The client library is included in the source tree of XFree86 4.0 and later, and comes prepackaged with most Unix-like OSes, but in case you need a copy, or want to use the Adobe sample clients, you may find it in our anonymous FTP directory.

Note: three sample clients, dpsinfo (a homebrew utility), dpsexec and texteroids have been included into the XFree86 CVS repository. They will be included in 4.1.0 (but not in updates to the 4.0.* branch).

Here's a non-exhaustive list of software that runs over XDPS:

Links to related information

The XFree86 Project, Inc., is a non-profit organisation that produces XFree86, the most popular freely redistributable implementation of the X Window System. The DPS extension is designed to run in the XFree86 server although it should be portable to other servers based on the Sample Implementation.

Aladdin Enterprises, i.e. L. Peter Deutsch, produce Ghostscript, an interpreter for a language very, very close to PostScript. Ghostscript is the core of the DPS extension. There are two websites for Ghostscript:

Adobe are the original authors of the PostScript language and of Display PostScript. They hold a collection of technical notes and a site about font technology (very biased).

This web site is hosted by Source Forge. Thanks to everyone involved in providing this service.


Juliusz Chroboczek, <jch@xfree86.org>


Copyright © 2000-2001 by Juliusz Chroboczek

Permission is hereby granted, free of charge, to any person obtaining a copy of this material, to deal in it without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of this material, and to permit persons to whom this material is furnished to do so, subject to the following conditions:

Adobe, PostScript, Display PostScript, UNIX, IBM, AIX, Sun, Solaris, NeXT, NeXTstep, OPENSTEP and possibly others are trademarks or registered trademarks of their respective owners.