[comp.windows.x] X Toolkit portability

PSCOTT@DECUS.BITNET ("Peter Scott, NASA/JPL") (05/09/89)

One of the main justifications I am required to provide for the powers-that-be
for our investment in X is that programs written using it are completely
portable, or, at least, if they are not, the non-portable code will not be
part of the X code.

<FLAME ON>

When I first joined this group, I posted a note saying, essentially, "I've read
that the X protocol and Xlib are standards, but nothing about the toolkit being
a standard.  Should I write my programs in Xlib only to ensure portability?"
And the replies came back, "No, no, use the toolkit, it's part of the standard,
everyone has it".

Just went to a seminar on X-Windows here at DECUS and found out that the toolkit
is *not* part of any standard, that standardization efforts are being made, but
that they will standardize on either Motif, XUI, or something from Unix
International, *not* the Athena widgets.  Furthermore, attempting to port the
MIT toolkit to X implementations that don't have it (for instance, DEC
workstations, of which we have a lot and are getting more) is likely to be
fraught with difficulties in areas such as file system access.

Code is not portable if you have to take a huge amount of source code from the
libraries that it calls and port *that* to your target system.  Some people who
are not being paid to produce results might not consider that a problem.  Now I
have to recode the Sun-Vaxstation portability demo I was working on using Xlib
calls only.  I understand that standardizing the protocol and Xlib first was
great for vendors, but it is a pain for application programmers (and even worse
for users, who still don't have consistent look-and-feel) when they don't have
a standard to program by.

<FLAME OFF>  (Flame not directed at any individuals personally)

Peter Scott (pjs@grouch.jpl.nasa.gov)

(Do not reply to the originating address of this message, it is only good for
this week)

rws@EXPO.LCS.MIT.EDU (05/10/89)

    "No, no, use the toolkit, it's part of the standard, everyone has it".

I have no idea exactly what question you asked, or exactly what replies
you got, or whether they were from authoritative sources.  Certainly, many
people think of Xt as a "toolkit" of sorts, and that can cause confusion.

    Just went to a seminar on X-Windows here at DECUS and found out

I have no idea why you had to wait until then.  If you have the R3 from
MIT, there is a STANDARDS file at the top of the tree which clearly states
what is and isn't a Consortium standard (e.g. Xt is, Athena Widgets aren't).
This file is also documented in the Release Notes.  If you don't have R3 from
MIT, you haven't done your homework.  If you do have R3 and didn't find this
information, you haven't done your homework.

    Furthermore, attempting to port the
    MIT toolkit to X implementations that don't have it (for instance, DEC
    workstations, of which we have a lot and are getting more) is likely to be
    fraught with difficulties in areas such as file system access.

I'm not sure what the basis for this remark is.  Certainly, we run clients
every day on "DEC workstations", of both the VAX and PMAX variety, using the
Athena Widgets.  Our DEC workstations are Ultrix based.  If you're moving to
VMS, certainly you'll have some work to do, but it shouldn't be that much
(most of the widgets don't touch OS services).

    I understand that standardizing the protocol and Xlib first was
    great for vendors, but it is a pain for application programmers (and even
    worse for users, who still don't have consistent look-and-feel) when they
    don't have a standard to program by.

Then perhaps you should get your organization more involved in standards
efforts.

dshr@SUN.COM (David Rosenthal) (05/10/89)

	"Don't, don't believe, don't believe the hype."

		Public Enemy

Peter Scott writes:

> One of the main justifications I am required to provide for the powers-that-be
> for our investment in X is that programs written using it are completely
> portable, or, at least, if they are not, the non-portable code will not be
> part of the X code.
> 
followed by a (self-admitted) flame about the toolkit.

Unfortunately,  it is not true that even programs written only using Xlib
calls are "are completely portable, or, at least, if they are not, the
non-portable code will not be part of the X code."  X exposes a number
of features of the underlying displays, keyboards, and machines.
X client programs,  even those written using only Xlib,  that do not
take proper account of variations between servers including,  for example:

-	The different keysyms available on different keyboards.
-	The different number of buttons on different mice.
-	The different types,  depths and numbers of Visuals.
-	The different amounts of memory available to different servers.

will not port automatically between servers.  This topic is far from
trivial - David Lemke and I were able to write an entire Usenix paper
on just one of these classes of difference (Visualizing X11 Clients
in the Winter '89 Usenix).

If Peter has been selling his management the concept that X provides
automatic and total portability,  he has much more to worry about than the
availability of the toolkit.  In fact,  in most cases the toolkit (whichever
toolkit he uses) is actually helping his portability by being properly
designed to cope with some of the differences between servers.

X makes portability much easier to achieve,  but it does not guarantee it.
Only you,  as the client programmer,  can guarantee that.

	David.