X11MessagesDoc.tioga
Copyright © 1988, 1989, 1990, 1991 by Xerox Corporation. All rights reserved.
Christian Jacobi, May 12, 1992 4:32 pm PDT
The X Window system version 11.
This text documents contains messages about the X software;
For information about how to run X windows: X11Doc.tioga
For client programmer information, see: X11ClientsDoc.tioga
For XTk information, see: XTkDoc.tioga
For implementor information, see: X11ImplDoc.tioga
This file, X11MessagesDoc.tioga is probably slightly out of date when you read it.
#new#######################
Date: Mon, 11 May 92 11:33:58 PDT
From: jacobi:PARC:Xerox
Subject: X11, X11Demos, X11Viewers, Customize for Cedar10.1
To: Cedar10Implementors:Parc:Xerox
Cc: PCedar Coordinator:Parc:Xerox, CedarUsers:Parc:Xerox
Reply-to: Christian P Jacobi:PARC:Xerox
X11
DF files: [Cedar10.1]<Top>X11.df
Removed demo programs from df file.
Bug fixes in XTkMigrationImpl, XTkPopUpsImpl.
Bug fix to handle case if default font is not supported by server. (Tadpole)
New interface X11CommanderOps.mesa. Fixed sevaral applications to use X11CommanderOps to access a connection. (The purpose of this is to get connection reference counting right (To know when to close a connection (No, finalization wouldn't work for this)))
X11Demos
DF files: [Cedar10.1]<Top>X11Demos.df
1) New df file.
New home for old demos removed from X11.df.
2) New multi user demo: X11SimpleChat.
Try it. There is no documentation available yet, but the source text nearly fits on one single screen.
X11Viewers
DF files: [Cedar10.1]<Top>X11Viewers.df
New interface: ViewerHelpStrings.mesa
Improved help information of X11Viewers menu.
New ImagerX11 command replaces suite of old commands to specify how ImagerX11 shall be used. (No, ImagerX11 has not yet been ported to Cedar10.1).
Customize
DF files: [Cedar10.1]<Top>Customize.df
New extras interface: CustomizeExtras.mesa
New database merge operations will be useful for X11R5's new convention with per screen resource databases.
#new#######################
Date: Wed, 01 Apr 92 09:23:01 PST
From: jacobi:PARC:Xerox
Subject: keyboard mapping
To: Lanning, Willie-Sue
Cc: jacobi
Stan,
could ypou make the following keyboard mapping PARC standard?
/Cedar10.1/Keyboards/XmodmapForSunType4.text
respectively in non-Cedar notation
/project/cedar10.1/release/keyboards/xmodmapforsuntype4.text.~1~
The purpose of this .Xmodmap file is to support (concurrently) Unix tools, Sun deskset, Cedar10.1 and PCedar2.0. [The previous version does not support Cedar10.1]
Christian
#new#######################
Date: Mon, 11 May 92 11:33:58 PDT
From: jacobi:PARC:Xerox
Subject: X11, X11Demos, X11Viewers, Customize for Cedar10.1
To: Cedar10Implementors:Parc:Xerox
Cc: PCedar Coordinator:Parc:Xerox, CedarUsers:Parc:Xerox
Reply-to: Christian P Jacobi:PARC:Xerox
X11
DF files: [Cedar10.1]<Top>X11.df
Removed demo programs from df file.
Bug fixes in XTkMigrationImpl, XTkPopUpsImpl.
Bug fix to handle case if default font is not supported by server. (Tadpole)
New interface X11CommanderOps.mesa. Fixed sevaral applications to use X11CommanderOps to access a connection. (The purpose of this is to get connection reference counting right (To know when to close a connection (No, finalization wouldn't work for this)))
X11Demos
DF files: [Cedar10.1]<Top>X11Demos.df
1) New df file.
New home for old demos removed from X11.df.
2) New multi user demo: X11SimpleChat.
Try it. There is no documentation available yet, but the source text nearly fits on one single screen.
X11Viewers
DF files: [Cedar10.1]<Top>X11Viewers.df
New interface: ViewerHelpStrings.mesa
Improved help information of X11Viewers menu.
New ImagerX11 command replaces suite of old commands to specify how ImagerX11 shall be used. (No, ImagerX11 has not yet been ported to Cedar10.1).
Customize
DF files: [Cedar10.1]<Top>Customize.df
New extras interface: CustomizeExtras.mesa
New database merge operations will be useful for X11R5's new convention with per screen resource databases.
#new#######################
Date: Fri, 27 Mar 92 17:32:40 PST
From: jacobi:PARC:Xerox
Subject: 7 more packages for Cedar10.1
To: Cedar10Implementors:Parc:Xerox
Cc: PCedar Coordinator:Parc:Xerox
Reply-to: Jacobi:PARC:Xerox
PopUpCommand
DF files: [Cedar10.1]<Top>PopUpCommand.df
Documentation: [Cedar10.1]<PopUpCommand>PopUpCommandDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
I think this is a really neat package. I use it to make commander buttons pop up menus.
TerminalIO
DF files: [Cedar10.1]<Top>TerminalIO.df
Documentation: [Cedar10.1]<TerminalIO>TerminalIODoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
You probably won't need this but our DA tools will if they get ported.
I haven't ported the mix master stuff yet.
SimpleStreams
DF files: [Cedar10.1]<Top>SimpleStreams.df
Documentation: [Cedar10.1]<SimpleStreams>SimpleStreamsDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
Somebody sometimes said we won't need this package. That person might be right but I like this package and therefore ported it.
SimpleStreamsOnViewers
DF files: [Cedar10.1]<Top>SimpleStreamsOnViewers.df
Documentation: none
Maintainer: Jacobi:PARC:Xerox
Ported and renamed from PCedar2.0. (Old name was ViewerSimpleStreams)
SimpleStreamsOnX
DF files: [Cedar10.1]<Top>SimpleStreamsOnX.df
Documentation: none
Maintainer: Jacobi:PARC:Xerox
New df file for old but improved functionality. Also did add a test program.
X11
DF files: [Cedar10.1]<Top>X11.df
Documentation: plenty
Maintainer: Jacobi:PARC:Xerox
Removed the SimpleStreams stuff as it got a home of its own.
X11TIP
DF files: [Cedar10.1]<Top>X11TIP.df
Documentation: oops
Maintainer: Jacobi:PARC:Xerox
Improved error behaviour; fixed small memory leak.
#new#######################
Date: Fri, 27 Mar 92 11:57:31 PST
From: jacobi:PARC:Xerox
Subject: 8 packages for Cedar10.1
To: Cedar10Implementors:Parc:Xerox
Cc: PCedar Coordinator:Parc:Xerox
Reply-to: Jacobi:PARC:Xerox
ScannerTool
DF files: [Cedar10.1]<Top>ScannerTool.df
Documentation: [Cedar10.1]<ScannerTool>ScannerToolDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
ScannerTool is a very simple tool driving a scanner
Maintain
DF files: [Cedar10.1]<Top>Maintain.df
Documentation: ?
Maintainer: ?
Recompiled "Xmaintain" to match current versions of X software.
XlShape
DF files: [Cedar10.1]<Top>XlShape.df
Documentation: [Cedar10.1]<XlShape>XlShapeDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
X11 nonrectangular window shape extension. The purpose of providing this package was to test extensability of the X mechanisms so the debugging of XlInputExtension will be easier.
XlInputExtension
DF files: [Cedar10.1]<Top>XlInputExtension.df
Documentation: [Cedar10.1]<XlInputExtension>XlInputExtensionDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
Supports the input extension for the X Window system. This package is not yet useful; it is made in anticipation of multi-pen liveboards.
ScreenSpy
DF files: [Cedar10.1]<Top>ScreenSpy.df
Documentation: [Cedar10.1]<ScreenSpy>ScreenSpyDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
Little groupware hack; allows to watch the screen of a cedar world from a different machine.
XCommander
DF files: [Cedar10.1]<Top>XCommander.df
Documentation: [Cedar10.1]<XCommander>XCommanderDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
A viewer-free command tool using an X window for typscript. This is still lacking from a very poor typscript implementation.
X11Eval
DF files: [Cedar10.1]<Top>X11Eval.df
Documentation: [Cedar10.1]<X11Eval>X11EvalDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
X11Eval is a hack which allows acessing commander and other intepreters through X window mechanisms. It is useful for implementing hacks like whistle up windows or interoperable applications in different programming languages.
X11Tcl
DF files: [Cedar10.1]<Top>X11Tcl.df
Documentation: [Cedar10.1]<X11Tcl>X11TclDoc.tioga
Maintainer: Jacobi:PARC:Xerox
Ported from PCedar2.0.
X11Tcl supports communication with John Ousterhouts Tcl
#new#######################
Date: Thu, 26 Mar 92 16:01:04 PST
From: jacobi:PARC:Xerox
Subject: XTkFeedback for Cedar10.1
To: Cedar10Implementors:Parc:Xerox
Cc: PCedar Coordinator:Parc:Xerox, Bier
Reply-to: Jacobi:PARC:Xerox
XTkFeedback
DF files: [Cedar10.1]<Top>XTkFeedback.df
Documentation: [Cedar10.1]<TIPTools>XTkFeedbackDoc.tioga
Maintainer: Jacobi:PARC:Xerox
XTkFeedback enables feedback (SimpleFeedback.mesa, Feedback.mesa) using XTk widgets.
Critical changes
New package.
Questions
1) I'm not that sure I got the spirit of this packahe right; suggestions please.
2) Feedback seems not to be capable of multi threaded use.
3) I'm quite sure I got the selection of the X server to be used not really right. I don't know how to find this out with the Feedback interface.
4) How can I set the default feedback right? A viewerless world ougth to use this as default where a viewer containing world ought to use the system script as default.
#new#######################
Sender: janssen@parc.xerox:com:Xerox
Subject: Re: Request for registration of KeySyms
In-Reply-To: "<92Feb26.120450pst.11870@alpha.xerox.com>"
Message-ID: "<4dezTVwB0KGW0Yu9EU@holmes.parc.xerox.com>"
To: xregistry@expo.lcs.mit:edu
Cc: jacobi:PARC, weiser:PARC, janssen@parc.xerox
From: janssen@parc.xerox:com:Xerox
Received: from holmes.parc.xerox.com ([13.1.100.162]) by alpha.xerox.com with SMTP id <11870>; Wed, 26 Feb 1992 12:26:26 PST
Received: by holmes.parc.xerox.com id <33025>; Wed, 26 Feb 1992 12:26:22 -0800
Received: from Messages.7.15.N.CUILIB.3.45.SNAP.NOT.LINKED.holmes.parc.xerox.com.sun4.41
via MS.5.6.holmes.parc.xerox.com.sun4�
Wed, 26 Feb 1992 12:26:09 -0800 (PST)
Original-Sender: Bill Janssen <janssen@parc.xerox.com>
Original-From: Bill Janssen <janssen@parc.xerox.com>
Date: Wed, 26 Feb 1992 12:26:09 PST
References: "<92Feb26.120450pst.11870@alpha.xerox.com>"

