[comp.windows.x] X intrinsics

75046.606@CompuServe.COM (Larry W. Virden) (09/15/89)

Could someone give me a good set of definitions concerning the difference
between 'intrinsics' and widgets?  I am talking about a layman's
description, assuming that the layman has a computer background.
Is it typical that a company which is doing development in X might need
to create new intrinsics?

swick@ATHENA.MIT.EDU (Ralph R. Swick) (09/18/89)

> Could someone give me a good set of definitions concerning the difference
> between 'intrinsics' and widgets?

Fundamentally, widgets are those things which draw on a screen and
accept user input; that is, they have a look and feel, and intrinsics
are those things behind the scenes which bind widgets together and
provide common mechanisms for them to interact with each other and
with applications; that is, they have no direct look and feel.

Formally, "the Intrinsics", or "the Xt Intrinsics" are an X Consortium
specification for a library of low-level programming interfaces and
conventions for building user-interface primitives (i.e. widgets) and
also for writing applications which combine and connect to those
primitives in a uniform manner.  It is usually convenient to talk in
terms of layering; at the lowest layer is the X Protocol, specifying
inter-connectibility between X servers and X applications of arbitrary
ancestry.  Above the Protocol is Xlib, specifying a portable
programming base to the Protocol for libraries and applications
written in C and other languages.  At the highest level (for the
present discussion) are widget sets, specifying portability of users
across applications; i.e. a common appearance and behaviour across the
user interfaces of multiple applications.  In between Xlib and the
widget sets is Xt.  Xt is trying to be large enough to accomodate the
greatest variety of widget set policies and conventions and yet small
enough to minimize the effort required to convert an application to a
different widget set that the one with which it was originally built.

Like all X Consortium specifications, the intent of the Xt
specification is to describe the programming interfaces in sufficient
detail that compatible implementations can be constructed without
reference to common code.  There is certainly no requirement that
anyone building a widget library on top of the Xt interfaces use the
Xt implementation provided by MIT.  In all honesty, though, the
specification and sample implementation have pretty much grown up
together and though things are improving, there likely exists some
unspecified behaviour upon which widgets and/or applications are
relying, conciously or otherwise.