[comp.windows.x] X FIPS Text

kuhn@SWE.NCSL.NIST.GOV (Kuhn) (08/30/89)

This is the text of NIST's proposed Federal Information Processing Standard
based on X.  There's a lot of official boilerplate and legalese here, but
the FIPS can be summarized very easily:  it adopts the X Consortium
specifications for X11 release 3 for X protocol, Xlib, Xt, and bitmap
distribution format as a Federal Information Processing Standard.  NIST based
it on release 3 to get the process going; we intend to substitute release 4
before the FIPS becomes official.  I've also included some questions and my
answers that appeared on xpert and unix-stds.  These should be helpful
since I know that many people aren't familiar with the standards process
and NIST's role in that process.

Please contact me if you have any questions on the meaning or requirements
of the FIPS.  Official responses should be sent to the director of
NCSL/NIST at the address given in the FIPS, not to me.


Rick Kuhn
Technology Bldg.  B266
National Institute of Standards and Technology
(formerly National Bureau of Standards)
Gaithersburg, Md.  20899

301/975-3337

DDN:	kuhn@swe.ncsl.nist.gov  
UUCP:	attunix!swe!kuhn
 
------------------------------------------------------------------------------- 
                   FEDERAL INFORMATION 
            PROCESSING STANDARDS PUBLICATION  
  
  
              Announcing the Standard for  
 
			The User Interface Component of the

 			  Applications Portability Profile
 
Federal Information Processing Standards Publications (FIPS PUBS)
are issued by the National Institute of Standards and Technology
after approval by the Secretary of Commerce pursuant to Section
111(d) of the Federal Property and Administrative Services Act of
1949 as amended by the Computer Security Act of 1987, Public Law
100-235. 
   
Name of Standard.  The User Interface Component of the
Applications Portability Profile.
  
Category of Standard.  Software Standard, Application Program
Interface.
  
Explanation.  This publication announces the adoption of the X
Protocol, Xlib Interface, Xt Intrinsics and Bitmap Distribution
Format specifications of the X Window System, Version 11, Release
3 (X Window System is a trademark of the Massachusetts Institute
of Technology (MIT)) as a Federal Information Processing
Standard. This standard is for use by computing professionals
involved in system and application software development and
implementation.  This standard is part of a series of
specifications needed for application portability.  The Appendix
to this standard contains a reference model for network-based
bit-mapped graphic user interface standards.  This standard
covers the Data Stream Encoding, Data Stream Interface, and
Subroutine Foundation layers of the reference model.  It is the
intention of NIST to provide standards for other layers of the
reference model as consensus develops within industry.  This
standard addresses the user interface functional area of the
Applications Portability Profile that was announced in FIPS 151,
POSIX: Portable Operating System Interface for Computer
Environments.   
 
Approving Authority.  Secretary of Commerce.  
  
Maintenance Agency.   U.S. Department of Commerce, National
Institute of Standards and Technology (NIST), National Computer
Systems Laboratory.
 
Cross Index.  The X Window System, Version 11, Release 3.  

Related Documents.  
	a. Federal Information Resources Management Regulation
201-8.1,Federal ADP and Telecommunications Standards. 
	b. Draft Proposed American National Standard X3J11/87-
140,"Programming Language C".   
 	c. FIPS 151, POSIX:  Portable Operating System Interface for
Computer Environments.

Objectives.   This FIPS permits Federal departments and agencies
to exercise more effective control over the production,
management, and use of the Government's information resources.
The primary objectives of this FIPS are: 
	a. To promote portability of computer application programs
at the source code level.  
	b. To simplify computer program documentation by the use of
a standard portable system interface design.  
	c. To reduce staff hours in porting computer programs to
different vendor systems and architectures.  
	d. To increase portability of acquired skills, resulting in
reduced personnel training costs.  
	e. To maximize the return on investment in generating or
purchasing computer programs by insuring operating system
compatibility.  
	f. To provide ease of use in computer systems through
network-based bit-mapped graphic user interfaces with a
consistent appearance. Government-wide attainment of the above
objectives depends upon the widespread availability and use of
comprehensive and precise standard specifications. 
  