Hi.

Please register:

1) the organization name "Xerox" to be used as a prefix for other
registered names,

2) the following five keysyms:

XeroxXK←PointerButton1 0x10070001
XeroxXK←PointerButton2 0x10070002
XeroxXK←PointerButton3 0x10070003
XeroxXK←PointerButton4 0x10070004
XeroxXK←PointerButton5 0x10070005

For a reference, please put:

Bill Janssen
Xerox PARC
3333 Coyote Hill Road
Palo Alto, CA 94304

Thanks.

Bill
#new#######################
Date: Wed, 26 Feb 92 19:14:38 PST
From: jacobi:PARC:Xerox
Subject: Registered KeySyms
To: Plass, Willie-Sue
Cc: jacobi, Wyatt
With the registered (and therfore changed) keysyms I think (more accurate: hope) I didn't break applications running on top of RawViewers. However many application (including Tioga) will be broken on X11Viewers unless a new keyboard mapping is applied.
I have tried to make a keyboard mapping which should work CONCURRENTLY for
1) PCedar2.0 X11Viewers
2) Cedar10.1 X11Viewers
3) Any old application from Sun
of course I haven't had opportunity to test 2) and never will have one to test 3) completely.
If you have a sun type 4 keyboard, type
xmodmap ~jacobi/w10/.Xmodmap-type4
into a unix shell. Or better: copy the file as soon as I won't improve it any more.
Christian
#new#######################
Subject: Re: Request for registration of KeySyms
In-Reply-To: "Your message of "Wed, 26 Feb 1992 12:26:09 PST ."
<4dezTVwB0KGW0Yu9EU@holmes.parc.xerox.com>"
Message-ID: "<9202262033.AA02653@explain.lcs.mit.edu>"
To: janssen@parc.xerox:com
Cc: jacobi:PARC, weiser:PARC
From: rws@expo.lcs.mit:edu:Xerox
Received: from expo.lcs.mit.edu ([18.24.0.11]) by alpha.xerox.com with SMTP id <11896>; Wed, 26 Feb 1992 12:34:27 PST
Received: from explain.lcs.mit.edu by expo.lcs.mit.edu; Wed, 26 Feb 92 15:34:27 EST
Received: by explain.lcs.mit.edu; Wed, 26 Feb 92 15:33:54 -0500
Original-To: Bill Janssen <janssen@parc.xerox.com>
Original-From: Bob Scheifler <rws@expo.lcs.mit.edu>
Date: Wed, 26 Feb 1992 12:33:53 PST

