[comp.windows.news] event-driven applications

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (01/05/90)

    Like, say you want a program to go away for a while and do some work.
    Under X you lose the UI... and you can't even put up an "I'm busy" sign
    because it won't get displayed until you return to the event loop.

Another over-generalization that seems typical for this list.  "X" is a whole
lotta things these days.  To claim that all instances of X applications are
single-threaded and strictly event-driven, in the canonical manner of Xt, is
rather silly.  There are multiple researchers out there working with X on
the client side in a multi-threaded environment; there are even one or two
products that work this way.  Whether a multi-threaded client environment is
better or worse than a single-threaded client with multi-threaded server is
rather debateable, I'd say.  The design of Xt was a concious one, for its
portability across a wide range of systems.  Clearly the model isn't adequate
for all applications; that's good, it was an engineering solution.

jcb@frisbee.Sun.COM (Jim Becker) (01/09/90)

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) writes:


       Like, say you want a program to go away for a while and do some work.
       Under X you lose the UI... and you can't even put up an "I'm busy" sign
       because it won't get displayed until you return to the event loop.

   Another over-generalization that seems typical for this list.  

I will try not to make the same mistake. These comments are focused on
_your_ comments regarding Xt.

								"X" is a whole
   lotta things these days.  To claim that all instances of X applications are
   single-threaded and strictly event-driven, in the canonical manner of Xt, is
   rather silly.  There are multiple researchers out there working with X on
   the client side in a multi-threaded environment; there are even one or two
   products that work this way.  Whether a multi-threaded client environment is
   better or worse than a single-threaded client with multi-threaded server is
   rather debateable, I'd say.  

I  take  this  to  be  roughly an argument that a multi-threaded OS is
needed to support separate thread event dispatch using the Xt or other
similiar toolkit model.

What  current OSes support this? Is this something that users can rely
on anytime in the future? Will all OSes to which  X  is  ported  allow
this model?

Given the basic design of the X event model  there  are  a  number  of
problems that arise when creating more complex applications than those
more closely interface driven. These are starting to  arise  now  that
developers are venturing into _real application land_.

				   The design of Xt was a concious one, for its
   portability across a wide range of systems.  Clearly the model isn't adequate
   for all applications; that's good, it was an engineering solution.
			 ~~~~~~~~~~~
Clearly the model is designed for simple applications, not those  that
have  vastly  complex  interfaces.  The model breaks with more complex
interfaces and applications that do real work rather than heavy UI and
light functionality.

It  is  *not* good that Xt isn't adequate for all applications, simply
because it is being asserted as a _standard_ on which all toolkits are
to  be  based.  If the initial foundation is inadequate then it should
not be deemed the standard on which all solutions are based.

By   locking  all  users  into  a  deficient  standard  prior  to  the
marketplace  understanding  the  variables  in  the  game,   one   has
effectivily crippled further progress in this area.

I  have  yet to meet someone that could understand programming Xt in a
single sitting; and there are pretty amazed reactions when people  get
into  understanding  it. Those here that have attempted to use it have
been pretty smart, and it was no cakewalk to understand it  for  them.
My brain has done  automatic  garbage  collection  after  reading  the
various Xt texts, and I couldn't start writting a program using Xt.

Although I think that X it pretty good  up  through  the  Xlib  layer,
seeing that Xt has become a stated underlying standard makes  me  have
to realize that those defining the standards  haven't  yet  understood
the issues that will make X and Unix mainline consumer  products.  The
Xt  solution  increases  complexity  when  it  should  be a high level
distilled  usage  of  Xlib.   Programmers  out  there  don't want more
complexity, they need less. Why  do  you  think  that  software  never
catches up with hardware advances? Maybe  the  software  isn't  simple
enough  to use... Unix will be a bane rather than a blessing if no one
decides that "engineering solutions" aren't wide market solutions, and
works on productizing Unix for real people rather than expert users.

Creating a barrier to learning and progress like the  Xt  gobbledygook
is bad enough in itself (sorry Ralph). But making this a standard that
all  have  to  understand and suffer with simply limits the commercial
viablity of Unix/X in the face of OS/2 and PM. If we  want  X  to  win
then why is the door shut to creativity  beyond  the  Xt  class  based
model?

