Presentation to IST/-/2 Posix: Origins and Profiling Activities Introduction: Unix A detailed account of the development of both the Unix Operating System and of the Posix Standard is given in Annex 1, but briefly Unix was devised in 1969, and developed and diverged throughout the '70s and '80s in the hands of a number of sources. Standardisation A group of US Unix vendors (/usr/group) began the attempt to standardise Unix in 1980; responsibility for the development of the standard moved to the P1003 group of the Computer Society of the IEEE in January 1985. In January 1987 the IEEE, (through ANSI), approached ISO and proposed that the work be formalised internationally. The formation of ISO/IEC/JTC1/SC22/WG15 - the ISO Posix working group - was proposed to JTC1 by SC22 in July 1987. The first part of the Posix standard, IS 9945-1, was published in 1988 and has subsequently been revised as IS 9945-1:1990. The ISO Posix Standard The Posix standard is largely concerned with the definition of Application Program Interfaces (APIs) at various 'levels' within or to various facilities of an Operating System; a number of separate work items within WG15's remit have been accepted or proposed to address various APIs, and these are currently: ISO Work Item Description IEEE Project 22.21.01.01 System Kernel API (P1003.1) Status: ISO IS 9945-1:1990 22.21.01.02 Real Time Services API (P1003.4) 22.21.01.03.01 Transparent File Access API (P1003.8) 22.21.01.03.03 Protocol Independent Interface API (P1003.12) 22.21.01.03.04 Name Space and Directory Service API (P1003.17) 22.21.02.01 Shell & Utility Interface (P1003.2) 22.21.02.02 Shell & Utility Extensions (P1003.2a) 22.21.03.01 System Administration Interface (P1003.7) 22.21.04.01 'c' Language Binding to 9945-1 (P1003.16) 22.21.04.02 Ada Language Binding to 9945-1 (P1003.5) 22.21.04.03 Fortran Language Binding to 9945-1 (P1003.9) The technical work for the various parts of the Posix standard is being performed in quarterly meetings of the IEEE TCOS Posix groups, mostly in the US. A detailed synchronisation and harmonisation plan has been agreed between WG15 and the IEEE to ensure that early drafts of the work are passed to WG15 for review and comment, and that these comments are worked back into the IEEE draft before final, 'simultaneous', approval of the document as a standard is granted by both bodies. Posix Profiles It should be noted that none of these approved or proposed ISO projects are directly concerned with 'Profiling', however the IEEE groups became aware during 1990 that some form of guideline for the specification of Posix functional profiles was required, and in April 1991 the IEEE TCOS Sponsor Executive Committee (SEC) approved the establishment of a Posix Profile Steering Committee (PSC) to formalise the work of the various ad hoc groups dealing with profile issues to that date. PSC is one of the groups which has responded with comments on the ISO/IEC JTC1/TSG-1 'Standards for IAP' final report, with which it largely agreed, one notable disagreement being with a suggestion to allow the subsetting of a standard. One of the IEEE Posix groups which interact with PSC is P1003.0, which is generating a guide document to the set of Posix standards. In terms of profiles, P1003.0 is concerned with the definition of guidelines for their specification: ie sets of one or more base standards and, where applicable, the identification of chosen classes, options and parameters of the base standards necessary to accomplish a particular (Posix) functionality. The P1003.0 profiling work has drawn extensively from ISO/IEC JTC1 SGFS's TR 10000-1. ISO WG15 Profiling Activities At the ISO WG15 meeting in Rotterdam, May 1991, the WG15 plenary agreed to establish the WG15 Rapporteur Group on Coordination of Profile Activities (RGCPA), and outlined terms of reference for RGCPA's first meeting in January 1992. The UK representative on RGCPA is Don Folland. Whilst WG15 is concerned with Posix functional profiles it has a considerable interest in national profiles for the Posix Standard, and is currently debating where and how these should best be documented, to the extent that this is logged as an open 'Issue'. WG15 is currently of the opinion that standards documents should not contain copies of all applicable national profiles. At WG15's May 1991 meeting in Rotterdam the first draft of a document giving guidelines for the production of national profiles was discussed; work on the collection of locale information continues, as does the preparation of a question- naire intended to identify new areas in which cultural differ- ences exist. WG15 is concerned that the matter of functional profiles covers territory far broader than simply that covered by the work of WG15, (hence the creation of WG15's RGCPA, which aims to establish liaisons with other groups active in profiling). It may be that profile work should really be some way above WG15 in the JTC1 hierarchy rather than subordinate to it, however, the WG15 RGCPA is intended simply to handle issues related to WG15. There is a substantive difference between the functional profiles addressed by RGCPA and national profiles. Agreement on the use of terminology would be helpful. WG15 Resolution 118 requests consideration of the issue of the handling of profiles in connection with the final report of JTC1 /TSG1. ISO WG15 RGCPA Activities The first meeting of the WG15 Rapporteur Group for Co-ordination of Profile Activity was on the 20th and 21st of January 1992, in San Francisco, following the IEEE Posix groups meeting. RGCPA proposed the following Terms of Reference, which are subject to approval by WG15 at its May 92 meeting: . To co-ordinate the participation of WG15 in all profiling activities, including, eg, framework and taxonomy development, related to WG15 standards. . To identify how WG15 standards should be used in profiles thus promoting co-ordination and harmonization of those profiles, and to provide guidelines for the further development of WG15 standards in order to ease their use in profiles. . To monitor activities relating to SGFS activities and profiles which reference WG15 standards, and to provide feedback directly to SGFS both on procedural matters (that is, use of the profiling techniques) as well as on technical content of profiles. The meeting looked briefly at TR10000-1.3, a revised draft framework and taxonomy for OSE, and considered the implications of the ISO TR equivalent of P1003.0. The next meeting of RGCPA will be in October 1992, adjacent to the WG15 meeting. IST/5-/15 (Posix Panel) 25-February-1992 Annex 1: The Development of Unix and Posix The IEEE Posix standardisation effort has its origins in the work of /usr/group, an American-based organisation whose aim is to promote the Unix (tm) Operating System. The roots of the Unix System itself go back to the late 1960's, to Bell Labs... A T & T (American Telephone and Telegraph, Bell Labs parent company) offered the first commercial version of Unix, known as the Programmer's Workbench System (or PWB/Unix) derived from Unix Version 6 in 1977. However the Unix market didn't open up until A T & T loosened its licencing terms in 1979, allowing Unix to be ported to the flood of cheap microcomputers which were beginning to appear. Unix System III was released in 1981, combining PWB/Unix with Bell's Version 7, but US government restrictions prevented this from using then current software encryption technology. After the US courts ordered the break-up of A T & T from the Bell Telephone Operating Companies, A T & T was free to try to recover commercial control of its product, and the means to this end was Unix System V, which through a series of Releases from 1983 sought to incorporate most of the enhancements which had appeared in other vendors' Unix products, primarily those from the University of California at Berkeley, which produced the BSD (Berkeley Software Distribution) series of Unix variants, funded by the US Department of Defense. The Family of Unixes Micro AT&T Bell Berkeley Notes Date -soft Bell Labs Thompson PDP-7 creates 1969 | Unix! | PDP-11/20 1971 | Version 4 First C Version 5 Versions 1973 | | First ---- Version 6 Licenced 1976 / | Version | | PWB/Unix | (Berkeley First AT&T 1977 | | additions) Release | | | | ---- Version 7 | First 1978 |/ | | Portable Vn | 32V | Internal \ | DEC Vax Vn 1979 AT&T ------ | Releases \| First | Berkeley Berkeley 1979 | 3 BSD Version | | | Berkeley 1980 | 4.1BSD | | AT&T -- System III /| markets 1982 / | ---------------- | Unix | |/ / Berkeley | System V Version 8 4.2BSD AT&T's 1983 | | | | 'industry | | | | standard'. Xenix System V | | (X/Open 1984 | R 2 | | formed) | | | | AT&T's SVID | | | | Issue 1 1985 | | | | released. | | | Berkeley | System V Version 9 4.3BSD 1986 \ R 3 / / ------- | ------- |<------ | AT&T's \|/ 'Open 1988 System V | | System' R 4 | | | v v v System V Release 4 Unix System V Release 4 is the latest move in A T & T's attempt to recover control of its wayward offspring, in conjunction with a major marketing campaign and the publication of the System V Interface Definition (SVID). The SVID, by way of offering an 'industry - standard' specification of the Unix SVR4 system calls, is intended to promote application portability. Unix SVR4 has taken up many of the best features of other variants of Unix, combining the Network File System (NFS) architecture and the Remote File System (RFS) scheme, and including the Streams communication mechanism, file locking, etc. It has also allowed agreement of Application Binary Interface (ABI) environments for the major CPU architectures, such as Intel Motorola and Sun's SPARC, making 'off the shelf' software more viable. SVR4 conforms to the ANSI C, IEEE P1003.1, Federal Information Processing Standards (FIPS) 151-1 and X/Open's XPG3 standards. The IEEE Posix Standardisation Effort It is immediately obvious from the previous discussion that Unix's aim of portability became a mill-stone as soon as that aim began to be achieved, and the different versions began to diverge. This trend was recognised in 1980 by a group of Unix vendors and users; they formed /usr/group in America and began the movement to standardise Unix. IEEE Involvement: ANSI The Standard produced by /usr/group was timely, but inadequate in a number of ways: by the time it was published A T & T had released System V Release 2, Microsoft's Xenix had appeared and Berkeley had produced 4.2BSD - the target had moved. Another major inadequacy was that /usr/group was not a recognised standards body, nor was it sponsored by one; its Standard was recognised for what it was by the Unix market - a well meant effort by a set of Unix vendors, but without the broad base of support to be a true National or International Standard. In January 1985 the American IEEE (Institute of Electrical and Electronics Engineers) took up the torch to produce a National Standard, using as its first draft the usr/group Standard. The IEEE was well-placed for such work, having an appropriate membership structure plus a balloting mechanism acceptable to ANSI, the US National Standards Institute. Once a Standard is approved by the IEEE member ballot the document has a direct route to adoption, normally without further balloting or amendment, as a US National Standard by ANSI, which as a National body can then forward the work to ISO for consideration as an International Standard. The Committee formed by the IEEE and charged with the task of producing the standard was nominated 'P1003'. It had in its terms of reference the requirement to produce an interface standard, not a Unix standard - in other words to produce a specification which was independent not only of the underlying machine hardware, but also of the base Operating System. The work was given the title Posix, for Portable Operating System Interface for Computer Environments, to reflect the intention of offering a uniform environment for application programs. In order to manage this task, the IEEE P1003 Committee soon identified sub-sets of its work and devolved these to Working Groups charged with producing that part of the Standard, thus the P1003.1 group produced the System Kernel Interface standard, which was first approved by the IEEE for Trial Use in 1986 and (as amended) is now an approved ISO standard, IS 9945-1:1990. The Posix Family of Standards A wealth of Working Groups have submitted Project Authorisation Requests (PARs) to the IEEE Technical Committee on Operating Systems (TCOS) Sponsor Executive Committee (SEC) since 1985, as more areas have come under scrutiny for standardisation within Posix; they are listed below. The Networking-related Groups are the most recent additions and have furthest to go in producing their standards. The current full set of IEEE Posix standards is as follows: 1003.0 Draft 14, November 1991 Guide to the Posix Open Systems Environment. This provides an overview of Posix and other ISO standards, describing portability of people, data and applications by referencing the Posix OSE Model. Status: IEEE Mock Ballot 4Q91 ISO SC22 review and comment 2Q92 1003.1 ISO/IEC 9945-1:1990 Posix Part 1: System API (c) System Kernel Interface. (C Language bindings) Describes file heirarchy and naming conventions, process management, system databases, device control and file interchange conventions. Status: IEEE Std. 1003.1-1988/ISO IS 9945-1:1989 IEEE Std. 1003.1-1990/ISO IS 9945-1:1990 1003.1 LIS: Draft 2, November 1991 System Application Program Interface (API) [Language-Independent] Status: IEEE Mock Ballot 4Q91 ISO SC22 review and comment 2Q92 1003.1a Draft 6, July 1991 Addendum to 1003.1, describing new functions for directory tree walking, symbolic links and an updated file interchange format. Status: IEEE Ballot 2Q92 1003.2 Draft 11.2, September 1991 Shell and Utilities. Describes Bourne-type Shell and utilities useful to applications, such as sort, grep, etc. Status: in IEEE and ISO DIS 9945-2 ballot. IEEE Std. and ISO DIS expected 2Q92. 1003.2a Draft 8, December 1991 User Portability Extension. Includes tools for programmers and experienced Unix users. Status: in IEEE Ballot ISO CD/PDAM 4Q91 1003.2b Draft 2, December 1991 Shell and Utilities - Amendment 1003.3 IEEE Std. 1003.3-1991 - Test Methods for Measuring Conformance to Posix. Describes conformance requirements for Posix- based Systems, covering 1003.1 and 1003.2 (soon) Status: IEEE Std. 1003.3-1991. 1003.3.1 Draft 13.0, 6 December 1991 Test Methods for Measuring Conformance to Posix - Part 1: System Kernel Status: in IEEE Ballot and ISO CD registration 1003.3.2 Draft 7, November 1991 Test Methods for Measuring Conformance to Posix - Part 2: Shell & Utilities Status: IEEE Ballot 2Q92 ISO SC22 review and comment 1003.4 Draft 11, 7-October 1991 Real Time Extensions to 1003.1. Covers shared memory, events, semaphores, timers priority scheduling, Synch & Asynch i/o, etc. Status: in IEEE ballot and ISO CD registration IEEE Std. expected 1Q92. 1003.4 LIS Draft 1, 1-December 1989 Real Time Extensions to 1003.1. Status: IEEE ballot TBD 1003.4a Draft 2, Jan 1990 Describes the Threads extension to 1003.4. Status: in IEEE ballot ISO CD registration 2Q92 1003.4b Draft 1, November 1991 Real Time API Extension to ISO 9945-1:1990 Describes the spawn and timeout extensions to the base standard. 1003.5 Ada Language Bindings. The Ada interface to 1003.1 (currently) Status: in IEEE ballot. ISO CD registration ?Q93 1003.6 Draft 12, September 1991 Security. Describes extensions to 1003.1 and 1003.2 to support security services such as authentication access controls and audit logging. Status: in IEEE ballot. ISO CD registration 1Q92. 1003.7 Draft 7, November 1991 System Administration Interface. Provides tools for backup/recovery, adding users etc. Status: first part to IEEE ballot 2Q91. ISO CD registration 1Q93 1003.7a Draft 2, October 1991 System Administration Interface/Printing. 1003.7b Draft 3, November 1991 System Administration Interface/Software Management. 1003.7c Draft 1, November 1991 System Administration Interface/User Management. 1003.8 Draft 5, 30 October 1991 Transparent File Access. Covers interfaces to NFS- and RFS-type features. Status: IEEE ballot in 4Q91 ISO CD registration 1Q92 1003.9 Fortran Language Bindings. The Fortran 77 interface to 1003.1. Status: in IEEE ballot. ISO CD registration ?Q93 1003.10 Draft 8, November 1991 Supercomputing Application Environment Profile (AEP). Status: IEEE ballot 3Q92 1003.11 Draft 5, November 1991 Transaction Processing AEP. Goal is to identify the interfaces and standards relevant to On-Line Transaction Processing (OLTP) applications in Posix environments. The group is liaising with the OSI DTP group, ANSI's X3T5.5 and 1003.1, .4, and .8 groups to ensure consistency. Status: IEEE mock ballot in 1Q92 ISO WG15 review & comment 1Q92 1003.12 Draft 0.3, November 1991 Protocol Independent Interfaces (PII). Describes Application Program Interfaces (APIs) for networking protocol stacks such as OSI and TCP/IP. This group has set up liaisons with ANSI X3, IEEE P802 and SCC10, together with 1003.6, .7, .11 and .17. Status: IEEE ballot in 2Q93. ISO CD registration 3Q93 1003.13 Draft 4, November 1991 Real Time Processing AEP. 1003.14 Draft 6, January 1992 Multiprocessing AEP. Status: IEEE mock ballot in 4Q91. 1003.15 Draft 8, 1 November 1991 Supercomputing Batch Extensions. Describes the Operator, user and program control of batch queues, defining the application layer batch communications protocol. Status: IEEE ballot 3Q92 ISO CD registration 1Q93 1003.16 Draft 2, November 1991 c Language Bindings - Part 1: binding for 9945-1. Describes the 'c' binding to the Language Independent Specification of P1003.1 Status: IEEE ballot in 2Q92. ISO CD registration 3Q92 1003.17 Draft 2.0, August 1991 Name Space & Directory Services. API for X.500-compatible facilities. Status: IEEE ballot in 2Q92. 1003.18 Draft 5, September 1991 The Posix Platform Environment Profile (PEP), formerly TIMS. Status: IEEE ballot in 1Q92 1201.1 Windows Toolkit API 1201.2 Driveability. Addresses the 'look and feel' of WIMP interfaces and other factors of Human Computer Interaction (HCI). Status: IEEE ballot in 2Q92 1201.xx X Lib API. A library interface for the X Windows system. 1224 Draft 4, October 1991 ASN.1 Object Management API. Status: IEEE ballot in 1Q92. 1224.1 Draft 2, September 1991 (odd pages only!) X.400 Based Electronic Messaging API Status: IEEE ballot in 2Q92. 1238 Draft 1, September 1991 Common OSI Support Functions API. Status: IEEE mock ballot in 4Q92. 1238.1 FTAM API. Status: IEEE ballot in 4Q93. The ISO Standardisation Effort ISO was first approached by the IEEE in January 1987 with a proposal to move the Posix standardisation effort into the International arena. The evolution of the Posix International Standard is being handled within ISO/IEC JTC1/SC22/WG15 under the convenorship of Jim Isaak. WG15 is the Working Group directly responsible for the task, authorised by the Languages Sub-Committee (SC22) and responsible to ISO's Joint Technical Committee 1. SC22 proposed the formation of WG15 in July 1987. Structure of the ISO Standard The ISO version of the Posix Standard does not retain the original IEEE/ANSI P1003 numbering, and will not completely reflect the P1003 structure either, with many of the P1003 standards, for example 1003.4 (Real Time), being subsumed as addenda to the ISO equivalent of the 1003.1 base standard. The approved ISO work items, as of 7-January-1992, are listed below: ISO/IEC JTC1/SC22/WG15 Posix Schedule of Work (This information is taken from ISO/IEC JTC1/SC22 N1072) 22.21.01.01 Base Standard: Portable Operating System Interface for Computer Environments - Posix. Status: ISO IS 9945-1:1990 22.21.01.02 Addendum to 9945-1: Real Time Extensions. Status: ISO CD 4Q91. 22.21.01.03.01 Addendum to 9945-1: Distribution Services - Transparent File Access. Status: ISO WD 4Q91. 22.21.01.03.02 Addendum to 9945-1: Distribution Services - Remote Procedure Call. Status: This work item has been discontinued. 22.21.01.03.03 Addendum to 9945-1: Distribution Services - Protocol Independent Interface. Status: ISO WD expected 3Q92. 22.21.01.03.04 Addendum to 9945-1: Distribution Services - Name Space & Directory Services. Status: ISO WD expected 2Q92. 22.21.02.01 Shell Standard: Posix Shell & Utility Applications for Computer Environments. Status: ISO CD 4Q91. 22.21.02.02 Addendum to 9945-2: User Portability Extensions. Status: ISO WD 4Q91. 22.21.03.01 Administration Standard: Posix System Administration. Status: ISO WD expected 4Q92. 22.21.03.02 Addendum to 9945-3: Posix System Administration - Batch Services. Status: This work item has been discontinued. 22.21.04.01 Language Bindings: Posix Language Bindings - C Language. Status: ISO WD expected 4Q92. 22.21.04.02 Addendum to 9945-4: Posix Language Bindings - Ada Language. Status: ISO WD expected 2Q94. 22.21.04.03 Addendum to 9945-4: Posix Language Bindings - Fortran Language. Status: ISO WD expected 4Q94.