duly registered.
#new#######################
Date: Tue, 21 Apr 92 17:03:20 PDT
From: jacobi:PARC:Xerox
Subject: X11 for Cedar10.1
To: Cedar10Implementors:Parc:Xerox
Cc: PCedar Coordinator:Parc:Xerox, Henderson
Reply-to: jacobi
X11
DF files: [Cedar10.1]<Top>X11.df
Uses different implementation for property lists.
Event data type now has a property list. (XlEventProperties.mesa)
New widget classes: XTkNumberLabel.mesa, XTkBasics.mesa
Changed widget class: XTkSlider.mesa replaces XTkSliders.mesa
Not necessarily recognizable, but the high order bit of these changes is about gathering new insights on how to compose widgets.
All known clients (except packaged worlds) are updated
#new#######################
Date: Thu, 29 Aug 91 15:37:05 PDT
From: Christian P Jacobi:PARC:Xerox
Subject: X11 and friends for PCedar2.0
To: PCedarUsers^
Cc: Christian P Jacobi, NewJersey
Reply-to: Christian P Jacobi:PARC:Xerox
X11 and friends for PCedar2.0
DF Files
/PCedar2.0/top/X11-Suite.df
/PCedar2.0/top/X11TIP-Suite.df
/PCedar2.0/top/X11Viewers-Suite.df
/PCedar2.0/top/X11Selections-Suite.df
/PCedar2.0/top/Slate-Suite.df
/PCedar2.0/top/PseudoKeyboard-Suite.df
/PCedar2.0/top/ScreenSpy-Suite.df
/PCedar2.0/top/PopUpMenus-Suite.df
/PCedar2.0/top/SharedPaint-Suite.df
/PCedar2.0/top/X11Eval-Suite.df
Abstract
Major release of the X11 client software. Supports migrating widgets.
On Xl level:
Minor public interface changes, mostly due to improved handling of errors situations. If an old program recompiles, its semantics has not changed.
On XTk level:
Some public interface changes mainly due to obvious improvements or migration. Client programs need little editing. If an old program recompiles, its semantics has not changed.
Large widget class implementor interface changes due to migration. All widget classes do support migration.
X11Viewers
Major fixes due to different migration method.
Al other applications
Minor fixes due to "obvious improvements" or migration.
XTk Migration scheme
Application have the choice whether and how it supports migration. I believe the major applications will support migration by creating new widgets on a different connection. The mechanism implemented here is a poor applications choice, where migration is built in and free, but limited in power. All supported widget classes support this migration method. All my application support some migration.
Think of migration as un-realize, followed by binding a new screen, followed by re-realize. Its main difficulty is that asynchronous terminations must terminate clean, so that widgets could be re-used safely.
Clients do still have the option to use direct X level features. They must be aware that on un-realize all screen dependent information has to be abandonned. This is easier as it sounds; e.g X11Viewers and X11Selections were the only applications where this applies. While enabling migration was a major update, it is nevertheless not expensive when not used. It was a important to make it sufficiently lightweight to not scare any potential XTk users which don't explicitely need that feature.
Screen dependent features are removed when an old screen is forgotten instead of initialized when a new screen is introduced. This scheme has been selected so that silly applications without migration support do not need to set screen dependent features in a callback, but could do it directly at widget creation time.
Detailed changes
Stop reading here.
This is for my log and for client programmers.
I believe the number of lines of code did decrease !
Name changes:
I have watched a client programmer having trouble with the old names. I apologize for the silly name changing business, but the new names ought to be easier to understand and are more consistent.
XTk.NoteReconfigure => NoteGeometryChange, NoteMappingChange
XTk.ReconfigureNow => StartReconfigureChildren
XTk.Reconfigure => NoteAndStartReconfigure
XTk.Delete => DestroyWidget
XTkWidgets: TextSpec parameter => text: Rope, style: StyleSpec parameters
New public interfaces
The basic functionality for these interfaces existed before, making explicit interfaces was enforcing the right modularity (and an easy opportunity to fix functionality).
XTkFields
XTkButtons 
XTkLabels 
XTkContainers 
XTkShellWidgets
XTkChoiceWidgets
XTkStreamWidgets
New functionality added to existing packages
As a general rule widget creation is more standardized. It is now possible to create widget first and set most parameters later. This gives clients freedom in the order of widget creation. This allowed to simplify some interfaces.
XTkButtons NotifyProc and TQ can be bound also later
XTkLabels Clean subclassing; get-style proc
XTkStreamWidgets Order of procedures relaxed
New public interfaces with new functionality.
XTkDelegation 
XTkMigration
XTkNotification
XlRecycleMotionEvents
XTk
Migration...
Children:
Collections are not the only class with child widgets anymore but any class can have children widgets. New children enumeration mechanism for internal use. New subclass creation conventions.
Implementation of simple stacks and of general collections now separated. Simple stacks use inheritance using only public interfaces.
Changes which might request client editing
parent, depth, visual, attributes are moved from WidgetSpec to WidgetRep
AddEventMatch split into AddPermanentMatch and AddTemporaryMatch
CreateWidget has Atom.PropList
Locking scheme
New convention: The name of a procedure implies what locks are supposed to be hold when it is called.
Flags
A packed array of bool to store client information.
Selection of displays or predefine geometry:
Users: Use the new X11 command.
Clients: Creating shells with connection=NIL will do the right thing.
XTkFriends
Better functionality split between XTk and XTkFriends. I think now only applications using subclassing of widgets need the XTkFriends interface.
XTkShellWidgets
Method to make connections keep a reference count of shells. This allows automatic closing of connection which are no more needed.
Cleaned up usage of ICCCM fields.
Conveniance procedures for window header and icon name.
XTkBitmapWidgets
Renamed from XTkBitmapWidget.
BitmapEventProc has clientData parameter.
XTkDB and geometry handling
XTkDB Simplified and cleaner. All business with callbacks is removed; it is now the callers business to prevent repeated quering of the database. (Migration didn't allow the previous interface to work).
Use of flags to override default geometry handling of class.
Xl
More robust error handling.
Fixed a "memory leak" in caching reply buffers (Cache used to leak to garbage collector; not a real memory leak).
InternAtom changed default to actually create atom.
XlTQOps
New procedure CountProcs. Motivation: This enables implementation of procedures which can check whether they should release the lock. (Required for periodic notification procedures on idle TQ's).
XlRecycleMotionEvents
New semi-private interface for mechanism which allows to recycle motion events to further reduce memory allocations. X11Viewers takes advantage of this.
XlBitmap
Split the implementation in a package implementing the basic operations and another implementation providing an Imager device for the CreateContext procedure. This is split to allow some of our friends in Sunnyvale to be imager less.
Split the implementation in a package implementing the basic operations and another implementation providing an Imager device for the CreateContext procedure. This is split to allow some of our friends in Sunnyvale to be imager less.
GetBox returns box of bitmap as required (instead of box of underlying sample map).
XlConventions
SetProperties uses list of ROPE instead XAtom to be screen independent.
XlICCCMTypes
Renamed things to match the names selected in ICCCM
X11Viewers
Supports the new migration scheme. This was hard!
X11TIP
Reset time-base on migration
Takes advantage of motion event recycling.
Made a separate package not depending on X11Viewers
X11SelectionOwner
screen dependent fields are updated on migration of a selection owner
Method to disable ownership procedures
Slate, ScreenSpy, PseudoKeyboard
Trivial tracking to the new interfaces
New commands
X11: Set up a default server for the rest of the command line
X11MigrationTool: creates a migration tool
CBitmapReader
New package to read bitmaps in X11's horrible format for bitmap files.
Of course suns icon editor uses a different, actually nicer, but not documented format. Tough luck, but I have chosen the better documented format (Writing scanners is not my idea of having fun; one is enough).
Removed packages
XlTextWindow ==> Moved subset into XTkStreamWidgetsImpl
XlSimpleStreams ==> XTkSimpleStreams (use XTkStreamWidgets instead of XlTextWindow; 1/4 of the size remains)
XlAsciiInputImpl separated out of config because used only by XTkSimpleStreams
Christian 
#Recent#######################
I think I didn't sent this message out ever...

Abstract
Some bug fixes.
Some code for Icons.
Boring details
Xl
Input-focus
Fixed a bug in handling X focusOut Events.
As result, in X11Viewers the caret stops blinking when the X input focus is moved to other X window.
More important: Resetting the X input focus to the Cedar window is now more reliable. Viewers wrongly wouldn't know that the Cedar input focus # X input focus. This can be compensated by using the X focusOut Events to make X11Viewers give up the Cedar input focus, so when Cedar needs to aquire it again (on left clicks), as side effect it aquires also a new X input focus.
I'm surprized how good it used to work in spite of this error. I'm not so sure whether the new, correct but slower behaviour is an improvement..
XTkWidgets
Icons
Shells lookup in resource database for an icon.
If database specifies something which looks like a short filename, a fix searchpath is used: First the home directory, then /pseudo/pcedar2.0/famousfiles/. I'm too tired for more fancy mechanisms, but would welcome contributions.
Only reads in "ux" directories, not in "vux" directories (reason is possible interoperability with SSU below PFS, and, sharing X resource database entry format with C programs).
CBitmapReader
New package to read bitmaps in X11's horrible format for bitmap files.
Of course suns icon editor uses a different, actually nicer, but not documented format. Tough luck, but I have chosen the better documented format (Writing scanners is not my idea of having fun; one is enough).
X11SelectionOwner
New conveniance procedure to handle some un-interesting but mandatory targets.
Bug fix: No more raises an error when the connection dies while a transfer is in progress. This scenario really used to happen in one of my applications.
Bug fix: Deals more graceful with applications aquiring for selection ownership before a time-stamp is initialized. Even if explicitely forbidden by ICCCM, some people (like me) did yield to the temptation to write such applications (the time-stamp allows to prevent a racing condition, which in that particular application didn't bother me).
All debugging done with druid and print statements; please somebody make the patch "meadow" larger.
########################
Date: Mon, 29 Apr 91 22:15:23 PDT
From: Christian P Jacobi:PARC:Xerox
Subject: X11 for PCedar2.0
To: PCedarUsers^:Parc:Xerox, XUsers
Cc: Christian P Jacobi
Reply-to: Christian P Jacobi:PARC:Xerox
Improved X11-Suite.df
DF files: [PCedar2.0]<Top>X11-Suite.df
X11SelectionOwner
Increased possible parallelism: A selection owner can now answer multiple selection requests concurrently.
XTkWidgetsExtras
New module. Creates a widget which combines a label and a field.
New concept used for implementation: "Delegation". Read your favorite text about object oriented programing. I never understood what they meant with delegation, until I had a clear problem, implemented somemething to solve it, and, looked for a name for my feature. If that is what they call delegation, I now understand it; but how will I find out ?
XTkPseudoRoot
New module. A pseudo root watches for other applications creating children to its window, similar to a window manager. Once it gets a child, the geometry of that child will be managed by the pseudo root.
Some conventions need to be polished and this widget class rewritten in other toolkits to achieve a higher degree of interoperability at PARC. It ought to be easy, with the exception that the non-Cedar toolkits might not have detailed enough control over error handling.
Xl
InternAtom: Error in case of empty strings is raised before invoking the X server. It is sort of a frequent client error, and, it is much easier to debug this way.
XlAscii
New module. Carved out these features from dark and ugly implementation modules. Got rid of duplications.
XTkExtras
New module. A different method of creation of widgets, useful for subclassing tricks. The XTkExtras.CreateWidgetX procedure ought to replace XTkFriends.CreateWidget, but that would be an interface change.
Christian
#Old#######################
Date: Wed, 13 Mar 91 12:48:22 PST
From: Christian P Jacobi:PARC:Xerox
Subject: New X11, X11Viewers for PCedar2.0
To: PCedarUsers
Cc: Christian P Jacobi, BEbert:OSBU North
New X11, X11Viewers for PCedar2.0
DF Files
/pcedar2.0/top/X11-Suite.df
/pcedar2.0/top/X11Viewers-Suite.df
If you need the PrincOps version, please reply. As source compatible work gets harder to play every day I will not track the changes in PrincOps until I need it for debugging or other reasons.
All known bugs are fixed.
Aditional documentation file XlMessagesDoc.tioga which contains messages about these packages.
Big renaming, to remove mental name conflicts
X11 ==> Xl 
when it means the Cedar Xlib library. X11 now is reseved for the window system.
X11 ==> stays X11 
when it means a command.
when it means a demo program.
when it means a program used for multiple levels.
X11Viewers ==> stays X11Viewers
A demo program from the viewpoint of Xl and XTk
X11Access ==> stays X11Access
This is logically lower then Xl.
X11Tk ==> XTk 
Even in cases where the old name forgot the Tk, like X11Collections;
XTk is the Cedar Xt aequivalent.
X11.Thread ==> Xl.TQ (Short for ThreadQueue) (Prevents confusion with Modula3 threads)
Procedural remarks
If you have more than just 2 or 3 files to adapt, you might try to use TransTioga for the renaming.
Xl
More renaming, completing, and, folding in of all Extras interfaces
Some procedures are named more closely like the X requests they are implementing. (Even if the implementation might have been put on a higher level). The idea is to make the learning curve for using Cedar Xl instead of C XLib faster.
PolyText8 (new from Extras, parameters nicyfied)
ListFonts (Instead EnumerateFonts; added parameter)
CreateConection has applicationKey parameter to handle defaulted servers.
LastTime new procedure.
XPropInfo new procedure.
Deep inside
Now takes advantage that the X Server sends replies and error messages in the right order (It used to take them in any order. This is a substantial simplification!!)
Now handles replies of arbitrary length. (This was previously limited to 2**15-8, motivated basically by the maximum length for REF TEXT's)
Events
Events with equal structures now use the same data type. Using "WITH event SELECT FROM" is discouraged. Better usage is "SELECT event.type FROM" and later NARROW for the event. This is typically faster.
"state" in events has more meaningful type; new comment that "state" is from immediately before the event is generated.
EventHandler type replaced by EventSet type.
Match has separate field for proc and events. (Feels more naturally)
keymapNotify event has pointer to previous event.
Debugging, control of concurrency, flushing
New concept of extending requests with details parameter. Among others this allows specification whether the request should be synchrounous and how to deal with reported errors.
This is particularly aimed at implementors of window managers or ICCCM selections, which must access windows owned by other connections. Errors caused by disappearing clients can now be located and caught at the right spot.
GCContext
Now an opaque type. New procedures IsGCContext, NarrowGCContext. New interface XlGContextOps to remove the more esoteric functions from Xl.
More dummy elements to make mask fill words for more efficient code.
Implementation: Inlined to allow constant folding.
Remembers value on server (It used to remember only whether value was equal or not). This should speed up ImagerX11 a little.
Font
Now an opaque type. New procedures IsFont, NarrowFont.
X11Access
Improved comments.
New procedure to find out whether synchronous mode is desired.
Convention on how to find cirio port.
New commands to set up default values.
XlSpeedHacks
XlSpeedHacks.WaitInitiatedReply: procedures removed because they could not be used safely.
ReportedSequenceNumber: new procedure. (This IS useful because it can be compared to a returned sequence number in a details parameter)
Does not expose private features anymore.
XTk
Added event to parameters of WidgetNotifyProc.
Added notifier for PostConfigure.
XTkWidgets
Improved comments.
Included extras file.
Labels: default text spacing changed to query database.
Unified: XTkWidgets.ButtonHitProc = XTk.WidgetNotifyProc.
XTkTIPSource
Behaviour fix: Extra mouse position reported on button events.
Special private hack $X11TIPSourceKeysFromRoot replaced with real procedure.
XTkTIPSource has option to request setting of absolute time before sending events.
XTkTIP
Extra procedure for collecting key events from shell.
XTkOps
New package.
XlTQOps
New package.
XTkBiScroller, XTkBitmapScroller
Added way to specify inside size without scrollbars.
X11Viewers
Noticable performance bug fix: Got rid of NoExposureEvents in XlBitmapWindows. (Fixed but not reported 2 weeks ago)
Included some of the stuff found in TViewers (but not finished).
Fixed a bug in 32x32 pixel cursers.
New commands
X11DefaultSynch
X11Identification
Tracked packages
SharedPaint-Suite.df
ScreenSpy-Suite.df
PseudoKeyboard.df-Suite
PopUpMenus-Suite.df
########################
Date: Thu, 01 Nov 90 17:37:57 PST
From: Christian P Jacobi:PARC:Xerox
Subject: New X11, X11Viewers, X11RemoteCedar for PCedar2.0; CedarChest7.0
To: CedarUsers, PCedarUsers
Cc: Jacobi
New X11*df, X11Viewers-*df, X11RemoteCedar.df (for PCedar2.0; CedarChest7.0)
DF: Standard places...
Documentation: A lot.
Changes
X11Bitmap: new interface
Carved out of X11BitmapWindow, X11BitmapWidget to make interception of imager calls a feature of the bitmap instead a feature of the window. A bitmap can now refresh into multiple windows implementd by independent packages. Allows some sharing of interception code from X11Viewers and X11RemoteCedar.
X11BitmapWindow, X11BitmapWidget interfaces changes accordingly.
X11Cursor
Cursors now can either be shared and readonly or private and mutable. Use a scalar type instead of atoms to specify cursors. (Put those names into the address space of the compiler, not into the running system). Now supports all standard cursors.
Some new widget classes
X11Scroller: scroll bar widgets
X11BiScroller: A container which can scroll verticaly and horizontaly
X11BitmapScroller: A scrollable bitmap widget
X11RemoteCedar (PrincOps)
Scrollable.
Fixed the df file.
Added a "packaged" version; allows me to do PrincOps X developpment in a running X11RemoteCedar world.
X11Viewers (PCedar)
Take advantage of X11Bitmap; sanitize (a little) the installation of color maps.
X11TIPSource: added facility to offset mouse position by a scroll position
Christian
########################
Date: Thu, 20 Dec 90 20:05:16 PST
Date: Tue, 06 Nov 90 16:52:53 PST
From: Christian P Jacobi:PARC:Xerox
Subject: SharedPaint for PCedar2.0
To: PCedarUsers^:Parc:Xerox
Cc: Willie Sue Orr:Parc:Xerox, Christian P Jacobi
Reply-to: Christian P Jacobi:PARC:Xerox
SharedPaint
DF files: [PCedar2.0]<Top>SharedPaint-Suite.df
Documentation: of course; the usual place
Maintainer: Jacobi, but not very faithfully
New package.
Create a shared bitmap on one machine; paint and display asynchrounously from several machines. This is a little hack and could needs lots of improvement. I made it more out of fun of unusual applications then to make something real.
(Needs recompiled X11 and new NetworkName to run)
########################
Date: Thu, 20 Dec 90 20:05:16 PST
From: Christian P Jacobi:PARC:Xerox
Subject: X11Viewers for PCedar2.0
To: PCedarUsers^:Parc:Xerox
Cc: Willie Sue Orr:Parc:Xerox
Reply-to: Christian P Jacobi:PARC:Xerox
X11Viewers
DF files: [PCedar2.0]<Top>X11Viewers-Suite.df
Documentation: The standard places
Critical change: faster.
########################
Date: Tue, 22 Jan 91 18:57:52 PST
From: Christian P Jacobi:PARC:Xerox
Subject: Trip report from X window system conference
To: XWindows:All Areas, XUsers:PARC, CSL+^:PARC
Cc: Jacobi, Janssen, Kent, jgold:McLean CSD, sblom:Henr801E, Garnaat:Henr801C, Pattison:Henr801C, Pabbisetty:Henr801C
Reply-to: Christian P Jacobi:PARC:Xerox
Trip report from the 5th Annual Technical Conference on the X Window System.
Boston, Massachusetts
14-16 January 1991
If you don't want to read it all, I consider the section about a font server to be the most important one.
I apologize if this report is too opinionated, but if you want a less subjective trip report you can read the conference announcements instead.
I think the program committee did a good job. Many talks were quite good. The talks were reasonably grouped so I didn¹t have to run in and out too often.
This looked like the year of the interactive user interface builder.
Tutorial on Ada
I have chosen this tutorial for two reasons.
1) Ada got fashionable in some parts of Xerox and I wanted to really know whether Ada can be used with X windows or not.
2) I expected the Ada X windows implementors to face many problems similar to the ones I found in implementing the Mesa X window stuff.
I think they did a nice job. However, I would not like to have to use X windows from Ada. It all felt far too much like pioneering. Among other things, they are funded to do the specifications; but not so for the testing. Handling of errors reported by the X server seems a little underpowered.
I tried to mention some of my interoperability concerns to the implementors, but I thought they did not really understand my problems. I might not have explained myself clearly enough.
Their approach is to use inter-language calling to C for the XLib level, but to provide a native Ada implementation of the toolkit level stuff. They tried to use the exact same specification for a toolkit as the standard intrinsics in C. They use the C specification to reduce work, but do not really guarantee binary compatibility.
Two different companies have solved the missing procedure variables problem in two different ways. They have to make a module for each procedure type.
1) Do calls to procedure variables in C. This seems to work fine, but they have to add an extra level of procedure calls.
2) The other company has an implementation which uses tasks for solving the procedure variable problem. They claim it works fine (I don't really believe they tried a large enough application).
Tutorial on Display Postscript
There were free books about Postscript. However there were less books than tutorial participants. You really should have seen that frenzy... People were shaking and tearing the books out of each others hands. (I didn't get one).
There were two speakers, and both knew what they were speaking about. One of them had a free ride on my nerves for behaving like a sales person.
I wish they had put more emphasis on the protocol instead of the C language interfaces.
If they standardized the display postscript protocol but not the server extension doing the actual imaging, we¹d have an immediate business opportunity providing an alternative server (I think the X consortium and Adobe differ on the point whether an implementation is required).
(Chris Kent made some more remarks about display postscript).
Design Principles for Graphical Human-Computer Interfaces (Aaron Marcus).
A very inspiring lecture on how to and how not to do user interfaces. His paper is worth reading. It is also available in UnixWorld August 1990.
Tcl and Tk: Programming System for X11 User Interfaces (John Ousterhout, Berkeley)
Nice work taking advantage of using the same language to do programming and data. By using text as data and programs, he can even access widgets of other applications and has tremendous power with little code. (When I'm in a bad mood I call it the C programmer's lisp; when I'm in a good mood I admire this work).
I had no chance to ask John about debugging or fire walls.
To subclass or not to subclass (Ralph R. Swick, Mark S. Ackerman, DEC and MIT)
They found a problem and rightfully complained. For my taste this talk was much too narrowly focused on the current Xt intrinsics. They basically require better documentation. The Cedar/Mesa toolkit does not share this particular problem due to different widget creation semantics.
Flyweight Objects in InterViews. (Mark Linton, Silicon Graphics)
Mark basically proposes to put the emphasis not on the creation of control panels and menu part, but on the actual graphics of the application. I think he is essentially right, and did good work. However, I think his example program with Chinese fonts was extremely counter-productive.
Customization - Rope for a Noose, or Lifeline for the Drowning? (Jim Gettys, DEC)
Jim pleaded for more customization. Jim's examples of when customization is useful and absolutely not anticipatable by the program authors, were quite convincing. It is a pity he failed to show when there is too much of a good thing.
Editres - A Graphical Resource Editor for X Toolkit Applications (Chris D. Peterson, MIT)
There is a real need for this kind of work. But I cannot help myself for not being excited. Maybe I'm too old-fashioned and like to see the firewall between programmers customizing an application, and users customizing the same application.
Multilingual X windows (Glenn Widener, Vania Joloboff; Tektronics, OSF)
As a talk it was quite good, but I prefer to make more general remarks.
My feel is that X windows is heading the wrong way here, but I am definitely not an expert. They are not providing enough of their own standards but rely on Ansi C locales. It looks to me as if they want to switch what language the computer is using, instead of enabling an application to use multiple languages simultaneously. (They do know better, but they don't know how).
I think some multilingual capabilities ought to be required of people speaking about multilingual computing; I think it would provide some additional perspective that might currently be missing for many native English speakers.
Porting a Sophisticated Graphics Application to the X Environment (Linda Gass, Jim Sandman, Adobe)
I don't remember what they said. (See Chris Kent's addition)
X Image Extension Applications (John Weber, DEC)
My personal feeling is that they are definitely on the wrong track. Too much actual functionality is required from the server. I'd prefer a window server act more like an arbiter of how different applications can cooperate using the same display.
Too bad, but I think we at Xerox ought to monitor this work. There is quite some overlap between the applications they want to base on this Image Extension, and our DocuWorld frenzy. Even (or specially?) if this work is not to my liking, it might influence the way we have to do business.
Three talks about PEX
PEX is a PHIGS standard for X windows. (For those who don't know PHIGS; this is a library to draw in 3D)
I'm not qualified to report on this, as I left some talks to prevent boredom. I then had a great discussion about Trexel with Mark Manasse in the hallway (Trexel is a window system from DEC SRC).
PEX has about 400 features. That's definitely more than fits my brain and I hope for something simpler.
Issues in a Visual Rich Environment (Jeff Weinstein, Silicon Graphics)
Not very inspiring. They seem to have the most capable display hardware but nevertheless have problems implementing the X protocol. BTW: Jeff used to implement an X server for the Dandylion as a CSL summer project intern under Neil Gunther.
Font servers (Jim Fulton, X consortium)
Jim Fulton gave a talk about font servers for X windows. While the current state might be considered poor by Xerox standards (e.g., no outline fonts yet; no rotations yet) I thought the basics made a robust and professional impression. I think they are on the right way, and that Jim did a good job.
The Font server is a server whose client is the X window server. The X window client will not see the Font server directly. Using the Font server will really allow applications to use X servers of different vendors, or X terminals with limited memory for fonts.
What the X consortium standardizes on is the protocol, and probably an example server. Some important problems are solved, at least partly. This Font server protocol will be able to deal with authentications. The need for an X server to deal with multiple font servers is already delt with (but maybe not optimal).
I consider tracking this work to be extremely important for Xerox. (But I am not volunteering myself). I also see three business opportunities.
1) We ought to be clients of font servers.
2) We might provide font servers.
3) We might use font servers to sell our fonts.
1) We ought to be clients of font servers.
X applications will need printing. X applications will use fonts available to X windows. These are exactly the fonts which will be available on those font servers. Our printers should be able to use those font servers if they do not have a own version of the fonts. Note: the fact that those servers might have no rotation won't hurt; X applications won't need it. (Do not expect these font servers to have tuned fonts; use this only if the fonts are not available in our own formats)
2) We might provide font servers.
As we know how to deal with outline fonts we have an edge in this technology. We might provide servers with more or better fonts then the consortium is. (e.g., tuning).
We might take advantage of storing fonts just once for both printing and display.
3) We might use font servers to provide our fonts.
Get people used to our fonts; they will then demand them on hard copy.
BTW: They would like somebody to donate them scan conversion code for outline fonts...
Implementing Drag-and-Drop in X11 (Stuart W. Marks, Sun)
The talk did more to scare me off than to show good work. This was wrong, as can be seen by reading about the meeting of the wmtalk group. I always have to remind myself that the thing wrong with Drag-and-Drop is not its implementation, but the fact that our user interface is different. X windows is supposed to implement mechanisms and not policy; but that is also true if somebody wants a mechanism for a policy I don't like too much.
Portable Electronic Notebook (Jim Rhyne, Doris Chow, Michael Sacks, IBM)
A must to read for CSL's ParcPad crew.
They did some minor X extension to deal with pens, and a separate overlay plane for inking pen moves directly in the server. Please ask for a copy of the paper if you are working on ParcPad or pens. (Others may ignore it, after acknowledging that it was a good talk).
Window System for Multimedia Applications (Hideya Ichihara, NTT)
I don't know whether the native English speakers understood him, but I didn't. He showed pictures of amazing hardware completely filling up the room. Nevertheless, the demos were zippy.
X and Audio: Oil and Vinegar (a DEC crowd)
Good common sense about separating services. They propose to make a different service for X and audio. Of course, a different service does not absolutely imply a different consortium.
A Synchronisation Extension for X (Tim Glauert, Olivetti)
Those of us who hoped for some insight into atomicity or transactional workings were disappointed. All he wanted was some way of synchronizing different applications, like sound and moving mouths in pictures.
On the good side: The proposed server extension is very small and easy to understand.
On the bad side: I think it won't work. Even when it works it is very easy to wedge the server.
The Widget Creation Library (David E. Smyth, JPL)
Looks like good work, but I'm bored about an other widget creation library.
Graphical Application Kits (Andrew Peebles, Mips)
I was too tired and headed out for hallway discussions.
Go: A graphical and interactive C++ toolkit. (Jacques Davy, Bull)
I was too tired to find out how it works. He uses a good extension language.
Hallway conversation with Keith Packard (X consortium)
- X11R5 will do bit blit double as fast as X11R4.
- In no way will they do my favorite extension to let me access the framebuffer directly.
- He desperately wants information about how to drive the Sun GX hardware. If somebody has this information available, would he please send it to him or to me. I think it should be in CSL's and Sun's best interest to get faster X window servers.
Birds of a feather session on OpenWindows
The speaker promised it would not be like a sales talk. He and I must have sat in different rooms.
They consider Display Postscript "interesting."
Birds of a feather session on Xt hints and kinks.
I was bored. My concerns about interoperability have been ignored.
Meeting Xerox folks
We had a meeting one evening.
Xerox was represented by folks from 5 different groups (If you consider Bill Janssen and me from the same group...).
I don't understand how the folks in SSU, which is making a server, can afford to miss sending somebody to the X conference.
My general impression was that those Xerox people attending would be more productive if they had a little bit more money, and that Xerox was saving at the wrong end.
Folks present
Jim Goldsmith   jgold:McLean CSD
Susan Blomenberg  sblom:Henr801E
Mitch Garnaat  Garnaat:Henr801C
Christian Jacobi   Jacobi:PARC
Aimee Pattison  Pattison:Henr801C
Nagesh Pabbisetty  Pabbisetty:Henr801C
Chris Kent   Kent:PARC
Bill Janssen    Janssen:PARC
Meeting of the wmtalk group (The day after the conference)
The wmtalk group is a discussion group within the X consortium, discussing issues like ICCCM.
Stuart Marks from Sun was leading that discussion. I was impressed by his professionalism.
There were lots of problems and the group did not have time to really settle any issue. Nevertheless Stuart Marks made sure that every issue got at least few minutes. The one big issue, Drag and Drop, was delayed till the afternoon. I'm sorry I had to leave early.
Very surprising to me was the large percentage of issues which have already actually occurred in Cedar/Mesa X software. I'm pleased, as many problems hitting us will get solved a reasonable way.
I got a chance to mention my favorite interoperability problem (A feature I thought to be useful for cheops). The group acknowledged the problem and asked me to follow up. I was told a similar problem occurs with input methods (Some feature to deal with multilingual input).
The weather
It was nice to see snow again. They don't remove it in Boston. Considered how little snow they had, the delays on the airport have been substantial.
The war
I sat during an evening glued to the television.
Chris Kent's additions
Mostly about Display Postcript

