Motif/Lesstif Application Development

This article is directed toward those who
have spent their time in the pleasant arena of development and are
finding it harder and harder to ignore the growth of graphical
front-ends. My perspective is that of a developer of commercial
UNIX applications distributed largely on commercial versions of
UNIX. I have an interest in making these applications easily
portable to Linux and developing skills that are useful across OS
boundaries. Given a choice, I prefer to use technologies which can
be readily applied in both the commercial and open-source worlds.

My goal is to give you a basic understanding of the essential
components of an X/Motif application—enough to begin developing
your own applications. Development of server-side programs or
command-line interfaces (CLIs) tends to be more cut-and-dried than
that of graphical user interfaces (GUIs). Human beings are
notoriously unpredictable, especially when one is used to
developing according to strict protocols and well-defined
boundaries. The complicated interaction with a GUI is usually best
handled by a toolkit or library—someone else can worry about the
details of where the mouse pointer happened to be when the left
button was pressed, and how to render those beautiful 3-D effects
on the components on the screen. Although every UNIX ships with
libraries to take care of these details (X, Xt), they are still
quite tedious and time-consuming. Motif is a library that provides
enough insulation from the underlying primitives to make
development of GUIs realistic, while still allowing easy access to
those primitives should you need them.

Strictly speaking, Motif is a standard put forward by the
Open Software Foundation (OSF) that describes expected behavior and
the look and feel of an application. An application can be
described as Motif-compliant; OSF even provides for branding of
applications that adhere to the Motif standard. The practical
utility of the standard is arguable; however, the benefits of the
framework provided by the Motif libraries is unquestionable. You
can build a Motif application that uses the libraries but is not
compliant with the standard; in fact, most programmers simply use
the library and ignore the more Byzantine dictums of the
standards.

Henceforth, when I say Motif, I mean the Motif library or any
one of the various API-compatible libraries (Lesstif, Mootif,
Moteeth, etc.). Differences between Motif (v. 1.2) and Lesstif will
be pointed out. Although Motif 2.1 has been released, I will focus
on version 1.2 since this is the revision level of most installed
clients and the most common open-source alternative, Lesstif. The
newer releases of Motif are generally backward compatible, although
some techniques and elements of the API may be deprecated. The
biggest differences between versions 1.2 and 2.1 include
thread-safe libraries and some additional widgets, such as the
Notebook.

Why Motif?

My decision to use Motif is motivated by several very
specific concerns, some of which will strike a chord in those of
you involved with commercial software development. The tools I use
in commercial efforts must:

be tried and proven—the less risk the
better

be readily available to the target end users

not place undue burdens on development time

have a reasonable learning curve (for my
sake)

have a reasonable licensing policy, preferably no
additional run-time fee for the end users (for marketing's
sake)

utilize a development skill set that is relatively
easy to find (have mercy on your manager)

The Motif library is a toolkit that meets my requirements.
Virtually every commercial UNIX ships with a run-time license for
Motif. Free UNIX variants (including Linux and BSD) also have
access to Motif libraries (although at a fee); however, a Motif
“clone” called Lesstif is now stable and mature enough to use in
place of a “real” Motif library. Alternative GUI toolkits exist
(GTK, Qt, etc.) and may be a good choice for projects which dodge
the commercial world—for those of us who make a living writing
software for commercial distributions, I think Motif is still a
good choice.

The Common Desktop Environment (CDE) that ships with most
commercial UNIX operating systems is built on Motif 2.1, which was
intended to provide a backward-compatible API for applications
built on version 1.2. I have found I can work on the same project
on Solaris (using Motif) and Linux (using Lesstif), moving the
source back and forth regularly with surprisingly few
hiccups.

Finally, the end product looks sharp. Motif makes it easy to
get a professional-looking GUI without any extra effort. 3-D
effects, text clipboard operations (cut, copy and paste) and other
trappings users have come to expect from even small applications
are taken care of automatically, so you can focus on your
application's problem domain.

Trending Topics

Webinar: 8 Signs You’re Beyond Cron

Scheduling Crontabs With an Enterprise Scheduler
11am CDT, April 29th

Join Linux Journal and Pat Cameron, Director of Automation Technology at HelpSystems, as they discuss the eight primary advantages of moving beyond cron job scheduling. In this webinar, you’ll learn about integrating cron with an enterprise scheduler.