[comp.windows.x] X FIPS announcement

kuhn@SWE.NCSL.NIST.GOV (Kuhn) (05/04/90)

The Federal Information Processing Standard (FIPS) for user interface systems
was approved by the Secretary of Commerce on May 1.  It will be
published in the Federal Register as FIPS 158.  The text is given below.

Briefly, the FIPS adopts X11 Release 3 X protocol, Xlib, Xt, and bitmap 
distribution format as a non-compulsory standard for use by Federal 
agencies.  Release 3 was specified rather than Release 4 because Release 3 
based products are much more widely available.  NIST anticipates updating the 
standard as appropriate.  


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

+1 301/975-3337
+1 301/590-0932 - FAX

DDN:    kuhn@swe.ncsl.nist.gov  
        kuhn@hook.ncsl.nist.gov  
        DRKuhn@dockmaster.ncsc.mil


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

 
 
                  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-39, Acquisition of Federal Information Processing Resources by
Contracting.
    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.  This FIPS is not intended to specify a
government-wide appearance or "look and feel", but to enable agencies to
develop interfaces with a consistent appearance and behavior.  Individual
government organizations should determine their own policies in this area.

Government-wide attainment of the above
objectives depends upon the widespread availability and use of
comprehensive and precise standard specifications. 
  
Applicability.  This FIPS should be considered 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.


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 [1] 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.

The X Window System Version 11, Release 4 has not been
specified because there will be a significant time lag before products are
available based upon Release 4.  To specify release 4 at this time 
would severely limit product availability and
reduce competition.  However, Release 4 will be upwardly compatible with
Release 3.  It is the intention of NIST to revise this FIPS as appropriate.

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.  

It is
customary to develop applications using toolkit interfaces that are 
at a higher level than the interfaces covered by this FIPS (see Reference
Model in the Appendix).  
The interfaces specified in this FIPS are not intended to be a complete
solution for application user interface development, but rather to provide
a foundation on which other layers will be added as consensus emerges
within the industry.
The interfaces specified in this FIPS represent the consensus of the
industry for lower-level X Window System interfaces.  
Agencies that seek to ensure portability and to reduce conversion costs are
advised to acquire systems that support the interfaces specified in this
FIPS, as a future toolkit standard is expected to be based on these
interfaces.
Agencies should develop migration strategies to ease the transition from
proprietary systems to an open systems environment.
The complexity of the migration towards open systems depends largely upon
the extent to which proprietary interfaces are used.
When portions of an application must be developed using proprietary 
interfaces, portability may be reduced.
Developers should be aware that the source code for a
toolkit may be freely available.  If the source
code is available, then it should be ported along with the application to
another system that supports components at lower layers of the reference
model.
  

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.  

National and international standards organizations may develop
standards for components of this FIPS.  In particular, ANSI
X3H3.6 is preparing a standard for the X Protocol, and IEEE
P1201 has initiated an effort to develop a standard for Xlib.
It is desirable to have only a single standard for each component.
Therefore, it is the intention of NIST to reference such standards as
appropriate in a revision of this FIPS.

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             |                 | UIDL, UIMS 
--------------------------                 |
4:  Presentation         |                 | UIDL, 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
C programs for 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 synchronization. 
 
 




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 initialization 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 Definition Language (UIDL) 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.
 
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.  The application may call routines at the Toolkit, Subroutine
Foundation, or Data Stream Interface levels as well, but portability may be
reduced.




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 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.