Sorry  to  sound  so  negative,  but  I  don't think that learning and
creating the interface should be 80% of  the  application  development
time. I have created interfaces for large X applications in  the  past
and don't think Xt (or Interviews) based solutions will work. I  would
really  like to see an Xt based application with >100 windows, dialogs
and alerts. By that time those  teams  of  programmers  designing  and
implementing widgets will have more than consumed the `peace dividend'
in time spent learning Xt and subclassing widgets!

The Sun solution of XView and Guide presents an example where the same
basic functionality of the interface mechanisms have been created sans
Xt.   Last  I  checked  InterViews  didn't  use  Xt.   Since there are
multiple ways to skin this cat, and you state that Xt isn't the  final
solution, why is it a standard?


-Jim Becker

These thoughts are my own, and will probably get me into major trouble..
--    
   Jim Becker / jcb%frisbee@sun.com  / Sun Microsystems    
   ...these are my opinions, and even my id disagrees..    

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (01/11/90)

    I  take  this  to  be  roughly an argument that a multi-threaded OS is
    needed to support separate thread event dispatch using the Xt or other
    similiar toolkit model.

It's possible to use application-level threads and get somewhere.  The main
problem with such an approach is system calls blocking all threads; you have
to understand application specifics to know how bad of a problem this is (but
it's definitely a problem for some applications).

    What current OSes support this?

Mach, Sprite, Symbolics, TI Explorer, Cedar, V(?), probably others.  It seems
like there is a relative abundance of application-level threads packages for C,
although few of them are widely/easily available I guess.  Processes are now
fairly common in product Lisp systems.  Several people have put threads into
C++.

    Is this something that users can rely on anytime in the future?

If OSF has its way, Mach may be widespread eventually. :-)
There is a POSIX committee working hard on a standard Threads definition,
indications are that they are making considerable progress.

    Clearly the model is designed for simple applications, not those  that
    have  vastly  complex  interfaces.

I've seen a number of X products that are quite sophisticated.  (I don't
know about "vastly complex", we don't encourage those. :-)

    The model breaks with more complex
    interfaces and applications that do real work rather than heavy UI and
    light functionality.

The model breaks when there is significant "computation" in parallel with user
interaction, if that computation cannot easily be decomposed into Xt's notion
of "work procs".  I agree completely.  But, as I have argued in the (distant)
past, user interaction in sophisticated applications will very likely require
interaction with the "back end" data of the application, and can't always be
"downloaded" into a window server and run autonomously; multiple threads will
be needed in the client as well.  I remember Mark Callow of SGI at a SIGGRAPH
panel a couple years ago admitting this turned out to be essentially the case
for several applications they had been building.

    It  is  *not* good that Xt isn't adequate for all applications, simply
    because it is being asserted as a _standard_ on which all toolkits are
    to  be  based.

You have the emphasis in the wrong place.  It is *a* standard; the X Consortium
does not view it as the only possible standard.  I strongly disagree that one
should build the universal toolkit (whatever that is) or be damned; I'd much
rather take the 80% rule (and be damned :-).  One of the common citations is
that Macs/PCs have a wealth of useful applications, yet they are based on
essentially the same model.

    By   locking  all  users  into  a  deficient  standard  prior  to  the
    marketplace  understanding  the  variables  in  the  game,   one   has
    effectivily crippled further progress in this area.

When I count the number of new toolkits *still* being designed in the X
environment (whether Xt based or not), I find it hard to agree that progress
is being crippled.  On the other hand, I've talked to a fair number of
real end-users (e.g. people from federal agencies), and their almost
universal cry is "give us something yesterday, I don't care what it is,
I trust you that it's good enough for what I need to build right now".
Standardization is an attempt to satisfy those kinds of needs, hopefully
without stiffling innovation.  It's a tricky road to walk.

    I  have  yet to meet someone that could understand programming Xt in a
    single sitting; and there are pretty amazed reactions when people  get
    into  understanding  it.

Anecdotal evidence is hard to compare.  I have an undergraduate (a freshman
as I recall) with no prior experience in windowing or graphics, just a little
bit of C programming.  We gave him the task of rewriting bitmap(1) to be a
toolkit client, using the Athena Widgets.  He read the documentation, asked
very few questions, and poof, he's got a reasonably good application up and
running (certainly much better than the current bitmap), including having
written his own widget.

    Those here that have attempted to use it have
    been pretty smart, and it was no cakewalk to understand it  for  them.

I agree it is difficult.  I think a large part of it may be the documentation
(e.g. separating out cleanly what widget users need vs. what widget writers
need). I hope the Asente/Swick book nearing completion will help.  And widget
set documentation is getting better, as people learn how to present the
information better.

    But making this a standard that
    all  have  to  understand and suffer with simply limits the commercial
    viablity of Unix/X in the face of OS/2 and PM.

Gee, I've read the PM documentation, and I can't say it's any better.

    If we  want  X  to  win
    then why is the door shut to creativity  beyond  the  Xt  class  based
    model?

Who in the world ever said it was shut?  There is a wealth of creativity going
on.  Look around; attend the X Conference. :-)  But, there's no consensus on
any of it yet, that would enable standardization.  I'm not really sure what
your complaint is.  You seem to want the world's best toolkit, which doesn't
exist and probably won't in our lifetime, yet complain that people have agreed
to a common definition of something that does in fact enable a reasonable range
of applications to be built.

    Since there are
    multiple ways to skin this cat, and you state that Xt isn't the  final
    solution, why is it a standard?

Because multiple vendors rely on the Xt foundation, and desire to have a
common, vendor-neutral definition and evolution of that layer.  If the
same were true of some other interface, the X Consortium would consider
standardization of it.

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (01/13/90)

[Jim Becker's message showed up on xpert first, here's what I sent there.]

It's a little strange that this conversation has been moved from
news-makers to xpert.  (I prefer to be "one of the flamers" there,
rather than an apparent "authority figure" here. :-)

    Since one of the  goals
    of the X Window System is to be widely transportable it seems that  to
    provide functionality that requires off-beat operating system features
    would be shooting yourself in the foot.

My comments should be taken as forward-looking, not present-day exclusionary.
I come from a distributed systems background.  I'm not particulary interested
in solving problems for X in isolation when they apply equally to a much
broader set of interfaces and applications.  Multi-threading is just a case
in point; I'd rather not solve the "X problem" with multi-threading in the
server just because it's easier to do it there, when I see multi-threading in
a much more general context coming down the pike.

    It would be unfortunate if  these
    efforts were tainted by a dependence upon functionality  that  is  not
    available to most users of computers.

I'm not really sure where you read this bias in my statements.  I'm certainly
not advocating throwing out current mechanisms and requiring multi-threading
in the operating system in order to write Hello World.  I am saying that for
those applications requiring the functionality, design should be done in the
context of what we know (or at least hope) is "just around the corner" for
the system layers beneath us.

    I  have  to  disagree  in regard to `vastly complex' products.