Applicability.  This FIPS shall be used for network-based bit-
mapped graphic systems that are either developed or acquired for
government use where distributed/networked bit-mapped graphic
interfaces to multi-user computer systems are required.  


Specifications.  The specifications for this FIPS are the
following documents from the X Window System, Version 11, Release
3.  These specifications define a C language source code level
interface to a network-based bit-mapped graphic system.  The
computer program source code contained in Version 11, Release 3
is not part of the specifications for this FIPS.  The
specifications for this FIPS are the following documents from X
Version 11, Release 3:
	a. X Window System Protocol, X Version 11,
	b. Xlib - C language X Interface,
	c. X Toolkit Intrinsics - C Language Interface,
	d. Bitmap Distribution Format 2.1.

Implementation.  This standard is effective (6 months after date
of publication in the Federal Register).  The other elements
identified in the Appendix should be considered in planning for
future procurements. 
 
	a.  Acquisition of a Conforming System.  Organizations
developing network-based bit-mapped graphic system applications
which are to be acquired for Federal use after the effective date
of this standard and which have applications portability as a
requirement should consider the use of this FIPS.  Conformance to
this FIPS should be considered whether the network-based bit-
mapped graphic system applications are: 
		1. developed internally,  
		2. acquired as part of an ADP system procurement,  
		3. acquired by separate procurement,  
		4. used under an ADP leasing arrangement, or 
		5. specified for use in contracts for programming
services.  
  
	b.  Interpretation of the FIPS for the User Interface
Component of the Applications Portability Profile.    NIST
provides for the resolution of questions regarding the FIPS
specifications and requirements, and issues official
interpretations as needed.  All questions about the
interpretation of this FIPS should be addressed to: 
	Director 
National Computer Systems Laboratory
Attn: APP User Interface Component FIPS
Interpretation 
National Institute of Standards and Technology 
Gaithersburg, MD 20899 
 

	c.  Validation of Conforming Systems.    The X Testing
Consortium has developed a validation suite for measuring
conformance to this standard.  NIST is considering the use of the
X Testing Consortium validation suite as the basis for an NIST
validation suite for measuring conformance to this standard.

Waivers.  Under certain exceptional circumstances, the heads of
Federal departments and agencies may approve waivers to Federal
Information Processing Standards (FIPS).  The head of such 
agency may redelegate such authority only to a senior official
designated pursuant to section 3506(b) of Title 44, U.S. Code. 
Waivers shall be granted only when:
	a.  Compliance with a standard would adversely affect the
accomplishment of the mission of an operator of a Federal
computer system, or
	b.  Cause a major adverse financial impact on the operator
which is not offset by Government wide savings.

Agency heads may act upon a written waiver request containing the
information detailed above.  Agency heads may also act without a
written waiver request when they determine that conditions for
meeting the standard cannot be met.  Agency heads may approve
waivers only by a written decision which explains the basis on
which the agency head made the required finding(s).  A copy of
each such decision, with procurement sensitive or classified
portions clearly identified, shall be sent to:  National
Institute of Standards and Technology; ATTN:  FIPS Waiver
Decisions, Technology Building, Room B-154; Gaithersburg, MD
20899.  

In addition, notice of each waiver granted and each delegation 
of authority to approve waivers shall be sent promptly to the
Committee on Government Operations of the House of
Representatives and the Committee on Governmental Affairs of the
Senate and shall be published promptly in the Federal Register.

When the determination on a waiver applies to the procurement of
equipment and/or services, a notice of the waiver determination
must be published in the Commerce Business Daily as a part of the
notice of solicitation for offers of an acquisition or, if the
waiver determination is made after that notice is published, by
amendment to such notice.

A copy of the waiver, any supporting documents, the document
approving the waiver and any supporting and accompanying
documents, with such deletions as the agency is authorized and
decides to make under 5 U.S.C. Sec. 552(b), shall be part of the
procurement documentation and retained by the agency.

Where to Obtain Copies:  Copies of this publication are for sale
by the National Technical Information Service, U.S. Department of
Commerce, Springfield, VA 22161.  (Sale of the included
specifications document is by arrangement with the Massachusetts
Institute of Technology and Digital Equipment Corporation.)  When
ordering, refer to Federal Information Processing Standards
Publication ____ (FIPSPUB____), and title.  Payment may be made
by check, money order, or deposit account. 