I attended the DPS BOF session. Adobe and MIT do disagree on whether or
not an implementation is needed. MIT would like to have a sample
implementation that it can give away with every "official" extension.
Adobe doesn't want to give their implementation away, for obvious
reasons. At last year's X conference, I had several talks with people
from Sun which left me expecting to see a DPS extension from them based
on the NeWS interpreter by this year, but it hasn't happened. It still
might, but the Sun people seem more cautious. Steve Evans of Sun, who
heads either the NeWS or window systems group (I've lost track) was
there, and seemed to be trying to find out how to achieve a common
ground and gain acceptance for both systems.

Adobe is trying to emphasize the programmer's interface (similar to the
Imager interface) over the PostScript language itself. Sun is pushing
on the fact that they have PostScript, but they continue to ignore the
programmer's interface -- you have to write PS programs and send them
to the server. Of course, neither provides serious debugging or
development help .. but I think they got the point that that is a problem.

Jim Sandman's talk was just on the border of being a marketing talk for
Illustrator and Display PostScript. He went through all the
capabilities of Illustrator, and then talked about how they implemented
it on X. He only talked a little about the actual implementation, and
said that using DPS saved them about 3 months of effort. I asked him
what he meant by that 3 months after the talk, and he said that he
could have ported the stripped down PS interpreter that's in Macintosh
Illustrator in about 3 months, but they would then lose the ability to
do generalized EPS file preview in illustrations.

