Open Source Desktop Technology Road Map
Jim Gettys, HP Labs
Version 1.14, December 9, 2003
Navigating the myriad technologies that comprise the desktop (and
palmtop) on open
source systems is daunting to say the least, for newcomers of all
source developers, developers in companies using the technologies
and commercial ISV's, and even difficult to navigate for those immersed
in open source systems on a day to day basis.
This document attempts to give a sketch of the names and
these technologies and projects, and a glimpse into their status and
development. Some technologies have never proved themselves, and/or
rendered obsolete by later development and are available primarily for
code. This document attempts to clarify much of this natural evolution
market selection. Ultimately, some technologies become so rare as to
their interment into the strata of software history, and it can be
to know which technologies are in such a fossil state, or stuck in the Labrea Tar Pits and possibly doomed
extinction, if not yet dead. A few may manage to struggle their way out
of the tar to safety on dry land again.
Some indication of the licensing terms is made. For commercial
software, make sure you understand the differences between licenses.
For example, GPL and LGPL'ed libraries have very different
consequences; one requires that source code of applications linked
against them be made available, and the other does not require such
disclosure. It is also possible for software to be available
simultaneously under multiple licenses, sometimes allowing the
implementer to choose which applies. See the Open Source Initiative for
explanation of these licenses.
Where known, approximate dates of
completion are included, but there is no guarantees made. If you would
to ensure the timely completion of technologies under development, you
work with the community to determine if further resources are needed,
so, to contribute the talent, resources and funding to do so.
Note that this document is still a bit weak in futures and I plan
further work in this area. As in a map of a physical area, having
information about current areas and how they interrelate was the first
This document is the work primarily of its author, and the opinions
are my own; blame me for any errors. Please let me know of any
inaccuracies, and in particular, pointers to road maps of projects
here. I would much prefer to have good pointers to similar project
than my current (mis) understanding of their time lines and development
state, which is, of course, in a constant state of flux. Similarly, if
believe I have overlooked some key piece of open source desktop
technology (as opposed to end user applications which are too numerous
list), please let me know.
My thanks to Keith Packard, Jamey Sharp, Kevin Whitwell, Waldo
Bastian, and Eric Raymond, Zenaan Harkness, David Alan Gilbert, Maarten
Stolte, Maarten Stolte, Kurt Pfeifle, Brenda J. Butler, Zenaan
Harkness, Eero Tamminen, Brian Gallaway Sergey V. Oudaltsov, John
Smirl, and Vincent for costructive comments and
feedback, and to Slashdot, for not warning me about the article, which
I would have liked to delay a day or three. At least this time,
freedesktop.org's web server is properly configured.
Table of Contents
Source Desktop Technology Road Map
- Table of Contents
- X Window System
- Key Protocol
- Xlib - Basic X library
- 3D Libraries
- Mesa - The 3D Graphics
- DRI - Direct Rendering
- The X Resize and
Rotate Extension - RandR
- The Render Extension
- Xft2 Library
- X Extensions under
- Obsolete X Extensions
- X Libraries under
- GTK+ Toolkit
- Qt Toolkit
- Other Toolkits
- Moribund X Toolkits
- Other Key Libraries
- Fontconfig - Font
- Freetype 2 - Font
- Cairo: A Vector Graphics
- HAL - Hardware
- DBUS - Message Bus
- XML libraries
- Multimedia Frameworks
- Helix Community
- Xine and Xinelib
- ALSA - Advance Linux
- Audio Servers
- ESD - Enlightened
- File Systems
- File Formats
- DOS emulation
- .Net and Mono
- Displaying Windows
Applications on Open Source Systems
- X Implementations for
- Cygwin and Cygwin/X
- Commercial X
- Postscript and PDF
- CUPS Print Spooling System
- Thin Clients
- LTSP - Linux Terminal
- Athena Computing
The most visible desktop projects are the KDE and Gnome
desktop projects. These projects
provide the basic toolkits, window managers, menu systems and control
found in modern user interfaces along with many end user applications.
important to note that the work of freedesktop.org
is to ensure that
applications and infrastructure can be shared between projects, and to
this sharing in a way that end users do not know or care what
these applications may be "native" to. In large part, this goal of
freedesktop.org is being met, though there is more work to be
Gnome project's roadmap covers its next few releases.
Other major applications projects, which themselves may be platforms
which other applications are being built include the Open Office project (Sun's StarOffice
based on OpenOffice), providing a entirely free office suite, and their
can be found in
their road map. Better integration with other applications on the
desktop is high on that list; Open Office has used their own toolkit
and needs better integration with Gnome and KDE.
The Mozilla project is also of
mention, who have built a world class free web application suite
browser, mail client, bug tracking system, and other technology, used
only in their applications but also by other applications in the open
desktop. Mozilla's road
covers both its recent history and current plans. Another
web technologies underlies the KHTML Rendering engine of the KDE
Apple in Mac OS X.
Native plugins exist, often many, for most of the commonly
used web datatypes
flash, RealPlayer, PDF). There are a few reasonably common datatypes
which there is no good native plugin available (fewer and fewer as the
go by). Windows plugins can often then be used via WINE.
One of the interesting problems is in fact, too many plugins for a
given datatype. Better user interfaces to invocation of plugins
is needed in some major applications to help with this embarrassment of
The desktop applications themselves are far too numerous to begin to
mention. A (large) subset of open source applications of all
numbering in the many thousands can be discovered on the Freshmeat web site, in addition to
KDE and Gnome desktop projects. All of these projects build on the
technologies covered in this road map (and sometimes additionally run
Windows and Mac OS X, most particularly the X Window System, but
to provide a road map to those projects is outside of the scope of this
Historically, the X specifications were developed and ratified in the
Consortium, and its successor organization, X.org.
X.org is in the process of reconstituting
its governance from an industry consortium to an organization in which
individuals, both at a personal level and as part of work they do for
companies have voice, working as part of the larger freedesktop.org and
As discussed below, the X Window System was designed to allow for
and many extensions as outlined above have been developed, deployed,
sometimes discarded over the years. Note that an API is just one
the specific protocol; there are and have been multiple such API's and
implementations at times to the same underlying set of protocols.
Besides the API's and protocols mentioned below, there are a set of
protocols and (sometimes multiple) implementations of API's that are
in the overall open source desktop. Most of these are primarily of
to toolkit, window manager, and desktop environment programmers rather
directly to most application programmers. This section attempts
outline the most important of these, and their current status.
The original "Inter-Client Communications Conventions Manual" outlines
original set of conventions required of applications (mostly
toolkits rather than directly by applications) to "play well" in
modular environment of the X architecture, allowing for interchangible
managers, and other facilities. It was (mostly) sufficient to
the CDE desktop, but insufficient for more modern environments.
Freedesktop.org was in fact founded originally to foster the
between the Gnome and KDE desktop projects to extend the ICCCM in ways
required for more modern environments.
Areas needing work to ensure further interoperability of applications
in one toolkit framework to be fully usable in others has included
drop, window manager extensions, desktop entry files that
information about applications, application embedding, UTF-8
bookmark exchange, menus, mime database, desktop settings, to name a
Descriptions of the status of these specifications along with the
specifications themselves are available and
recommend you look there for more information.
X Window System
The X Window System, Version 11, or X11, or most commonly called X,
network transparent window system used on Linux, UNIX, and other
including Macintosh OS/X, and Microsoft Windows. It provides the basic
infrastructure from which graphical user interfaces are built on Linux
UNIX. X11 was first released in 1988, and has an unrivaled reputation
stability; applications running on a MicroVAX of that era will
against the latest X implementations across today's network, unchanged.
stability has been ensured by a careful, extensible protocol design
framework, and attention to detail in the addition of new features.
I gave a USENIX
talk on open source software development using the X Window System
history that may be of interest.
New X extensions have been defined in recent years to bring X's
capabilities up to (and in some cases beyond) the commercial state of
art. Whenever possible, these programmer's API's have been built to
even downwards compatibility to ease deployment of modern applications
older X server implementations. A good example of this is the Xft2
which, while performing best on X implementations where the X Render
extension is present, will in fact provide high quality anti-aliased
old X servers. In some areas X still needs work; much of this
underway as described below and in more detail
In the X environment GUI's are built using Toolkit
libraries, of which the most common at this date are Qt and GTK+,
smattering of Motif based applications from the earlier generation of
development on UNIX.
A component of an X Window System based environment not found as an
independent component in other window systems is the external "window
manager", which allows users to control the size, location and
application's windows on the screen. They are, in fact, applications
other application in X11, though you can generally only run one window
manager at a time. Window managers are, for the most part,
components, and the standards defined originally by the X
such as the ICCCM, and its successor X.org, along with the new specifications
developed on freedesktop.org govern the protocols between applications
window managers. Window managers in common use today include KDE's
manager, Metacity used by Gnome, the Enlightenment window manager, and
many others. Those that have been kept up to date with the
freedesktop.org specifications are generally interchangable and a
personal taste, though both major desktop projects have window managers
prefer, and which may integrate best into that environment.
Other components, such as panels, start buttons, file managers, and
basic applications are provided by the desktop systems. The largest and
well known of these projects are the Gnome
desktop project, the KDE desktop
project, and the CDE
desktop found on UNIX systems. A detailed road map of these
projects is outside the scope of this document. The projects have a
their own, and you are best consulting them as to their plans. They
many hundreds, or thousands of open source applications at this date.
There are multiple implementations of the X Window System which
code, both open source and provided by commercial vendors. The most
deployed implementation on open source systems is currently provided by
XFree86, with newer development
implementation efforts hosted here at freedesktop.org.
There is much mythology of X's size; this is mostly an artifact of
memory usage is reported on systems (the entire frame buffer, off
memory and any register space is reported against the X server's
process's size, even if X itself is only consuming a megabyte or two of
space itself). Similarly, some applications request X to save large
amounts of pixels on their behalf, when other implementation approaches
often easily avoid such memory usage. X
is being successfully used on systems from IBM's
watch with 8 megabytes of compressed flash and 8 megabytes of RAM
tiny 96x120 screen, to current PDA's like HP's iPAQ, to DMX based projector walls
containing tens of millions of pixels. With recent work, the minimal X
footprint (X server and cut down Xlib) is currently just over 1
code (uncompressed), excluding toolkits that are typically much larger,
could be cut smaller. After all, X11 was developed on VAX 11/750's that
less than one MIP with 2 megabytes of RAM.
These protocol extensions generally come with a C language library,
often just a wrapper around the protocol, but sometimes includes
The Freedesktop.org X server and the XFree86 X server along with all
protocol libraries are MIT licensed, Commercial vendors of X technology
have additional restrictive licenses placed on their implementations as
allowed by the MIT license.
Xlib - Basic X library
This library provides the basic protocol bindings and client side
for extensions, as well as a number of other facilities, some of which
useful, and some of which do not or have not seen serious use recently.
Motif toolkit uses more of these features than more modern toolkits
GTK+ or Qt, which, for example, have found Xlib's facilities inadequate
number of areas (e.g. internationalization).
As the basic library for the X protocol, its API is very stable.
Several sections of the Xlib API are seldom used in modern practice,
either because the facilities never achieved widespread acceptance (as
X Color management part of the API), or because modern toolkits have
that they needed more advanced facilities (as in the Locale section of
Xlib API), where the modern toolkits provide better facilities.
underway to enable applications to be properly notified of
failure with the X server (often seen when X is used over wireless
and sometimes over the wired internet) and allow for graceful shutdown.
will enable the migration of running applications between X displays
movement of sessions. You would like to be able to go home and
retrieve the applications running on your desktop at work. The GTK+
already has support for migration of applications, except for proper
in the case of failure, and architecturally, this should be true for Qt
well. We hope that this will become usable during 2004, and widely
Xlib's protocol bindings are under development that may offer
performance by making it easier to avoid round trip messages to
window system in some areas. These may reach the usable stage during
but will be exactly API compatible.
3D is provided in the open source environment by industry standard
Both closed source commercial and open source implementations of OpenGL
Mesa - The 3D Graphics
Mesa is an open source
graphics library with an API which is very similar to that of OpenGL. Mesa is
the core of many hardware OpenGL drivers for XFree86 within the DRI project.
only implementations of Mesa are generally available even if hardware
accelerated versions are not, but such implementations of Mesa will not
sufficient for more than very simple applications.
GLX is the binding of OpenGL to the X protocol, to allow for network
transparent OpenGL applications.
Mesa has been a project for more than 10 years now, and has a vibrant
developer and user community, and various parts of it are available under a number of open
DRI - Direct Rendering
DRI is the direct rendering infrastructure for the XFree86 X server for
OpenGL direct rendering, and provides the device driver and
the window system to allow 3D applications direct access to the display
hardware. The DRI doesn't assume or require that the drivers be
on Mesa. Several non-Mesa, closed source drivers have used
The DRI provides direct access to graphics hardware in a safe and
manner. It includes changes to the X server, to several client
to the kernel. The first major use for the DRI is to create fast OpenGL
It has been in use for a number of years, and is widely deployed with
for much of the common 3D hardware.
XInput provides support for "non-core" input devices, such as
dial boxes, tablets, etc. It provides adequate facilities for these
but work is needed to extend XInput to support "hot-plug" input
Today, addition of new input devices requires manual configuration
X server. Work is also needed to aid use of new facilities provided by
base operating system (e.g. /dev/input) in Linux.
This area needs some serious work. GTK+ application migration
can already be demostrated, and what is there is only adaquate for
session migration. Shared displays (e.g. a projector being
simultaneously used by multiple users) bring to fore another issue:
that of network transparent access to input devices. If I have an
application I have migrated to a remote display, I may want my
keyboard, mouse and other input devices to follow. While X applications
like x2x help, this
is really just a bandaid, and a more generic network input event
mechanisms are needed, with good integration into the
environment. You should be able to use devices anywhere in your
This work has just
started, is still disorganized and needing more developer resources,
and will not likely complete before late 2004 and be deployed in 2005.
The Shape extension provides non-rectangular windows in the X
and is universally deployed in X implementations.
The X Synchronization Extension provides facilities for applications to
synchronize with each other, and with real time. XSYNC is widely
deployed and in its current form, very stable.
Facilities to allow XSYNC to synchronize with video vertical retrace,
sample clocks and other time bases are easy to add (and were the
intent of XSYNC), but while some work has been done to do this on Linux
systems, it is not yet available in production X servers. There
been some recent discussion on whether some additional functionality is
needed in this area.
The XVideo extension provides support for video overlays, and similar
facilities desired for video playback. It is commonly available
displays with hardware support for video playback. It provides
facilities for the scaling and conversion of HSV data.
The Doublebuffer extension provides doublebuffering facilities.
widely available and supported.
The X Resize and
Rotate Extension - RandR
Randr provides facilities for resizing, rotating, and reflecting the
screen. It may also report root window size changes to
RandR's's support depends upon the state of driver support for
The XFree86 server only has support for size changes in XFree86
The Kdrive server provides full support for the extension. It is
relatively new and not universally available. Applications can usually
oblivious to its existence, though window managers and toolkits should
consider support. Both Gnome/GTK+ and KDE/Qt have good support
RandR at this date.
The Security extension was introduced to address the security issues of
mixing trusted and untrusted clients on a single X server, according to
compartmented mode workstation thinking of the early 1990's.
It is not clear at this date whether it serves any useful purpose in
environments, though it may be useful in the case of shared display
If you think its facilities are useful, please let your opinions be
along with concrete examples of real circumstances where it is helpful.
The Record extension provides facilities for recording the operation of
server, and is often used in concert with the XTest extension for
system and application testing.
It is stable and widely deployed.
The XTest Extension is primarily intended to allow for pretty thorough
testing of the X server, by synthesizing input. As such, it is also
some other situations when synthetic input to the window system is
(e.g. stroke recognition.
There are two extensions by this name (cool, huh?).
The small XTEST extension was developed by Unisoft as a part of their
test suite development to test pieces of the system which are otherwise
unreachable. It is widely deployed and very stable
The larger XTestExtension1 was developed by HP to help produce
application testing mechanisms. This is poorly deployed and an
So, everyone uses XTEST to synthesize input instead of XTestExtension1.
It is widely deployed and stable.
The Render Extension
The largest visible change in X is recent, with the addition of the X
Extension, which provides Porter-Duff image compositing to the graphics
capability of the X Window System. While not fully deployed, it
widespread and used by most modern toolkits particularly for text,
now rendered as alpha-composited, antialiased glyphs cached in the X
completely supplanting the "core" text facilities of the original X11
protocol. The old "core" text facilities (bitmaps only) are still
supported for backwards compatibility, but the Xft2 library allows for
reasonably painless updating of applications to support full AA text,
X servers that do not support the Render extension.
The last facility of Render, not yet universally deployed, is support
trapezoids. Much device driver work remains to optimize the
and use the facilities provided by modern graphics accelerators.
so, the current usually software only implementation of Render, is fast
enough for most applications.
provides a client-side font API for X applications. It uses Fontconfig to
fonts, Freetype 2 for rendering the fonts and the X protocol for
on the screen. When available, Xft uses the Render
to accelerate text drawing. When Render is not available, Xft uses the
protocol to draw client-side glyphs. This provides completely
support of client-side fonts for all X servers, enabling application
developers the benefits of anti-aliased, subpixel decimated text on all
Xft1 is obsolete and should not be used; it did not provide AA text on
servers, and combined this functionality with what is now Fontconfig,
has been made a separate library usable by all applications, not just X
applications. Both Qt and GTK+ in versions since mid 2002 have used
their text rendering.
Xft2 is stable, and now widely available and deployed on open source
Xinerama allows multiple screens to be combined into one larger virtual
screen, mostly invisibly to most applications.
Its major liability is that merging screens of different types force
least common denominator behavior of the capabilities of the
In practice, this is not a serious limitation for casual use.
The new extensions under active development
allow for a more flexible Xinerama like system without its liabilities
Xinerama is widely available and deployed, though not all X drivers are
implemented to allow it.
This is not an X extension, but an X server running in an window.
can be very useful not only for server debugging, but ensuring that
your applications work well on different size X displays, for example
the small screens found on PDA's.
Xnest is widely available and deployed, though some extensions may not
X Extensions under
These simple extensions together enable very sophisticated visual
be created by window
level image compositing, along with other needed facilities such as
screen magnifiers, thumbnailers, and integration of applications into
These are under active development and will change before completion.
- The X
Fixes extension "fixes" some problems in the X core protocol, for
application embedding, cursor tracking and naming, and introduces
regions as a first class resource type for general use, for example, by
the X Damage extension.
- The X
Damage Extension allows applications to track modified regions of
drawables, useful for compositing or applications such as VNC.
Composite extension causes a entire sub-tree of the window
hierarchy to be rendered to an off-screen buffer. Applications can then
take the contents of that buffer and do whatever they like. The
off-screen buffer can be automatically merged into the parent window or
merged by external applications.
Obsolete X Extensions
A number of X extensions have been found to be useless or so
use that they never achieved serious use over the last 15 years. These
extensions, while possibly present in an X server implementation,
considered obsolete and deprecated, and cannot be relied upon being
present. Some of these include:
- PEX - the Phigs extension to X. OpenGL won the 3D war; PEX is no
longer even built in current X servers.
- XIE - the X Image Extension was an attempt to turn the X server
into general purpose image processing. It failed due to excessive
complexity and lack of a good implementation. A simple image transport
extension may still make sense in the future. The goal of XIE was
"image transport and display" with the requirement that it accept
arbitrary JPEG images and perform all necessary manipulation (including
unsharp masking, color space conversion, gamma correction, affine
transformation) in the X server. That slope wasn't just slippery,
it was a grease-covered cliff ending in a complete programmable image
processing system within the X server. The implementation suffered from
being done under contract by the lowest bidder, and being done after
the standard was ratified with no feedback loop possible to fix the
worst of the problems. Bad spec, Bad process, Bad engineering,
Bad standardization process. What's not to hate?
- Multibuffer extension - an early extension providing
multibuffering. Included stereo, which the double buffer extension does
not have. Some sort of separate stereo extension has been needed
by several projects
which have ended up using Multibuffer lacking a better mechanism.
On the other hand, double buffer is now almost universally implemented
by allocating off-screen pixmaps and using bitblt, so it may be all we
is a stereo extension.
- LBX, while often present in current implementations, is almost
always a bad idea to use, and may vanish entirely soon. SSH typically works as well or
better while providing the authentication and security that LBX
lacks. See "X Window System
Network Performance" for more information and discussion.
- XPrint, which has seldom been seen to work, tries to turn the X
server into a printing device. This is conceptually a bad idea, as, for
get document portability, the outlines of gyphs of fonts must be
documents so that they scale properly across the resolution of
X Libraries under
Xlib has been the standard C binding for the X Window System protocol
many years now, and is in need of serious rewrite in some areas.
written before shared libraries and threading were commonly available
UNIX, and several parts of Xlib should have been implemented as fully
independent libraries.Work is well underway to engineer replacements
current implementation and allow for better modularity and size.
The new basic protocol library is called XCB that has potentially very
performance properties in that it is much easier to use to avoid round
to the X server, and is carefully written from scratch. An Xlib
library, called XCL provides an Xlib API compatible implementation on
XCB/XCL are now
run almost all X applications and appears to be in the final stages of
As Xlib is the fundamental X client library, XCB and XCL need careful
(test suites, widespread trial deployment), as well as profiling and
performance tuning, which should occur during 2004. Presuming they pass
level of scrutiny, production deployment might start in late 2004.
In the X architecture, user interface elements used by applications
provided by "toolkits". There have been many X toolkits over the years
on other systems, such as Microsoft Windows, similarly there are
toolkit API's). The most well known are GTK+,
TrollTech's Qt, and
older Motif library.
used as the basis of the Gnome desktop
project, Qt underlies the KDE desktop
project, and Motif is used in the CDE desktop commonly
UNIX systems. New open source development generally uses either
GTK+ for toolkits. Additionally, the Mozilla project has a cross
toolkit used by its applications, though on Linux and UNIX, this work
based on top of the GTK+ library.
At this date, the major projects including Gnome and KDE have good
facilities for internationalization (I18N) and localization (L10N) of
applications, and many languages are already well supported. How
comprehensive the localization is will depend upon the desktop and
application, and the passion of the translators; complete coverage
exists for many languages. Wider and wider localization is occuring,
and is a way that motivated people from around the world can make a
significant contribution, even for languages not spoken by many people.
Even if you are a non-programmer but are a fluent speaker of a language
not well covered, you can make a difference, and I encourage your
Modern UNIX and Linux systems provide facilities for shared
allow multiple versions of a toolkit to be installed simultaneously
introducing problems with applications. For example, applications based
GTK+1.x can coexist comfortably with GTK+-2.x based applications. Both
and Qt allow customizing much of their look and feel via "themes".
There are of themes that provide a largely similar look and feel across
toolkits (for example, the "Blue Curve" theme of Red Hat, or the
"MandrakeGalaxy" theme of Mandrakesoft. Themes can be changed
applications are running.
Also of note is Winelib, which is a major
programs written to the Win32 API to X.
The license terms of different toolkits vary: ensure that the
the selected toolkit meets your own or your organization's needs.
What is typically called GTK+ in common usage is actually a set of
libraries. Glib is a low level library used by GTK+ and Gnome to
provide a portability layer and other common functions. Pango
for very sophisticated internationalized text layout, for a very wide
of languages including Arabic and Indic languages, generally difficult
most applications to do on their own. ATK is an accessibility
By supporting the ATK interfaces, an
application or toolkit can be used with such tools as screen readers,
magnifiers, and alternative input devices, and with the related
and facilities, working toward full U.S. Section 508 accessibility
GTK+-2.x is now widely deployed, has Xft and XRandR support, and is
very actively maintained and developed. GTK+ is written in X, and
there are bindings for
GTK+ for just about all commonly (and some uncommonly) used programming
languages. For more detail and future
plans, see the GTK+ web site. Almost
applications have been updated to GTK2 at this date, and it provides a
stable, widely deployed base for new applications development.
is not expected to change in incompatible ways. It has language
bindings for all common (and some uncommon) programming languages.
While GTK+ development is primarily X based on
and Linux on desktops and PDA's
, there has been work to target it at other platforms, including frame
buffers and Windows. GTK+ runs on Mac OS X via that platform's
for X, now standard in the lastest version of OS X.
GTK+-1.x is obsolete, and no longer being developed, having inadequate
GTK+ is LGPL licenced.
The Qt library,
actively developed and maintained by Trolltech, has Xft and XRandR
support, and is the toolkit used by the KDE
desktop project. It is a modern toolkit primarily targeted
towards C++ development, although bindings
have been developed by the KDE project and others including support for
A main feature of Qt is its strong cross-platform support (X11,
Windows, Mac OS X, Linux frame buffer on PDAs).
In addition to user interface APIs, Qt provides APIs for
variousplatform-specific tasks such as file-handling,
networking, process-handling, threading, database
access, etc. Qt 3.2 also has strong support for
internationalization including support for Arabic, Asian,
Cyrillic, Greek, Hebrew, Indic, Latin and Persian languages as well as
general Unicode support. Qt 3 supports accessibility features on
Windows/Mac with the rudiments of support existing for X11. Full
accessibility support under X11 will be available in Qt 4.
Qt 3 is the current version used on the desktop, although QtE 2 is
still widespread in Qtopia PDA applications.
Qt is available under
the GPL and under a variety of licenses under different terms for
and non-commercial use.
Other toolkits seeing significant development that may be interesting
for particular purposes include FLTK,
GNUstep, and wxWindows. Fltk is
cross platform and quite small and fast, (hence its name), GNUstep is
Objective C based and implements much of the original OpenStep
specifications and may be useful in porting Apple MacIntosh
applications, and wxWindows is an open source, cross platform C++ GUI
framework. On Linux, wxWindows is GTK+ based, and will be able
integrate quite well into the current desktop (when its port to GTK+ 2
Moribund X Toolkits
Motif (now called OpenMotif)
toolkit used in the CDE
desktop found on most UNIX systems, though KDE and Gnome are often
available for those UNIX systems. A clone of it, called Lesstif, was developed while Motif
remained fully proprietary. Few, if any new open source applications
being developed by open source developers using Motif, though there is
serious use of Motif in corporations. As Motif currently lacks
support, Motif applications often look out of place on current
will continue to work into the indefinite future, and is still commonly
in many older commercial UNIX and Linux applications.
I believe that Motif/Lesstif are obsolete, but it is still used
settings, even if relatively little new code is
written to it. It is based on a library called Xt, which
attempted to define a policy free toolkit framework. In retrospect,
this was a mistake. Other toolkits widget sets were built on Xt,
including Xaw (the Athena Widgets), Xaw3d, and the like. I don't know
if it has been ported to Windows or not (possibly via cygwin), but
would still be running under X.
Lesstif is LGPL licensed. Motif has a unique license,
different terms for commercial and non-commercial use on open source or
proprietary platforms. Both Lesstif and Motif are actively maintained
developed, though currently lagging both Qt and GTK+ in support of
features such as client side fonts.
The TK toolkit distributed as part
of the cross platform TCL/TK system has some very substantial ongoing
applications built with it, particularly some commercial CAD
applications (e.g. Magic). It preserved some of
the original ideas of Joel Bartlett's ezd's program canvas to have been
adopted by other toolkits, including GTK+. I would not currently
recommend it for new applications, as TK applications do not integrate
very well into today's desktops (e.g. lack of theme support, and modern
window manager hint support). Similar scripting language/toolkits that
do integrate well are available, for example, in PyGTK (Python bindings
to the GTK toolkit), to name one of several recent options. TK's most
application has been the "make xconfig" program used for configuring
Linux prior to Linux 2.6.
There are some signs
that the Tcl/TK community understands that it has fallen behind the
times and some steps are underway to rectify the issues, but these
plans are not yet far enough along for me to believe TK will extricate
itself from the tar. If you value TK, then now would be the time to aid
Other Key Libraries
Fontconfig - Font
discover new fonts when installed automatically, removing a common
configuration problems, perform font name substitution, so that
alternative fonts can be selected if fonts are missing. Fontconfig will
identify the set of fonts required to completely cover a set of
will efficiently and quickly find the fonts you need among the set of
you have installed, even if you have installed thousands of fonts,
minimizing memory usage. Fontconfig can be used in concert with the X
Extension and FreeType
to implement high quality, anti-aliased and subpixel rendered text on a
display. It is believed to be "best in class" of equivalent facilities
other operating systems.
Fontconfig does not render the fonts themselves (this is left to
FreeType or other
rendering mechanisms) or depend on the X Window System in any fashion,
that printer only applications do not have such dependencies.
Fontconfig is stable, and available on all current Linux
distributions. Note that the obsolete X core font mechanism does
(yet) use fontconfig for its configuration mechanism, which is a source
configuration confusion we hope to see remedied during 2004-2005.
Fontconfig is MIT licensed.
Freetype 2 - Font
FreeType 2 is a software font engine that is designed to be small,
efficient, highly customizable and portable while capable of producing
high-quality output (glyph images). It can be used in graphics
display servers, font conversion tools, text image generation tools,
other products as well.
Note that FreeType 2 is a font service and doesn't provide
to perform higher-level features, like text layout or graphics
(e.g. colored text rendering, "hollowing", etc..). However, it greatly
simplifies these tasks by providing a simple, easy to use and uniform
interface to access the content of font files.
very long: in short, Freetype supports most types of fonts used to
Freetype 2 is stable, actively developed and maintained, and
all current systems.
Freetype 1 is obsolete and should no longer be used.
FreeType 2 is released under two open-source licenses: its own
License and the GPL.
Cairo: A Vector Graphics
Cairo is a vector graphics
with cross-device output support. Cairo is designed to produce
output on all output media while taking advantage of display hardware
acceleration when available (e.g. through the X Render Extension or
Cairo fills a missing piece of the unification of graphics between the
system and printing system.
Cairo provides a statefull user-level API with capabilities similar
PDF 1.4 imaging model. Cairo provides operations including stroking and
filling Bezier cubic splines, transforming and compositing translucent
images, and antialiased text rendering. It is believed to be second to
in its intended purpose.
Currently supported output targets include the X Window System,
image buffers and a preliminary Postscript file output implementation.
Similarly as with Xft2, the X back end for Cairo is engineered to be
draw on X servers that do not support the X Render extension, to enable
applications to use its API everywhere. Work is underway to implement
Microsoft Windows output for Cairo. Bindings for many languages are
available, and Cairo is being used for applications under development
time. OpenGL and PDF file output is planned.
Cairo is still under active development and is not API stable,
toward its first full release expected during 2004. A number of
planning Cairo support, including the Gnome canvas and Mono.
Cairo is a free software library available under the MIT license.
HAL - Hardware
HAL is the
infrastructure that deals with how to enable the good integration of
into the desktop environment, so that when you plug in a new device, it
works" in sensible ways for users. Linux 2.6 has extensive support for
"hotplug" devices of all forms, not just PCMCIA and USB, and this
provides the desktop integration to go with the base operating system
Its development started in the summer of 2003, and early software is
available with early releases hoped for in late 2003. Stable versions
become available during 2004.
DBUS - Message Bus
D-BUS is a
system, a simple way for applications to talk to one another. There are
bindings for multiple toolkits (e.g. Qt, GTK+).
It has begun to be used in some systems; expect more widespread
and stabilization during 2004.
XML is increasingly used in free software, not only for document and
information markup but other related uses such as configuration files
fontconfig). Libxml2 is the XML
parser and toolkit; . It and a several other XML libraries (e.g. expat)
commonly used as the basis of XML related applications. LibXML2
available under the MIT License, stable, very fast, and widely deployed
Not directly part of desktop software, but being increasingly used as
the build environment of desktop software is the pkgconfig system.
The zeroconf work in the IETF
is key to good user experience in network configuration. First to
support zeroconf well is Apple Rendesvous on the MacIntosh; UNIX and Linux support is
well underway and beginning to ship in vendor's Linux distributions.
Multimedia is still in a great state of flux on open source systems. It
however, to the point that serious applications exist and work well;
impetus is more around how to better integrate this to improve the user
experience. As you will see, there is much available, and the community
users will decide which are of greatest importance, and it is probably
area of greatest ferment in desktop development. I expect over the next
months that the situation will clarify greatly.
RealNetworks has made their Helix
community multimedia framework that underlies their product suite
licenses, depending upon commercial or non-commercial use. Not all
are available open source.
is the multimedia framework used by the KDE project, is stable and is
maintained by the KDE project, but has not seen much recent development.
The multimedia framework used by the Gnome project is Gstreamer. It is still working
its first 1.0 release, but is in use in some applications.
It is LGPL licensed.
Mplayer is a movie player for LINUX and runs on many other UNIXs,
non-x86 CPUs and is being ported to Windows. It has support for a very
wide variety of codecs and
devices. Multiple user interfaces have been built using Mplayer.
It is now very stable and very capable and at its 1.0 stable
Mplayer is available under the GPL.
The VideoLAN project targets
multimedia streaming of MPEG-1, MPEG-2, MPEG-4
and DivX files, DVDs, digital satellite channels,
digital terrestial television channels and live videos on a
high-bandwidth IPv4 or IPv6 network in unicast or multicast
under many OSes. VideoLAN also features a cross-plaform multimedia
which can be used to read the stream from the network or display video
read locally on the computer under all GNU/Linux flavours, all BSD
flavours, Windows, Mac OS X, BeOS, Solaris, QNX, Familiar Linux...
It is available under the GPL.
Xine and Xinelib
Xinelib is the library underlying the Xine
multimedia player. It has been so
successful that many user interfaces have been built on top, and has
for a huge variety of audio and video codecs natively and provisions
of binary commercial codecs from Windows on x86 platforms.
It is now very stable and very capable and at its 1.0 stable release,
runs on Linux and most UNIX platforms and is being ported to other
Xine is available under the GPL.
Audio in open source systems is in a funny state. Amazing tools,
applications, and codecs have been and continue to be developed,
primarily on Linux systems, and you will find substantial parts of the
computer music and audio research community using Linux. On the other
hand, the tools and applications aren't all well plugged together for
casual desktop use. So the good news is you'll probably find more software than you can
make heads or tails of, and the bad news is you'll have to fuss with it
to get it running, and may have problems when different applications
need to be used simultaneously. This is not a good situation, and needs
One issue for some audio applications has been latency, and
particularly variance of latency. Low latency and good
synchronization facilties are required by both
professional audio work but even more for telephony and
applications. Much work has gone on over the last several years to work
on the Linux
scheduler and get a good upper bound on latency in the system, in
support of audio and other real time applications. Latency in Linux 2.4
is greatly improved over previous Linux releases, and is now quite
good, and Linux 2.6 is outstanding.
Linux is in the middle of a transition from the OSS interface to
improved ALSA driver infrastructure and implementation, which is
available in Linux 2.4 and is becoming the default in Linux 2.6.
So the next one to two years should see a major improvement and
integration of audio in the open source desktop.
ALSA - Advance Linux
The Advanced Linux Sound Architecture (ALSA), which has been under
development for several years, provides audio and MIDI functionality to
Linux operating system. It boasts: efficient support for all types of
interfaces, from consumer soundcards to professional multichannel audio
interfaces, fully modularized sound drivers, SMP and thread-safe
space library (alsa-lib) to simplify application programming and
higher level functionality, support for the older OSS API, providing
compatibility for most OSS programs. This will put the Linux driver
on a very firm footing.
But X is a network transparent window system, and, particularly in LTSP
environments, applications need network transparent access to audio
services. As yet, open source systems have not settled on a
sound server, which with luck will happen over 2004; several earlier
servers such as AF or NAS are no longer widely used. The AF
server was notable in that it shows that it is possible to design
network transparent audio
servers with no inherent latency and with tight synchronization
facilities. As AF
sample rate conversion (machines weren't fast enough in 1992), it is
inadequate on that and other grounds for
The aRts sound daemon used and maintained by the KDE project. It is
stable and not undergoing further development.
ESD - Enlightened
ESD is widely available, maintained as part of the Gnome project, and
stable but is not undergoing further development. While adequate for
use, it is very insufficient for advanced applications or those with
demanding latency or synchronization requirements (e.g. video
JACK, the Jack
Connection Kit, provides low latency, high efficiency inter-process
connectivity, as well as audio device sharing, suitable for pro-audio
applications. While an audio server, it is not a network transparent
at this date, and therefore unsuitable for LTSP or other distributed X
deployments. On single systems it has much to offer.
It is under active development, not yet API stable (though may become
during 2004), and available under the GPL (server) and LGPL licenses
- the Media Application Server, by Shiman and Associates, is a very
audio server and multimedia framework. If it can be made to meet the
latency (required by telephony and teleconference applications) and
synchronization requirements (of video playback), it may be a viable
contender to replace the current relatively poor audio servers.
MAS is under active development and evaluation.
The core of the MAS system recently became available under the MIT
Samba enables UNIX and Linux systems
provide high performance file and print services to Microsoft Windows
clients, and to gateway these services to open source desktops (via CUPS).
Linux is able to read and write FAT file systems of all types, and read
file systems. Read/write of NTFS file systems is in an experimental
Linux systems can mount Microsoft SMB file shares and read and write
The desktop file browsers for Gnome and KDE have improving support for
enabling browsing of a Microsoft file share network and browsing of
Further polish of this work can be expected during 2004.
The Microsoft file formats are a challenge, but open source programmers
appear to be up to the challenge. The latest version of
can import and export Microsoft office file formats (along with many
most of the time with great success. Generally, open source
moving toward XML based representations of documents, such as that used
For perfect interoperability, many releases of Microsoft Office are now
running very successfully using the Wine
There will be continued incremental improvements; of course, since
is a moving target this will continue to challenge the community.
Wine provides a Microsoft Windows
environment on Linux and x86 based UNIX. Many key "shrink wrap"
written for Microsoft Windows including Microsoft Office, Lotus Notes,
Photoshop, Intuit Quicken can run on x86 based Linux systems using
Wine. Commercial versions of Wine that provide support and easy
installation and configuration are available from Codeweavers for commercial
and Transgaming for games.
applications in general are well integrated into the open source
though in this environment, certain Windows peculiarities (e.g. MSDOS
letters and file name paths) show through.
Your exact mileage will vary, but many of these applications (e.g.
Office) now run extremely well and stably. More and more applications
become usable with time.
Wine is distributed under the LGPL license.
Windows compatible API's as an aid to porting applications, and is the
underpinnings of the Wine execution environment. As such, it can be
yet another toolkit. Applications for which source is available may be
to be recompiled and relinked against Winelib as a way of porting the
application to become a native application on UNIX and Linux systems.
While tracking the evolution of Microsoft API's is a perpetual,
task, a higher and higher fraction of applications will find that
covers their needs with time. The fact that many major Microsoft
applications run well under Wine shows that the coverage is actually
good over the API's actually used by Windows applications.
As a porting tool of applications built to Win32 API's, it can't be
Winelib is distributed under the LGPL license.
An easy, portable way to run old Microsoft DOS software is to use Dosbox It
emulates enough of DOS to be able to run most of scripts and can
automatically mount a directory as it were a DOS drive. The
current 0.60 version can run e.g. most of the older DOS games, just
extract program to a directory and use 'dosbox <directory>'.
The harder, x86 and Linux specific way is to use Dosemu and install a
real MS-DOS on a disk image. Dosemu
is faster than Dosbox.
(The Dosemu page claims that MS-DOS is not needed, but in practice
FreeDos is not compatible enough.)
.Net and Mono
The Mono project is an effort to
an open source implementation of the .NET Development Framework, some
which involve desktop technologies.
Mono includes: a compiler for the C# language, a runtime for the
Language Infrastructure (also referred as the CLR) and a set of class
libraries. The runtime can be embedded into your application. It
of both ADO.NET and ASP.NET. It is adopting Cairo
for its 2D graphics.
Mono's licenses are GPL for tools and LGPL for Mono libraries.
Mono's expected 1.0 release is Q2 2004, according to its road map.
Applications on Open Source Systems
are both commercial
and open source RDP cients for
Linux available, that enable remote Windows
applications usiing Windows Terminal Server to be displayed on open
X Implementations for
There are X Window System implementations for Windows. X applications
can run on Windows and use X servers on any operating system
Linux, Mac OS X, etc.) for their display, and if an X server is running
on Windows, X applications on UNIX, LInux, MacOS X can be used on
those Windows machines. Tools like Cygwin are make
it very easy to develop cross platform tools that can be used on both
Windows and UNIX/Linux/MacOSX.
There are both commercial and non-commercial X implementations for
Cygwin and Cygwin/X
Cygwin is a Linux-like environment for
Windows, allowing for use of much Linux software on Windows.
It consists of two parts: 1) A DLL (cygwin1.dll) which acts as a Linux
emulation layer providing
substantial Linux API functionality, 2) A collection of tools, which
look and feel. A large collection packages
of software available.
The Cygwin DLL works with all non-beta, non "release candidate", ix86
versions of Windows since Windows 95, with the exception of Windows
Cygwin is actively maintained and developed, and has been making
regular releases,. Various packages are, of course under their own
Cygwin/X is a port of the X Window
System to the Microsoft Windows family of operating systems.
Cygwin/X runs on all recent consumer and business versions of Windows;
as of 2002-05-12 those versions are specifically Windows 95, Windows
98, Windows Me, Windows NT 4.0, Windows 2000, and Windows XP.
Cygwin/X consists of an X Server, Xlib, and nearly all of the
standard X clients, such as xterm, xhost, xdpyinfo, xclock, and xeyes.
Cygwin/X, as the name implies, uses the Cygwin
project which provides a UNIX-like
API to Xlib and X clients, thereby minimizing the amount of porting
Cygwin/X is licensed under an X style license; Cygwin is
licensed under a modified GNU General Public License that specifically
allows libcygwin1.a to be linked to programs that are licensed under
an Open Source compliant license without such linking requiring that
those Open Source programs be licensed under the GNU General Public
License (see the Cygwin
licensing page for more information). Source code and binaries
for both projects are freely available.
Cygwin/X is actively
maintained, developed and enhanced and has been making regular
There are a number of commercial X Window System implementations for
Windows, for example, Hummingbird's
Freetype 2, Fontconfig, and client side fonts have taken open
source desktops from worst in class to best in class in basic font and
internationalization at the core technology level, and at the toolkit
level, GTK+'s Pango and recent work in Qt have finally brought X
desktops from the 1980's to the modern world, with good
Internationalization support, and first class linguistic layout and
Essentially any TrueType or OpenType fonts are usable.
Additionally, the Postscript 35 Type1 fonts are now also available
universally, courtesy a donation from URW four years ago.
A further issue issue that most people are not familiar with is that of
"metric compatibility". Unless fonts with very similar metrics
available, documents will not lay out identically across platforms. So
without compatible fonts, typical documents in Microsoft format will
not appear the same on open source platforms. This is a serious
inhibitor to complete interoperability with Microsoft.
The Microsoft Web fonts are available on the Internet, but their
license does not permit bundling for commercial sale, which means that
users have to find and install them. This has meant that when open
source systems are first turned on, and until and unless the users
understand how to locate and install them or other fonts, we have had a
major "out of the box" problem.
Bitstream's wonderful donation
in April 2003 of the Vera font
source use has helped greatly in making open source systems presentable
"out of the box". But the
international coverage of these fonts is insufficient for the global
nature of open source, and the fonts are not metric compatible with
So, while the open source community has spawned decent graphics
artists and GUI designers, to date we have failed to establish a
serious culture of
font design and hinting of fonts, so fonts, particularly high quality
hinted fonts for screen use, remain in short supply that can be
"preinstalled" so that things "just work" in routine use. The
projects building fonts seem to be are pretty fragmented and
uncoordinated at the moment. Tools
are available for font design and editing on Linux (and commercial
tools are available on other platforms), but hinting of fonts for
screen use is just slow, painful, repetitive work. Work by John Hobby a
decade ago shows it may be possible to do good automatic hinting of
fonts now that systems are so fast, but implementations of those
algorithms are not currently available (another potential project for
mathematically inclined open source programmers). Fonts require ongoing
maintenance and enhancement, as language coverage and/or entirely new
characters need to be added to fonts. In principle, this effort should
be a lot of fun for the right person/people, involving as it does so
many languages and cultures over the world. Further
donations of fonts and/or funding for further font development would be
greatly appreciated along with someone with the passion and ability to
lead such efforts.
Availability of high quality fonts, particularly for screen use, is
therefore a significant issue. A second issue has been that Apple
asserts two patents on how certain hints are implemented in TrueType;
these patents are only valid in the U.S. and Great Britian.
As a result, commercial Linux
or application distributions for desktop use now often bundle other
high quality proprietary fonts with them as well, so this is less an
inhibitor than one might first expect. But as this means that
applications have not been able to rely on the availability of a metric
compatible set of fonts, we may end up paying multiple times for the
same fonts (from both application and base Linux system vendors).
Better would be for the commercial open source vendor community to pool
their efforts and "buy out" a set of such fonts.
Printing has been a difficult problem on UNIX and Linux systems, but a
of changes during 2002 and 2003 are turning this from poor to quite
usable. It is a very large topic, requires a document
size to sketch, so this is just a 20,000 foot overview. Much additional
information about printing on open source systems can be found on the Linux Printing web site. Open
printer drivers for almost all HP and Epson printers are available,
spotty coverage for other vendors, and commercial support and more
available and tools from Easy
Products, CUP's creator.
UNIX/Linux printing in the past been badly hobbled by the lack of a
spooling system, which is now on its way to solution with the
deployment of CUPS and other developments. Berkeley lpr/lpd was
really lame, System V lp similarly lame. Lprng was an
improvement, but at this date, all Linux distributions, at least, are
using CUPS as their default spooling system
Desktop applications were badly hobbled by the original X Window System
design (for which I am partially to blame), which denied easy access to
font files needed by applications
did anything sophisticated with text. Keith Packard's font
related work has been outstanding, and the
Fontconfig/Xft2/Freetype/Render combination takes us from poorest to
best in class, both in quality of rendering and in internationalization
on the screen, but some more work is needed in applications for
printing to catch up. The widespread deployment
client side fonts using Fontconfig, Xft2, Freetype the X Render
extension during 2003 marks a sea change in enabling good desktop
display and printer integration.
Additional work to complete integration of printer selection and
management of small to moderate CUPS installations into the desktop
environments is well underway. KDE's support has been complete for a
Gnome projects and will be substantially complete in 2003, with
StarOffice and Mozilla the remaining major application suites needing
The expected uptake of Cairo
in these projects during 2004 should significantly improve the
high quality 2D graphics for screen and printing, and allow for
font information into print files that has been lacking (with the
exception of StarOffice/OpenOffice, which has internal PDF generation
Postscript and PDF
The fundamental "Lingua Franca" of printing on open source and UNIX
has always been postscript, and there are open source and closed source
CUPS Print Spooling System
CUPS is now "standard" on all major
currently shipping Linux distributions, Mac OS X, and available for all
systems. It provides an IETF IPP (Internet
Protocol) print spooling system with provisions for fail-over,
of many MIME types (though PDF and Postscript are by far the most
common). Microsoft Windows XP has IPP support, but as it involves
running IIS currently not typically used.
CUPS makes all printers postscript capable that are not already
capable, by using either Aladdin
free versions of ghostscript, as a "Raster Image Processor".
CUPS uses industry standard PPD files for printer descriptions, for all
printers, not just Postscript printers, providing a uniform printer
capabilities mechanism. CUPS provides for dynamic discovery of
fail-over between printers.
One of CUPS's other major strengths is that it has back ends for
SMB printers via SAMBA, Berkeley
protocols, JetDirect from HP, and so on, providing a fully uniform
method for applications to use for printing. Additionally SAMBA
configured so that CUPS printers are available to Microsoft Windows
CUPS will continue to spread rapidly into the remaining environments.
More work is needed in the management of CUPS environments, but the
needs are now met in the latest versions of KDE and Gnome applications
those provided by Linux distributions. Commercial large enterprise
software is available from Easy Software. Integration of CUPS into
applications is well underway, and should be substantially complete by
end of 2003, and entirely complete by mid 2004.
CUPS is GPL (the CUPS server itself) and LGPL licensed (the CUPS
The X Window System, arguably, invented thin client computing. In their
heyday, there were a significant number of hardware companies offering
what were called "X Terminals" (e.g. NCD). Most/all of these are
defunct, as they became less economic than commodity PC hardware, but
the concept still has serious validity to reduce system management
costs. Some thin client hardware for sale today can be used with X and
X based applications as well, particularly since they make machines
interchangable, have lower CPU and memory requirements, and can easily
eliminate the disk and fans of conventional desktop machines at a
somewhat lower price point. The combination can result in a much lower
TCO, particularly using Linux, since Microsoft's pricing of its
software licenses actively discriminates against this computing model.
Also note the availability of RDP clients for open source systems as
mentioned above, which allow Windows applications to display on X
desktops via Windows Terminal Server.
LTSP - Linux Terminal
The Linux Terminal Server Project is
building "thin client" versions of Linux. Most applications are
remotely on servers (via X's network transparency), but there are also
provisions for locally run clients. This provides much better
of desktops and is very cost effective in many environments, making
truly interchangable and obviating the need for "sneaker-net" system
management. One view is that this is a reinvention of X terminals, but
there is provision for local clients it goes beyond that, and can take
advantage of commodity PC hardware, thin client hardware, and old
thought were just junk. The K12LTSP
makes a version specifically targeted toward use in schools.
LTSP is in widespread use, has been through four major releases, and
active developer and user community, and supports multiple Linux
A similar style of not-quite-so thin computing is typified by the
Athena computing environment at MIT (where both the X Window System and
Kerberos have their roots). In this model, machines are also
interchangable, but rely on distributed file systems and good
authentication to keep any permanent data off the local machine. Local
disks are used as caches for files and for swap, but never for long
term data storage. As an integrated whole, this is not seen much
outside of MIT, though X11 and Kerberos are reasonably widespread. As a
interesting historical note, Athena's "Zephyr" system was arguably the
first instant message system.
Java is available from Sun
for Linux, and there are several static Java compilers (e.g. GCJ, part of the GCC compiler
suite and Jikes
from IBM), and may be preinstalled. The Blackdown project provides
source distributions of Sun's Java for additional platforms that Sun
Java release 1.4.2 introduces Swing support based on GTK2 look and
which aids in the natural integration of GUI applications built with
the open source desktop. As this deploys widely over 2004, Java
using Sun's VM will share the look and feel of Gnome desktops.
VNC stands for Virtual Network
Computing. It is remote control software which allows you to view and
interact with one computer (the "server") using a simple program (the
"viewer") on another computer anywhere on the Internet. The two
don't even have to be the same type, so for example you can use VNC to
an office Linux machine on your Windows PC at home. VNC is freely and
publicly available and is in widespread active use by millions
industry, academia and privately.
Note that VNC can be trivially replaced with a simple X application
with "ssh -X -C" in concert with the Damage extension.