Wed May 31 06:14:53 BST 2006 Why get Involved in POSIX? One of the key factors leading to success for Linux and the UNIX system has been the adoption of popular, open, standards such as the X Window System, TCP/IP and the POSIX standards. Today we see a rapid evolution of IT systems and applications brought about by the adoption of the Internet, and the changes that that has brought to the way we work. But are the standards evolving fast enough to keep pace with the changes? This article gives a high level look at the current POSIX standardization activity, how it works and how you can contribute to helping it keep pace. What is POSIX? POSIX is a registered trademark of the IEEE, and an acronym for "Portable Operating System Interfaces". The name POSIX was suggested by Richard Stallman in 1986. The most well known POSIX standard is IEEE Std 1003.1 (or ISO Standard 9945, which is the same document)) known for short as "POSIX.1". It specifies application programming interfaces (APIs) at the source level, and is about source code portability. Its neither a code implementation nor an operating system, but a standard definition of a programming interface that those systems supporting the specification guarantee to provide to the application programmer. Both Operating System Vendors (OSVs) and Independent Software Vendors (ISVs) have implemented software that conforms to this standard. The major sections of POSIX.1 are definitions, utilities (such as awk, grep, ps, vi, etc.), headers (such as unistd.h, sys/select.h and other C headers), threads, networking, real-time, internationalization, maths functions etc. In total the standard describes over 1350 interfaces . If POSIX.1 is mentioned as a requirement for your software project then that this does not really tell you much. POSIX.1 is large (3600 pages) and no project needs everything (even OSVs rarely implement every optional interface). The POSIX.1 standard itself is structured into modules known as option groups. A minimal set of interfaces and functionality is required for all POSIX systems. The majority of all functionality is optional. For a good description of options and their status in Linux and glibc see http://people.redhat.com/~drepper/posix-option-groups.html There are several common misconceptions about POSIX. Originally starting development in the mid 1980's, one common misconception is that it has not changed for some time; it is outdated and irrelevant. The latest version of the POSIX.1 standard was produced in 2001 and updated in 2004, and is known as IEEE Std 1003.1, 2004 Edition. Work is now underway to revise the standard to produce a new revision in 2008. While the new versions of the standard are in general upwardly compatible with the original, there are many hundreds of interfaces that have been added since then. Your participation is needed to help keep it up to date and to keep pace with the developments in the industry. Another common misconception is that you need to be an IEEE member to participate. The latest edition was developed by the Austin Group, an open working group found at http://www.opengroup.org/austin/. Participation is free and open to all interested parties (you just need to join the mailing list). Decisions are made by concensus; sometimes concensus is easily reached, and sometimes only after heated discussion! The more people involved in such discussions, the more likely that when concensus is reached, it is the right decision that is made. That's why your participation and involvement is so important. Readers should note however that the mailing lists are not a technical support forum. All the major UNIX players and open source distributions are represented on the Austin Group. Today the approach to the POSIX standard development is one of "write once, adopt everywhere", with a single open technical working group and the resulting documents being adopted by IEEE as the POSIX standard, adopted by The Open Group as the Base Specifications of the Single UNIX Specification and by the International Standards Organization as an international standard (which in turn means that it may be a national standard in your country; for example, the British Standards Institute has adopted ISO 9945 as a BS). So does this mean that the POSIX.1 standard is complete and perfect? No, like any large product it has bugs, and there is an ongoing bug reporting and fixing process to refine the document as implementation experience grows. Whilst the standard cannot change overnight there is a mechanism both to make regular technical corrections and also to collect items for future directions. To report a bug or suggest a change please use the defect report form at http://www.opengroup.org/austin/defectform.html . Is POSIX still relevant? Yes: standard interfaces mean easier porting of applications. The POSIX interfaces are widely implemented and referenced in other standardization efforts, including the Single UNIX Specification and the Linux Standard Base. Why should you get involved? By feeding back issues with the standard based on implementation experience the standard can be improved and extended with new functionality, which in turn can "raise the bar of commonality" among systems. There is often much more to be gained by having key functionality share a common interface and/or behave in exactly the same way, than for it to be different. More information on POSIX.1 and the Austin Group, including how to join and participate is available from its web site at http://www.opengroup.org/austin/. The html version of the standard is freely available from The Open Group's Single UNIX Specification web site at http://www.unix.org/version3/ Andrew Josey, Austin Group Chair