APPENDIX

The FIPS for User Interface is part of a series of FIPS for the
Applications Portability Profile (APP), first announced in FIPS
151 (POSIX).  The functional components of the APP constitute a
"toolbox" of standard elements that can be used to develop and
maintain portable applications.  The APP is an open systems
architecture based upon non-proprietary standards.  

One of the most neglected aspects of applications software
portability is the requirement to maintain a consistent user
interface across all systems on which the application resides.
The FIPS for User Interface is the first step in responding to a
critical need within the Federal community for a set of tools to
develop standard user interfaces.  It is the first in a series
which we intend to adopt as user interface technology progresses
and consensus emerges.  

This initial FIPS is based upon the X Window System developed by
the Massachusetts Institute of Technology (MIT) X Consortium. 
The X Window System assumes a client/server model of distributed
computing, and user interface applications based upon bit-mapped
graphic displays.  With this system, software vendors can develop
applications that incorporate such interfaces without being
concerned about the underlying display hardware on which the
application runs.  In addition, the application need not be
resident on the same computer system as the one to which the
user's display is attached.

This FIPS is not intended to specify a government-wide style or
"look and feel", nor is it intended as a specification of a
general programming interface for graphics applications.  It is
intended to lay a foundation for standards that will help Federal
agencies develop and acquire network-based, bit-mapped graphic
user interface applications.  

The X Window System program services and interface specifications
adopted by this FIPS provide the foundation for a set of vendor
independent building blocks that can be used to develop user
interface applications.  These specifications, however, must be
extended to provide the additional program services and interface
specifications for user interface applications.  These additional
specifications will be based on the NIST User Interface reference
model shown in Figure 1.  

The NIST User Interface reference model is a layered model which
defines the program services and interfaces required for
network-based, bit-mapped graphic user interface applications.
This FIPS covers the Data Stream Encoding, Data Stream Interface,
and Subroutine Foundation layers of the framework.  These layers
provide a foundation upon which standard components for higher
layers of the framework may be built. NIST User Interface Reference Model 
 
 
  Model Layer                                System Component 
-----------------------------------------------------------------
6:  Application         		             | Application 
-------------------------------------------| 
5:  Dialogue		     |                 | UIL, UIMS 
--------------------------                 |
4:  Presentation         |                 | UIL, UIMS
--------------------------------           |
3:  Toolkit                    |           | Toolkit 
--------------------------------------     |
2:  Subroutine Foundation            |     | Xt Intrinsics 
-------------------------------------------| 
1:  Data Stream Interface                  | Xlib
-------------------------------------------| 
0:  Data Stream Encoding                   | X Protocol 
-----------------------------------------------------------------

 
                        FIGURE 1. 




Layer 0:  Data Stream Encoding 
 
Data Stream Encoding defines the format and sequencing of byte
streams passed between client and server.  In the X Window
System, the Data Stream Encoding is the X "wire" or "network"
protocol.  As a specification of message formats, the Data Stream
Encoding is independent of operating system, programming
language, or network communication. 


Layer 1:  Data Stream Interface 
 
The Data Stream Interface specifies a function call interface to
build the messages defined in the Data Stream Encoding layer.  In
X, this interface is the Xlib function library. The Data Stream
Interface converts parameters passed from a program into the bit
stream that is transmitted over the network, and converts
messages from the server into values passed to the program. The
Data Stream Interface provides access to basic graphic functions
from Layer 0, and may support system functions such as error
handling and syncronization. 
 
 




Layer 2:  Subroutine Foundation 
 
The Subroutine Foundation uses features of the Data Stream
Interface to provide the means to build components of window
interfaces such as scroll bars.  Functions often provided by the
Subroutine Foundation include initializationa and destruction of
objects, management of events and object hierarchy, and the
saving and restoration of interface state.  The Subroutine
Foundation can be thought of as a toolkit with which to build
toolkits. The X Window System's Xt Intrinsics set is a Subroutine
Foundation for X. 
 
 
Layer 3:  Toolkit 
 
