Introduction
Many names have been applied to the work that has culminated in the Single UNIX
Specification and its attendant X/Open UNIX brand. It began as the Common API
Specification, became Spec 1170, and is now the Single UNIX Specification published in a
number of X/Open Common Applications Environment (CAE) volumes.
This paper briefly describes the history of Spec 1170, and its journey to becoming the
Single UNIX Specification, along with the organization of that specification.
History
Previously the UNIX operating system has been a product with four elements (Figure 1); the
specification (e.g. SVID) , the technology (e.g. SVR4), the registered trade mark (UNIX),
and the product (e.g. UNIXWare).
Figure 1
With the Single UNIX Specification, there is now a single, open, consensus specification
that defines a product. There is also a mark, or brand, that is used to identify those
products that conform to the Single UNIX specification. Both the specification and the
trade mark are now managed and held in trust for the industry by X/Open Company.
There will be many competing products, all implemented against the Single UNIX
Specification, ensuring competition and vendor choice. There will be a limited number of
technology suppliers, which vendors can license and build there own product, all of them
implementing the Single UNIX Specification. . Buyers can expect each of these products to
carry the X/open UNIX brand as an guarantee of conformance to the specification and that
the vendor stands behind a quality product.
UNIX is now no longer just the operating system product from AT&T (later, Novell),
documented by the System V Interface Definition (SVID), controlled and licensed from a
single point. Neither is it a collection of slightly different products from different
vendors, each extended in slightly different ways. The UNIX specification has been
separated from its licensed source-code product, and "UNIX'' has become a single
stable specification to be used to develop portable applications that run on systems
conforming to the Single UNIX Specification
Structure and Contents
The Single UNIX Specification is a collection of documents that are part of the X/Open
Common Applications Environment (CAE), and include:
A UNIX 95 branded product is built from a number of components (in X/Open language) and
includes:
The Single UNIX Specification is supported by the X/Open UNIX brand, which in turn is
supported by a verification program. The X/Open brand provides the guarantee that products
adhere to the relevant X/Open specification. Systems that provide the Single UNIX
Specification interfaces can be X/Open UNIX branded as proof to the marketplace. The
Single UNIX Specification is the programmer's reference to the portability environment
provided on X/Open UNIX branded systems.
It is important for application developers to realize that in committing to the brand, the
vendor is obligating themselves to conform. X/Open conformance verification suites are
vendors' ways of measuring their implementation against the specification, providing a
guarantee that they have implemented the specification correctly.
And the X/Open brand commitment goes even deeper than this. It is a promise by the vendor
to conform to the specification, not to the test suite. If a user of a branded system
discovers an interface that does not behave according to the specification, regardless of
whether or not a test case in the verification suite passed in this area, the vendor is
obliged to correct the defect within explicit time frames.
The base is now in place to better support portable applications development by:
The Spec 1170 Initiative
The Common API Specification project started when several vendors (Sun Microsystems, IBM,
Hewlett-Packard, Novell/USL and OSF) organized together to provide a single unified
specification of the UNIX system services. By implementing a single common definition of
the UNIX system services, third-party independent software vendors (ISVs) would be able to
more easily deliver strategic applications on all of these vendors' platforms at once.
The focus of this initiative was to deliver the core application interfaces used by
current programs. The economic driver that initiated the project was to ease the porting
of existing successful applications. While the work was led by a central group of vendors,
it received widespread support within the industry.
Platform Vendors Supporting the Single UNIX
Specification: 1
Acer; Amdahl; Apple; AT&T GIS; Bull; Convex; Cray; Data General; Compaq; Encore; 88
Open; Fuji Xerox; Fujitsu Ossi; Hal; Hewlett-Packard; Hitachi; IBM; ICL; Matsushita; Mips
ABI; Mitsubishi; Motorola; NEC; Novell/USL; Oki; Olivetti; OSF; PowerOpen; Precision RISC;
Pyramid; SCO; Sequent; Sequoia; Sharp; Siemens-Nixdorf; Silicon Graphics; Sony; Sparc
International; Stratus; Sun Microsystems; Tadpole; Tandem;
Thompson/Cetia; Toshiba; Unisys; Wang Labs.
ISVs and User Organizations Supporting the Common API
Specification:
AutoDesk; Banyan; Bellcore; Bentley; Cadence; Cadre; Chorus; Computer Associates; DHL; EDS
Unigraphics; Frame Tech; Informix; Island Software; Lachman Tech; Locus; Lotus;
McDonald's; Mentor; Oracle; Pencom Systems; SDRC; Software AG; Shell Oil; Veritas;
Wal-Mart; WordPerfect.
A two-pronged approach was used to develop the Common API Specification. First, a set of
formal industry specifications was chosen to form the overall base for the work. This
would provide stability, vendor neutrality, and lay a well charted course for future
application development, taking advantage of the careful work that has gone into
developing these specifications. It would also preserve the portability of existing
applications already developed to these core models.
X/Open Company's XPG4 Base was chosen as the stable functional base from which to start.
XPG4 Base supports the POSIX.1 system interface and the ANSI/ISO C standards at its core.
It provides a rich set of 174 commands and utilities.
Many UNIX systems already conform to this specification. To this base was added the
traditional UNIX System V Interface Definition, (SVID) Edition 3, Level 1 calls, and the
OSF Application Environment Specification Full Use interface definitions. This represented
the stable central core of the latter two specifications.
The second part of the approach was to incorporate interfaces that are acknowledged common
practice but have not yet been incorporated into any formal specification or standard. The
intent was to ensure existing applications running on UNIX systems would port with
relative ease to a platform supporting the Common API Specification. A survey of real
world applications was used to determine what additional interfaces would be required in
the specification.
Fifty successful application packages were chosen to be analyzed using the following
criteria:
From the group of fifty, the top ten were selected carefully, ensuring that no more
than two representative application packages in a particular problem space were chosen.
The ten chosen applications were:
AutoCAD; Cadence; FrameMaker; Informix; Island Write/Paint; Lotus 1-2-3; SAS (4GL);
Sybase; Teamwork; WordPerfect
APIs used by the applications that were not part of the base specifications were analyzed:
The goal was to ensure that APIs in common use were included, even if they were not in
the formal specifications that made up the base. Making the Common API Specification a
superset of existing base specifications ensured any existing applications should work
unmodified. The sponsors of the work considered pruning the Common API Specification of
interfaces from the base specifications that were not found to be in common use in the
application survey.
This idea was rejected for two reasons. While some of the interfaces in the base
specifications are not yet considered common practice, their inclusion in the overall
specification meant there existed clear sign-posts for future applications development
work. As well, it was recognized that the applications chosen for the survey were still
only a representative sample, and that many other applications not surveyed may use these
interfaces.
When the survey was complete, there were 130 interfaces that did not already appear in the
base specification. These interfaces seem to be predominantly Berkeley UNIX calls that had
never been covered in XPG4 Base, the SVID, or the AES, but did represent common practice
in UNIX system applications developed originally on BSD-derived platforms. Such things as
sockets and the 4.3BSD memory management calls were commonly used in many applications.
The resulting Common API Specification was impressive in its coverage. The top ten
applications surveyed were completely covered. Of the remaining 40 application packages,
the next 25 were within 5% of complete coverage. The software vendors involved all
acknowledged that it would be fairly straightforward for them to modify the 5% of the
application to conform fully to the specification.
There were 1170 interfaces in the complete specification when the work was done (926
programming interfaces, 70 headers, 174 commands and utilities), and the name of Spec 1170
was born.
Because of the breadth and origins of the specification, duplication of functionality
existed. There were similar interfaces for doing the same thing in such areas as memory
management (bcopy versus memmove) and creating temporary filenames (tmpnam versus mktemp).
This duplication was allowed as it would increase the number of existing applications that
would be portable in the new model. At the same time, certain functions have been
identified as the recommended practice for future development. There are cases where the
duplicated functionality cannot co-exist in the same application (for example, conflicting
signals models), and it is important to ensure that the is correctly configured if the
expected behavior is to be observed.
In December 1993, Spec 1170 was delivered to X/Open for fast-track processing into a
proper industry supported specification. This work progressed through 1994 and culminated
in the publication of the Spec 1170 work as the Single UNIX Specification in October 1994.
There are now more than 1170 interfaces in the specification as the review process shaped
the document accordingly. (The new internationalized curses specification contributed a
large number of interfaces.)
The Single UNIX Specification documents are part of the X/Open CAE (Common Applications
Environment) document set.
The Single UNIX Specification
Five X/Open CAE documents make up the Single UNIX Specification. These are:
The System Interfaces and Headers (XSH)
System Interfaces and Headers specification contains the base interfaces and several
"feature" groups. Interfaces that are part of a feature group have a feature
group specific label that appears in the header of the interface's reference page.
XSH (System Interfaces and Headers) contains the following feature groups:
XPG4 Base did not require all of the feature groups for conforming implementations.
Only the base interfaces were mandatory. To conform to Single UNIX Specification, an
implementation will need to support all of the feature groups with the exception of the
encryption interfaces. (There are U.S. government export restrictions on this technology
that may disallow some vendors from shipping it.)
The Commands and Utilities (XCU) specification describes all of the utilities required in
the environment. Some of these utilities do not need to be present, being contained in
``packages'' that need not be implemented.
The only real effect that the Single UNIX Specification had on the XCU
(Commands and Utilities) document from Issue 4, was to modify the cc and c89 C compiler
commands.
A programmer developing applications on an Single UNIX Specification system has at their
disposal all of the functions, commands and utilities described in the Single UNIX
Specification document set. This functional superset of consensus-based specifications and
historical practice also creates a straightforward environment for porting existing
applications running on UNIX systems.
Products that implement Single UNIX Specification and qualify for the X/Open UNIX brand
will compile and run applications built or ported according to this model.
***Edited from " Go Solo -
How to Implement and Utilize the Single UNIX Specification"; published by X/Open
and Prentice Hall PTR.
Information about this, and other X/Open publications may be obtained from any X/Open
office or by sending e-mail to: XoPubs@xopen.org
X/Open is a registered trade mark, and the "X" device is a trade mark of X/Open
Company Limited. UNIX is a registered trade mark in the United States and other countries,
licensed exclusively through X/Open Company Limited
Footnote 1:
This is a list of vendors who have expressed support for the
specification and does not constitute any endorsement by The
Open Group of the company or their products.