posix-paper1

Embed Size (px)

DESCRIPTION

posix paper

Citation preview

Fri Oct 4 00:44:16 PDT 2013(Previous version dated Thu 26 Jul 2012 11:41:36 BST)Why get Involved in POSIX?One of the key factors leading to success for Linux and the UNIXsystem has been the adoption of popular, open, standards such asthe X Window System, TCP/IP and the POSIX standards. Today we seea rapid evolution of IT systems, mobile devices and applicationsbrought about by the pervasiveness of the Internet, the availabilityof the Cloud, and the changes that these have made to the way wework. But are the standards evolving fast enough to keep pace withthe changes? This article gives a high level look at the currentPOSIX standardization activity, how it works and how you cancontribute to helping it keep pace.What is POSIX? POSIX is a registered trademark of the IEEE, and anacronym for "Portable Operating System Interfaces". The name POSIX wassuggested by Richard Stallman in 1986. The most well known POSIX standardis IEEE Std 1003.1 (or ISO Standard 9945, which is the same document))known for short as "POSIX.1". It specifies application programminginterfaces (APIs) at the source level, and is about source codeportability. Its neither a code implementation nor an operating system,but a standard definition of a programming interface that those systemssupporting the specification guarantee to provide to the applicationprogrammer. Both Operating System Vendors (OSVs) and Independent SoftwareVendors (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 otherC headers), threads, networking, real-time, internationalization, mathsfunctions etc. In total the standard describes over 1350 interfaces .If POSIX.1 is mentioned as a requirement for your software project thenthat this does not really tell you much. POSIX.1 is large (~4000 pages) andno project needs everything (even OSVs rarely implement every optionalinterface). The POSIX.1 standard itself is structured into modulesknown as option groups. A minimal set of interfaces and functionalityis required for all POSIX systems. The majority of all functionality isoptional. For a good description of options and their status in Linuxand glibc on an earlier edition of the standard see http://people.redhat.com/~drepper/posix-option-groups.htmlThere are several common misconceptions about POSIX. Originallystarting development in the mid 1980's, one common misconception isthat it has not changed for some time; it is outdated and irrelevant.The latest version of the POSIX.1 standard was actually produced in early2013. While the new versions of the standard are in generalupwardly compatible with the original, there are many hundreds ofinterfaces that have been added since then. Your participation isneeded to help keep the standard up to date and to keep pace with thedevelopments in the industry.Another common misconception is that you need to be an IEEE member toparticipate. Since 1998 the standard has been developed by the AustinGroup, an open working group found athttp://www.opengroup.org/austin/. Participation is free and open toall interested parties (you just need to join the mailing list).Decisions within the Austin Group are made by consensus; sometimesconsensus is easily reached, and sometimes only after heateddiscussion! The more people involved in such discussions, the morelikely that when consensus is reached, it is the right decision that ismade. That's why your participation and involvement is so important.Readers should note however that the mailing lists are not a technicalsupport forum. All the major UNIX system players and open sourcedistributions are represented on the Austin Group.Today the approach to the POSIX standard development is one of "writeonce, adopt everywhere" with a single open technical working group andthe resulting documents being adopted by IEEE as the POSIX standard,adopted by The Open Group as the Base Specifications of the Single UNIXSpecification and by the International Standards Organization as aninternational standard (which in turn means that it may be a nationalstandard in your country; for example, the British Standards Institutehas adopted ISO 9945 as a British Standard).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 reportingand fixing process to refine the document as implementation experiencegrows. Whilst the standard cannot change overnight, there is a mechanismboth to make regular technical corrections and also to collect items forfuture directions. To report a bug or suggest a change please use theonline public defect reporting system at http://austingroupbugs.net(the working group uses a Mantis bug tracking system).Is POSIX still relevant? Yes: Standard interfaces mean easier portingof applications. The POSIX interfaces are widely implemented andreferenced in other standardization efforts, including the SingleUNIX Specification and the Linux Standard Base. They are widelyimplemented in the IT infrastructure from embedded systems, mobiledevices, internet routers, servers and workstations, all the wayup to distributed supercomputers.Why should you get involved? By feeding back issues with the standardbased on implementation experience the standard can be improved andextended with new functionality, which in turn can "raise the bar ofcommonality" among systems. There is often much more to be gainedby having key functionality share a common interface and/or behave inexactly the same way, than for it to be different.More information on POSIX.1 and the Austin Group, includinghow to join and participate is available from its web site athttp://www.opengroup.org/austin/. The working group meets regularly (34meetings in 2011, 38 in 2012) virtually, using teleconferences and IRC,and there are freephone numbers to join the meetings.The html version of the standard is freely available from The Open Group'sSingle UNIX Specification web site at http://www.unix.org/version4/Andrew Josey, Austin Group Chair