I would add that there is a mailing list for X fontserver discussions,
and that we should be represented there.

Bill Janssen's additions
Tutorial on Solbourne's C++ Interface Toolkit called OI
OI is a nice set of classes from Solbourne that make up an X toolkit.
It has the interesting property of emulating completely either Open
Look, OpenLook-3D, or Motif. It knows all the proprietary protocols
that they speak. The appearance is selectable at run-time, so that a
commercial firm can ship one binary to all customers, regardless of
which look-and-feel they are using. Interesting tension in the class
design, between subclassing and callbacks. I was able to build a mildly
different widget by subclassing one of the existing widgets, during the
evening BOF, and it seemed reasonable clean and quick. The crew at
Solbourne are committed to tracking changes to both standards as they
evolve.

There is some unreasonably complicated code to deal with the
unreasonably complicated Xt standard resource and translation
mechanisms. I asked why they didn't just junk that, and they replied
that it was too much of a standard to ignore. Apparently the various
.Xresource and application default files work in the same way as they do
under Xt-based applications.

A window manager, swm, is provided with OI that can also present any of
the three appearances, but still speaks all the private protocols all
the time. This means that you can run both Motif and XView
applications, and the window manager will know how to speak to both of
them properly. The window manager also has built in desktops, which can
be larger than the physical screen. Probably the best commercial window
manager.