Components such as menus, pushbuttons, scroll bars, or help boxes
can be used to build an application interface.  These
"prefabricated" components make up the Toolkit.  The components
of Toolkits vary with vendors, but they typically contain most of
the common user interface elements. 
 
 
Layer 4:  Presentation
 
The Presentation layer determines the appearance of the user
interface, including aspects such as size, style, and color.  It
specifies how the components in the Toolkit should be composed to
create windows.  The appearance may be specified using a User
Interface Language (UIL) and may be enforced by a window manager,
which controls the size and location of windows, and decorates
windows in the style specified by the user.  For example, an
application program will provide text for a title bar, but the
window manager determines the appearance of the title bar. 
 
Layer 5:  Dialogue
 
The Dialogue layer coordinates the interaction between the
computer system and the user. It can be thought of as a mediator
between the user and the application program.   Communication
between user and application program is through the Dialogue
layer, which may be implemented by a User Interface Management
System (UIMS).  The user/application interaction is specified by
a "dialogue" that associates user actions, such as clicking on a
menu item, with application actions.  Some UIMS tools can accept
a dialogue and a presentation style from which to generate an
instance of the UIMS that controls the interaction between user
and application.
 
 



Layer 6:  Application 
 
The application program implements the functions required by the
user.  Its interaction with the user is through the Dialogue
layer.  




PLANS

The FIPS for User Interface is an integral component of the APP.
As with other components of the APP, the specifications adopted
by this FIPS are expected to evolve as the technology matures, as
additional experience using the technology is gained, and as
consensus broadens in the national and international standards
arena.  NIST has established a process to ensure that the FIPS
will evolve in a manner that serves the interests of both users
who employ these specifications to acquire products and vendors
who use them to build products. 

Both users and vendors are included in this process through an
ongoing series of APP User Workshops and APP Implementor
Workshops.  The user workshops provide information on the
evolving definition of the User Interface Component as well as
other APP specifications.  They also serve as a forum for users
to identify user priorities and to provide input and feedback. 
The implementor workshops provide a forum for vendors to discuss
the APP specifications and to provide feedback on the technical
merits of the NIST proposals.  The implementor workshops are
designed to ensure that there is consensus on the part of the
vendors to building products to the evolving APP specifications. 
 

[1] Scheifler, R.W., and J. Gettys, "The X Window System,"  ACM
Transactions on Graphics, Vol. 5, No. 2, April, 1986. 


===============================================================================

These are some questions about the FIPS that appeared on the xpert and
unix-stds mailing lists.

-------------------------------------------------------------------------------

Vern Staats posted some questions concerning the proposed NIST FIPS on the
X Window System.  I know that others have the same concerns.  We at
NIST tried to take these concerns into account in preparing the FIPS
proposal.  I'd like to respond to  the questions on behalf of NIST.

Rick Kuhn
Technology Bldg.  B266
National Institute of Standards and Technology
(formerly National Bureau of Standards)
Gaithersburg, Md.  20899

301/975-3337

DDN:	kuhn@swe.ncsl.nist.gov  
        DRKuhn@dockmaster.ncsc.mil
UUCP:	attunix!swe!kuhn


> From: staatsvr@m11.sews.wpafb.af.mil (Vern Staats)
> 
> I see that NIST is planning to adopt the X wire protocol, Xlib, and the 
> Xt intrinsics as a FIPS PUB, for "network-based bit-mapped graphic system
> applications acquired or internally developed for Federal use, which have 
> applications portability as a concern."  That's not a direct quote, but
> it's pretty close.
> 
> Please note that the focus is on applications portability.  They specifically
> state that this FIPS is not intended to specify a government-wide style or
> "look & feel".
> 
> If adopted, most applications which fall into the above category would have
> to be based on Xlib and the Xt intrinsics.  While this initially struck me 
> as a good thing, I do have some questions about including the intrinsics.
> Any answers/feedback/opinions would be greatly appreciated.
> 
> 1)  They are specifying X11R3.  Shouldn't they really spec R4?

Yes, but at the time the proposed FIPS was prepared, R3 was the current 
release.  R4 should be the official X Consortium standard by the end of this 
year.  The FIPS approval process will probably take until the end of the year 
as well, so we can substitute R4 before the FIPS becomes official.  
Furthermore,  NIST would like to keep the FIPS consistent with X Consortium 
specs in the future.