I think you've read too much into what was intended as a joke.

    The solution that you outline also  sounds  somewhat  hairy.  I
    believe there are simpler ways to skin the cat, although they  haven't
    appeared yet.

I'm all for simpler solutions; I'd be glad to hear about them.

    However I was under the impression that it was moving toward status of
    an `exclusive' standard. I am not in the meetings where it is decided,
    but the third hand info that floats by seemed to have the  Xt  toolkit
    being  put  onto  the  exclusive standards list.

Third hand info is often confused.  A great deal of debate has gone on
over NIST's proposed FIPS on X (government standardization), and over the
IEEE P1201 work at the toolkit level (formal standardization).  Those are
both distinct from the standardization process in the X Consortium.  The
X Consortium is not a ruling body for the government, IEEE, or ANSI, and
other politics come to bear in those domains.  However, I am not aware of
any exclusionary wording in the current draft NIST and IEEE documents.

    I believe the fact that there are so many efforts  other  than
    Xt is testimony to support my view that Xt isn't the end of the story.

I have never said Xt is the end of the story; I'm not sure anyone ever has.

    Ever try to teach your parents how to program a VCR?

Heck, I can't even program my VCR.

    The beauty of the Mac is that they took all the  complexity  and
    packaged it for the user into something understandable. The manual  to
    use the Mac is mighty thin, and comprehensive.

You have suddenly jumped from *writing* applications to *using* them.
A manual to *use* a well-designed X application set can be just as thin
and comprehensive.  I would not call Mac programming documentation "thin".
(That doesn't mean I think a programming interface should be complex.)

    Speaking of which, is there any weight given in the standards  process
    to  complexity  of  use/comprehension,  performance   and   commercial
    viability?

Of course.  The companies involved in a standardization process are seldom
in it just for a good time.

    My involvement with the X C++ Consortium meeting at
    Stanford seemed to be absent from these real issues.

This was also the kickoff meeting to C++ work, where it's very useful to
"blue sky" to get the feel for things.  You don't know where good limits
make sense until you understand the space.  It's rather simplistic to draw
too many conclusions from a single meeting like this.

    What  is  going  on  in  New  Orleans  this  week?  Thought  there was
    expectation of closure.

I'm way too busy to attend the P1201 meeting this week.  (So why am I writing
this message?)  If you know anything about the way formal standards bodies work,
and the short period of time that P1201 has existed, you can answer this
question yourself.