This toolkit is being sold by AT&T, current $10K for a source license.
Solbourne will start selling binary versions directly in February. My
opinion is that this is a very interesting bit of technology for any
parts of Xerox that are interested in doing work on X with C++. Contact
your local Solbourne and/or AT&T rep for pricing and delivery.

Andrew Toolkit BOF
This was a non-event, with about 8 attendees. I got into a long talk
with Dick Orgass at IBM and Tom Neuendorffer of the CMU ITC, about
putting ATK into Modula-3. Seems doable. Tom also tells me that Andy
Palay spent about 6 weeks fixing many of the problems with the Andrew
text widget, and that we'll be seeing these changes in about a month.
Drag'n'Drop Meeting
I too was impressed with how well Stuart Marks of Sun controlled this
meeting and brought order out of chaos.

This was a 5-hour session, trying to come up with a communication
protocol that would allow everyone to implement their favorite
drag'n'drop scheme. Some brain-dead proposals were dealt with summarily
(for example, IXI wanted to have the recipient of the drag receive a
note telling it what events initiated the drag, so it could decide what
to do. Upon someone pointing out that these events would have a
toolkit-specific meaning, everyone else decided that this was nonsense,
but we failed to convince the IXI rep.), others dragged on for quite
some time. Much of the time was spent in thinking of ways that drop
sites could register themselves in some way, so that they would not have
to be swapped into memory to highlight themselves as the dragged object
went over them. Rather, the draggee is in charge of doing all graphics
for highlighting of drag sites. This bogosity is because people are
running X on 286's with 2 MB of memory, and can't affort to swap another
client in to send it an event!

A summary of this will appear on the wmtalk list (visible at PARC in the
ATK bulletin board ext.X.wmtalk), along with the next round of proposals.

Meeting on X Consortium standard C++ toolkit for the X Window System
Mark Linton of Silicon Graphics chaired this meeting. The object of
this effort is to develop a 'next-generation' toolkit for X windows and
the C++ programming language. Bob Scheifler, the director of the X
Consortium, is strongly behind this work.

The notion is that the toolkit will be based on Interviews 3.0 (which is
still in beta test). Linton and Scheifler would like to address a
number of interestingly advanced issues with it, including threads,
garbage collection, structured multi-media documents, extension
languages, and multi-lingual support. Much of what they will actually
be able to accomplish will depend on what kind of people sign on to work
on this toolkit. The editor they are proposing to supply as a widget
sounds something like Tioga (levels, per-character attributes). Too bad
PARC isn't more interested in C++ work. Seems like a good way to get
advanced notions incorporated in an external toolkit which a lot of
people will use. SGI, H-P, and IBM seem to be the main contributors,
with DEC becoming more interested.

Release 5 of the MIT sample server
The big things for R5 of the MIT X server are going to be
device-independent color (using the TekCMS model), incorporation of the
MIT (really NCD) fontserver for loading fonts over the network (which
also uses the MIT Athena system Kerberos for authentication),
non-English capability, mainly on the input side, and the incorporation
of the Sample Implementation of the PHIGS extension to X (PEX), which
will provide a 3D rendering model in X. The PEX honchos seemed to think
that most people would use the immediate mode of PHIGS for rendering
only, handling events via the normal X event mechanism.

Keith Packard of the X Consortium staff (a reliable source) feels that
the R5 server is roughly twice as fast as the R4 server, with up to 15x
speedups in places. He'd *really* like to get some better description
of what's what on the Sun GX board so that it can run fast there, too.
Perhaps we could help there?