> 2)  Do the benefits of standardization outweigh losing Andrew, Interviews, 
>     (and others, I'm sure) applications which are not based on the intrinsics? 
As with all NIST standards, if this FIPS does not meet the needs of an
agency, the agency is free to choose other technology.  So non X-based
solutions would not be lost to developers who need them.


> 3)  It seems to me that for true application portability, you would need to
>     either stay with Xlib, or standardize all the way up to the widget level.
>     Creating a standard foundation for widget sets is all well and good, but
>     the application may not be portable if you don't have the right widgets.
>     Perhaps they should state that applications not be based on proprietary
>     widget sets.

Currently there are no widget standards, from the X Consortium or anyone
else.  IEEE P1201 is working toward a standard for an X based toolkit, and
NIST is participating in this effort.  In fact, P1201 will base its work on
the FIPS.

> 4)  Is ICCCM compliance important to application portability?

Yes, NIST will consider inclusion of ICCCM in an update of the FIPS.


> 5)  There seem to be a few differences between the X Consortium intrinsics 
>     and those provided by DEC.  I assume other vendors have "enhanced" their
>     intrinsics as well to provide extensions, better performance, etc.  The
>     departures from the Consortium's intrinsics do not appear to have had
>     much impact on applications portability; I can't recall seeing any
>     questions on comp.windows.x regarding problems arising from differing
>     intrinsics.  Am I correct in assuming that most vendors will have little
>     difficulty producing compliant applications, even if they normally use
>     extended intrinsics?

All vendors have extended the Intrinsics.  One of the reasons for the
development of R4 and R4+ is to make the Intrinsics more complete as a
basis for toolkit development.   NIST intends to update the FIPS to the 
X Consortium specs as they are completed.  Vendors who follow the X 
Consortium standards will be updating their applications as well.  The X
Consortium is committed to making the next version of the Intrinsics source
code compatible with R3.


> 6)  I've heard that the X Consortium and X/Open are both opposed to 
>     standardizing on the Intrinsics at R3 and even at R4.  Is this true?

No, it isn't, with respect to the Federal government standardizing on R3
intrinsics.  Bob Scheifler, director of the X Consortium, has expressed
his support for adoption of R3 as a FIPS.  X/Open has taken no position on
the adoption of R3 as a FIPS.


-------------------------------------------------------------------------------



Correction of a typo in my previous posting:  In the answer to question 2, 
please substitute "Xt" for "X":

>> 2)  Do the benefits of standardization outweigh losing Andrew, Interviews, 
>>   (and others, I'm sure) applications which are not based on the intrinsics 

>As with all NIST standards, if this FIPS does not meet the needs of an
>agency, the agency is free to choose other technology.  So non X-based
>solutions would not be lost to developers who need them.



I'd also like to add to the explanation of what is and is not required by the 
FIPS.   It does not require agencies to write applications that call only
Xt and Xlib.  It does not prohibit vendors from supplying extensions.
At this time there is clearly a need to use both toolkit functions and 
extensions in applications.  The intent of the FIPS is to promote application 
portability at the source code level.  We can do this to some extent now by
establishing a common base.  It will be possible to a much greater extent
when IEEE P1201 completes its standard toolkit API.  At that point it will
be possible to develop many useful applications using only standard
interfaces, but even then some applications will require the use of
proprietary extensions or entirely non-standard systems.  This is
inevitable, and it would be silly to attempt to prohibit it.  Allowing the
use of extensions and non-standard systems, when necessary, also helps to
ensure that standards do not limit innovation.


Rick Kuhn

-------------------------------------------------------------------------------

Although this question was not on xpert, it comes up frequently:  

> If an application includes a toolkit that is based on Xlib but not on Xt, is 
> it compliant?


It is compliant if the source code is available.  The FIPS is intended
to provide applications portability, so if the source code for the toolkit
is available it can be ported along with the application to another system 
that supports Xlib.  Note that this assumes that the toolkit is not
dependent on any proprietary extensions to Xlib or on proprietary operating 
system functions.