The alpha version of R5 will be shipped around Feb 15, with the beta
version scheduled for Apr 15, and the final version Jun 15. I will make
them available on a Xerox file-server if there is any demand.
end
########################
Date: Tue, 22 Jan 91 18:57:52 PST
From: Christian P Jacobi:PARC:Xerox
Subject: Trip report from X window system conference
To: XWindows:All Areas, XUsers:PARC, CSL+^:PARC
Cc: Jacobi, Janssen, Kent, jgold:McLean CSD, sblom:Henr801E, Garnaat:Henr801C, Pattison:Henr801C, Pabbisetty:Henr801C
Reply-to: Christian P Jacobi:PARC:Xerox
Trip report from the 5th Annual Technical Conference on the X Window System.
Boston, Massachusetts
14-16 January 1991
If you don't want to read it all, I consider the section about a font server to be the most important one.
I apologize if this report is too opinionated, but if you want a less subjective trip report you can read the conference announcements instead.
I think the program committee did a good job. Many talks were quite good. The talks were reasonably grouped so I didn¹t have to run in and out too often.
This looked like the year of the interactive user interface builder.
Tutorial on Ada
I have chosen this tutorial for two reasons.
1) Ada got fashionable in some parts of Xerox and I wanted to really know whether Ada can be used with X windows or not.
2) I expected the Ada X windows implementors to face many problems similar to the ones I found in implementing the Mesa X window stuff.
I think they did a nice job. However, I would not like to have to use X windows from Ada. It all felt far too much like pioneering. Among other things, they are funded to do the specifications; but not so for the testing. Handling of errors reported by the X server seems a little underpowered.
I tried to mention some of my interoperability concerns to the implementors, but I thought they did not really understand my problems. I might not have explained myself clearly enough.
Their approach is to use inter-language calling to C for the XLib level, but to provide a native Ada implementation of the toolkit level stuff. They tried to use the exact same specification for a toolkit as the standard intrinsics in C. They use the C specification to reduce work, but do not really guarantee binary compatibility.
Two different companies have solved the missing procedure variables problem in two different ways. They have to make a module for each procedure type.
1) Do calls to procedure variables in C. This seems to work fine, but they have to add an extra level of procedure calls.
2) The other company has an implementation which uses tasks for solving the procedure variable problem. They claim it works fine (I don't really believe they tried a large enough application).
Tutorial on Display Postscript
There were free books about Postscript. However there were less books than tutorial participants. You really should have seen that frenzy... People were shaking and tearing the books out of each others hands. (I didn't get one).
There were two speakers, and both knew what they were speaking about. One of them had a free ride on my nerves for behaving like a sales person.
I wish they had put more emphasis on the protocol instead of the C language interfaces.
If they standardized the display postscript protocol but not the server extension doing the actual imaging, we¹d have an immediate business opportunity providing an alternative server (I think the X consortium and Adobe differ on the point whether an implementation is required).
(Chris Kent made some more remarks about display postscript).
Design Principles for Graphical Human-Computer Interfaces (Aaron Marcus).
A very inspiring lecture on how to and how not to do user interfaces. His paper is worth reading. It is also available in UnixWorld August 1990.
Tcl and Tk: Programming System for X11 User Interfaces (John Ousterhout, Berkeley)
Nice work taking advantage of using the same language to do programming and data. By using text as data and programs, he can even access widgets of other applications and has tremendous power with little code. (When I'm in a bad mood I call it the C programmer's lisp; when I'm in a good mood I admire this work).
I had no chance to ask John about debugging or fire walls.
To subclass or not to subclass (Ralph R. Swick, Mark S. Ackerman, DEC and MIT)
They found a problem and rightfully complained. For my taste this talk was much too narrowly focused on the current Xt intrinsics. They basically require better documentation. The Cedar/Mesa toolkit does not share this particular problem due to different widget creation semantics.
Flyweight Objects in InterViews. (Mark Linton, Silicon Graphics)
Mark basically proposes to put the emphasis not on the creation of control panels and menu part, but on the actual graphics of the application. I think he is essentially right, and did good work. However, I think his example program with Chinese fonts was extremely counter-productive.
Customization - Rope for a Noose, or Lifeline for the Drowning? (Jim Gettys, DEC)
Jim pleaded for more customization. Jim's examples of when customization is useful and absolutely not anticipatable by the program authors, were quite convincing. It is a pity he failed to show when there is too much of a good thing.
Editres - A Graphical Resource Editor for X Toolkit Applications (Chris D. Peterson, MIT)
There is a real need for this kind of work. But I cannot help myself for not being excited. Maybe I'm too old-fashioned and like to see the firewall between programmers customizing an application, and users customizing the same application.
Multilingual X windows (Glenn Widener, Vania Joloboff; Tektronics, OSF)
As a talk it was quite good, but I prefer to make more general remarks.
My feel is that X windows is heading the wrong way here, but I am definitely not an expert. They are not providing enough of their own standards but rely on Ansi C locales. It looks to me as if they want to switch what language the computer is using, instead of enabling an application to use multiple languages simultaneously. (They do know better, but they don't know how).
I think some multilingual capabilities ought to be required of people speaking about multilingual computing; I think it would provide some additional perspective that might currently be missing for many native English speakers.
Porting a Sophisticated Graphics Application to the X Environment (Linda Gass, Jim Sandman, Adobe)
I don't remember what they said. (See Chris Kent's addition)
X Image Extension Applications (John Weber, DEC)
My personal feeling is that they are definitely on the wrong track. Too much actual functionality is required from the server. I'd prefer a window server act more like an arbiter of how different applications can cooperate using the same display.
Too bad, but I think we at Xerox ought to monitor this work. There is quite some overlap between the applications they want to base on this Image Extension, and our DocuWorld frenzy. Even (or specially?) if this work is not to my liking, it might influence the way we have to do business.
Three talks about PEX
PEX is a PHIGS standard for X windows. (For those who don't know PHIGS; this is a library to draw in 3D)
I'm not qualified to report on this, as I left some talks to prevent boredom. I then had a great discussion about Trexel with Mark Manasse in the hallway (Trexel is a window system from DEC SRC).
PEX has about 400 features. That's definitely more than fits my brain and I hope for something simpler.
Issues in a Visual Rich Environment (Jeff Weinstein, Silicon Graphics)
Not very inspiring. They seem to have the most capable display hardware but nevertheless have problems implementing the X protocol. BTW: Jeff used to implement an X server for the Dandylion as a CSL summer project intern under Neil Gunther.
Font servers (Jim Fulton, X consortium)
Jim Fulton gave a talk about font servers for X windows. While the current state might be considered poor by Xerox standards (e.g., no outline fonts yet; no rotations yet) I thought the basics made a robust and professional impression. I think they are on the right way, and that Jim did a good job.
The Font server is a server whose client is the X window server. The X window client will not see the Font server directly. Using the Font server will really allow applications to use X servers of different vendors, or X terminals with limited memory for fonts.
What the X consortium standardizes on is the protocol, and probably an example server. Some important problems are solved, at least partly. This Font server protocol will be able to deal with authentications. The need for an X server to deal with multiple font servers is already delt with (but maybe not optimal).
I consider tracking this work to be extremely important for Xerox. (But I am not volunteering myself). I also see three business opportunities.
1) We ought to be clients of font servers.
2) We might provide font servers.
3) We might use font servers to sell our fonts.
1) We ought to be clients of font servers.
X applications will need printing. X applications will use fonts available to X windows. These are exactly the fonts which will be available on those font servers. Our printers should be able to use those font servers if they do not have a own version of the fonts. Note: the fact that those servers might have no rotation won't hurt; X applications won't need it. (Do not expect these font servers to have tuned fonts; use this only if the fonts are not available in our own formats)
2) We might provide font servers.
As we know how to deal with outline fonts we have an edge in this technology. We might provide servers with more or better fonts then the consortium is. (e.g., tuning).
We might take advantage of storing fonts just once for both printing and display.
3) We might use font servers to provide our fonts.
Get people used to our fonts; they will then demand them on hard copy.
BTW: They would like somebody to donate them scan conversion code for outline fonts...
Implementing Drag-and-Drop in X11 (Stuart W. Marks, Sun)
The talk did more to scare me off than to show good work. This was wrong, as can be seen by reading about the meeting of the wmtalk group. I always have to remind myself that the thing wrong with Drag-and-Drop is not its implementation, but the fact that our user interface is different. X windows is supposed to implement mechanisms and not policy; but that is also true if somebody wants a mechanism for a policy I don't like too much.
Portable Electronic Notebook (Jim Rhyne, Doris Chow, Michael Sacks, IBM)
A must to read for CSL's ParcPad crew.
They did some minor X extension to deal with pens, and a separate overlay plane for inking pen moves directly in the server. Please ask for a copy of the paper if you are working on ParcPad or pens. (Others may ignore it, after acknowledging that it was a good talk).
Window System for Multimedia Applications (Hideya Ichihara, NTT)
I don't know whether the native English speakers understood him, but I didn't. He showed pictures of amazing hardware completely filling up the room. Nevertheless, the demos were zippy.
X and Audio: Oil and Vinegar (a DEC crowd)
Good common sense about separating services. They propose to make a different service for X and audio. Of course, a different service does not absolutely imply a different consortium.
A Synchronisation Extension for X (Tim Glauert, Olivetti)
Those of us who hoped for some insight into atomicity or transactional workings were disappointed. All he wanted was some way of synchronizing different applications, like sound and moving mouths in pictures.
On the good side: The proposed server extension is very small and easy to understand.
On the bad side: I think it won't work. Even when it works it is very easy to wedge the server.
The Widget Creation Library (David E. Smyth, JPL)
Looks like good work, but I'm bored about an other widget creation library.
Graphical Application Kits (Andrew Peebles, Mips)
I was too tired and headed out for hallway discussions.
Go: A graphical and interactive C++ toolkit. (Jacques Davy, Bull)
I was too tired to find out how it works. He uses a good extension language.
Hallway conversation with Keith Packard (X consortium)
- X11R5 will do bit blit double as fast as X11R4.
- In no way will they do my favorite extension to let me access the framebuffer directly.
- He desperately wants information about how to drive the Sun GX hardware. If somebody has this information available, would he please send it to him or to me. I think it should be in CSL's and Sun's best interest to get faster X window servers.
Birds of a feather session on OpenWindows
The speaker promised it would not be like a sales talk. He and I must have sat in different rooms.
They consider Display Postscript "interesting."
Birds of a feather session on Xt hints and kinks.
I was bored. My concerns about interoperability have been ignored.
Meeting Xerox folks
We had a meeting one evening.
Xerox was represented by folks from 5 different groups (If you consider Bill Janssen and me from the same group...).
I don't understand how the folks in SSU, which is making a server, can afford to miss sending somebody to the X conference.
My general impression was that those Xerox people attending would be more productive if they had a little bit more money, and that Xerox was saving at the wrong end.
Folks present
Jim Goldsmith   jgold:McLean CSD
Susan Blomenberg  sblom:Henr801E
Mitch Garnaat  Garnaat:Henr801C
Christian Jacobi   Jacobi:PARC
Aimee Pattison  Pattison:Henr801C
Nagesh Pabbisetty  Pabbisetty:Henr801C
Chris Kent   Kent:PARC
Bill Janssen    Janssen:PARC
Meeting of the wmtalk group (The day after the conference)
The wmtalk group is a discussion group within the X consortium, discussing issues like ICCCM.
Stuart Marks from Sun was leading that discussion. I was impressed by his professionalism.
There were lots of problems and the group did not have time to really settle any issue. Nevertheless Stuart Marks made sure that every issue got at least few minutes. The one big issue, Drag and Drop, was delayed till the afternoon. I'm sorry I had to leave early.
Very surprising to me was the large percentage of issues which have already actually occurred in Cedar/Mesa X software. I'm pleased, as many problems hitting us will get solved a reasonable way.
I got a chance to mention my favorite interoperability problem (A feature I thought to be useful for cheops). The group acknowledged the problem and asked me to follow up. I was told a similar problem occurs with input methods (Some feature to deal with multilingual input).
The weather
It was nice to see snow again. They don't remove it in Boston. Considered how little snow they had, the delays on the airport have been substantial.
The war
I sat during an evening glued to the television.
Chris Kent's additions
Mostly about Display Postcript

I attended the DPS BOF session. Adobe and MIT do disagree on whether or
not an implementation is needed. MIT would like to have a sample
implementation that it can give away with every "official" extension.
Adobe doesn't want to give their implementation away, for obvious
reasons. At last year's X conference, I had several talks with people
from Sun which left me expecting to see a DPS extension from them based
on the NeWS interpreter by this year, but it hasn't happened. It still
might, but the Sun people seem more cautious. Steve Evans of Sun, who
heads either the NeWS or window systems group (I've lost track) was
there, and seemed to be trying to find out how to achieve a common
ground and gain acceptance for both systems.

Adobe is trying to emphasize the programmer's interface (similar to the
Imager interface) over the PostScript language itself. Sun is pushing
on the fact that they have PostScript, but they continue to ignore the
programmer's interface -- you have to write PS programs and send them
to the server. Of course, neither provides serious debugging or
development help .. but I think they got the point that that is a problem.

Jim Sandman's talk was just on the border of being a marketing talk for
Illustrator and Display PostScript. He went through all the
capabilities of Illustrator, and then talked about how they implemented
it on X. He only talked a little about the actual implementation, and
said that using DPS saved them about 3 months of effort. I asked him
what he meant by that 3 months after the talk, and he said that he
could have ported the stripped down PS interpreter that's in Macintosh
Illustrator in about 3 months, but they would then lose the ability to
do generalized EPS file preview in illustrations.

I would add that there is a mailing list for X fontserver discussions,
and that we should be represented there.

Bill Janssen's additions
Tutorial on Solbourne's C++ Interface Toolkit called OI
OI is a nice set of classes from Solbourne that make up an X toolkit.
It has the interesting property of emulating completely either Open
Look, OpenLook-3D, or Motif. It knows all the proprietary protocols
that they speak. The appearance is selectable at run-time, so that a
commercial firm can ship one binary to all customers, regardless of
which look-and-feel they are using. Interesting tension in the class
design, between subclassing and callbacks. I was able to build a mildly
different widget by subclassing one of the existing widgets, during the
evening BOF, and it seemed reasonable clean and quick. The crew at
Solbourne are committed to tracking changes to both standards as they
evolve.

There is some unreasonably complicated code to deal with the
unreasonably complicated Xt standard resource and translation
mechanisms. I asked why they didn't just junk that, and they replied
that it was too much of a standard to ignore. Apparently the various
.Xresource and application default files work in the same way as they do
under Xt-based applications.

A window manager, swm, is provided with OI that can also present any of
the three appearances, but still speaks all the private protocols all
the time. This means that you can run both Motif and XView
applications, and the window manager will know how to speak to both of
them properly. The window manager also has built in desktops, which can
be larger than the physical screen. Probably the best commercial window
manager.

This toolkit is being sold by AT&T, current $10K for a source license.
Solbourne will start selling binary versions directly in February. My
opinion is that this is a very interesting bit of technology for any
parts of Xerox that are interested in doing work on X with C++. Contact
your local Solbourne and/or AT&T rep for pricing and delivery.

Andrew Toolkit BOF
This was a non-event, with about 8 attendees. I got into a long talk
with Dick Orgass at IBM and Tom Neuendorffer of the CMU ITC, about
putting ATK into Modula-3. Seems doable. Tom also tells me that Andy
Palay spent about 6 weeks fixing many of the problems with the Andrew
text widget, and that we'll be seeing these changes in about a month.
Drag'n'Drop Meeting
I too was impressed with how well Stuart Marks of Sun controlled this
meeting and brought order out of chaos.

This was a 5-hour session, trying to come up with a communication
protocol that would allow everyone to implement their favorite
drag'n'drop scheme. Some brain-dead proposals were dealt with summarily
(for example, IXI wanted to have the recipient of the drag receive a
note telling it what events initiated the drag, so it could decide what
to do. Upon someone pointing out that these events would have a
toolkit-specific meaning, everyone else decided that this was nonsense,
but we failed to convince the IXI rep.), others dragged on for quite
some time. Much of the time was spent in thinking of ways that drop
sites could register themselves in some way, so that they would not have
to be swapped into memory to highlight themselves as the dragged object
went over them. Rather, the draggee is in charge of doing all graphics
for highlighting of drag sites. This bogosity is because people are
running X on 286's with 2 MB of memory, and can't affort to swap another
client in to send it an event!

A summary of this will appear on the wmtalk list (visible at PARC in the
ATK bulletin board ext.X.wmtalk), along with the next round of proposals.

Meeting on X Consortium standard C++ toolkit for the X Window System
Mark Linton of Silicon Graphics chaired this meeting. The object of
this effort is to develop a 'next-generation' toolkit for X windows and
the C++ programming language. Bob Scheifler, the director of the X
Consortium, is strongly behind this work.

The notion is that the toolkit will be based on Interviews 3.0 (which is
still in beta test). Linton and Scheifler would like to address a
number of interestingly advanced issues with it, including threads,
garbage collection, structured multi-media documents, extension
languages, and multi-lingual support. Much of what they will actually
be able to accomplish will depend on what kind of people sign on to work
on this toolkit. The editor they are proposing to supply as a widget
sounds something like Tioga (levels, per-character attributes). Too bad
PARC isn't more interested in C++ work. Seems like a good way to get
advanced notions incorporated in an external toolkit which a lot of
people will use. SGI, H-P, and IBM seem to be the main contributors,
with DEC becoming more interested.

Release 5 of the MIT sample server
The big things for R5 of the MIT X server are going to be
device-independent color (using the TekCMS model), incorporation of the
MIT (really NCD) fontserver for loading fonts over the network (which
also uses the MIT Athena system Kerberos for authentication),
non-English capability, mainly on the input side, and the incorporation
of the Sample Implementation of the PHIGS extension to X (PEX), which
will provide a 3D rendering model in X. The PEX honchos seemed to think
that most people would use the immediate mode of PHIGS for rendering
only, handling events via the normal X event mechanism.

Keith Packard of the X Consortium staff (a reliable source) feels that
the R5 server is roughly twice as fast as the R4 server, with up to 15x
speedups in places. He'd *really* like to get some better description
of what's what on the Sun GX board so that it can run fast there, too.
Perhaps we could help there?

The alpha version of R5 will be shipped around Feb 15, with the beta
version scheduled for Apr 15, and the final version Jun 15. I will make
them available on a Xerox file-server if there is any demand.
end
########################
Date: 25-Jan-91 13:09:28 PST
Subject: X server performance
Message-ID: Originator: "TRamchandani:EL SEGUNDO:XEROX", UniqueString: "25-Jan-91 13:09:28 PST"
To: Jacobi:PARC
Cc: TRamchandani
From: TRamchandani:El Segundo:Xerox

Christian:

I am currently evaluating XWindow for possible inclusion in our Electronic Design Automation Tool set. I understand you might have some information on Xserver performance. I am particiularly interested in the impact on net especially when the net has both XNS and TCP/IP traffic.

Regards,
Tulsi
Manager, Tools Integration
ED / Design Automaiton
Xerox Corporation

InÿþWÿnet  8*823-7757
ÿþWÿ   (213)333-7757
ÿþxÿ  TRamchandani:ElSegundo:Xerox
ÿþxÿ  ESAE1-85
ÿþ”³Gÿ (FAX)   (213) 333-1034
ARPA   TRamchandani.ElSegundo@Xerox.Com
ÿþ—ÿ   PACIFIC TIME ZONE
ÿþ¼ÿ  El Segundo, A&E 2458
ÿþ‹ÿ  Secretary = Aida Rodriguez ® 8*823-7838 or (213)333-7838
ÿþGÿ  Lazar = Lazar:ES AE:XEROX
Date: Fri, 25 Jan 91 13:28:56 PST
From: Christian P Jacobi:PARC:Xerox
Subject: Re: X server performance
In-reply-to: Originator: "TRamchandani:EL SEGUNDO:XEROX", UniqueString: "25-Jan-91 13:09:28 PST"
To: TRamchandani:El Segundo
Cc: Jacobi
I do not have any real data like numbers, but some feelings.
I can tell that the net trafic depends very much on the applications.
A simple applications simply doing keystrokes and editing can easily be used over a slow phone line. Hitting a key causes the x server to send 32 bytes. Writing text requires the text to be transfered and an overhead of 16 bytes per command. No problem.
The other extreme is our Cedar Viewers application. It does graphics into a client bitmap and transfers the bitmap. Given the fact that most people use the server on the same machine and avoid the communications, the few which don't have never produced net problems. But it definitely doesn't work over slow phone lines.
I do not know what the tracking frequency for mousetracking events is, but I have never seen any problem yet.
I believe Electronic Design Automation to be an area where X windows is especially usefull, because some Design Automation tools are big and from independent vendors running on proprietary machines. X windows could provide the glue to handle such applications from a designers workstation... But that is your area, not mine anymore.
Ask me again if I can be of help.
Christian
########################
Date: Fri, 25 Jan 91 15:56:32 PST
From: Christian P Jacobi:PARC:Xerox
Subject: New X11, X11Viewers for PCedar2.0
To: PCedarUsers
Cc: Christian P Jacobi
New X11-Suite.df, X11Viewers-Suite.df
Long list of small changes
-Bug fix in X11.EnumerateFonts (used to terminate most font names with a null char).
-Added procedure X11Extras.ListFontsWithInfo.
-Added special close down mode of X11Viewers for boardwalk (liveboard).
-X11Widgets.ShellWidgets by default explicitely request window manager to open the window.
-Bug fix: Double buffering switched on again.
-New X11FontCommandsImpl program (load it separately on need) with commands:
X11ListFontsWithInfo, X11EnumerateFonts, X11GetFontPath, X11ListExtensions, X11ServerInfo
-Uses the new (3.4) PCR's method to cleanup shared memory identifiers.
-Changed cut of labels and paste to fields to work with secondary keysyms. This change was necessary so I could make key mapping which works for both, Cedar-Labels and sun openwindow tools. (Now sun is cheating and Cedar is clever)
-New .xmodmaprc file which does the Cedar keys compatible for sun's openwindow. (Neither an interoperability or cedar problem; sun tools simply didn't work with the old .xmodmaprc aimed at Cedar.)
Christian
########################
Date: Mon, 04 Mar 91 11:39:48 PST
From: Christian P Jacobi:PARC:Xerox
Subject: ScreenSpy for PCedar2.0
To: PCedarUsers^
Cc: Christian P Jacobi
Reply-to: Christian P Jacobi:PARC:Xerox
ScreenSpy
DF files: [PCedar2.0]<Top>ScreenSpy-Suite.df
Documentation: [PCedar2.0]<Documentation>ScreenSpyDoc.tioga
Maintainer: Not maintained.
New package
Summary
This is a little hack and could needs lots of improvement. I made it more out of fun then to make a real thing. Allows to watch the screen of a Cedar X11Viewers world from a different machine.
Start up command
ScreenSpy host
Accesses screen of world from host.
This package is not maintained. Reason: I doubt whether it will survive the comeing unification of X11Viewers and TViewers. If that step would be taken I don't see further problems about maintenance.