The Single Unix Specification is an industry standard for Unix systems, and complying with SUS (as it is usually called) is a necessary step for an operating system to use the Unix brand name. SUS originated out of the X/Open standards, which, in turn, evolved largely out of the SVID
standard. Like X/Open (and Unix95 and Unix98), Single Unix is/was coordinated by The Open Group. Single Unix is in many way similar to the POSIX standards, but more concretely Unix oriented. For example, SUSv2 requires APIs such as the BSD socket interface (IPv6 support optional), curses, and STREAMS, as well as various crufty System V and BSD extensions which POSIX wasn't willing to touch.
Single Unix is, compared to most such standards, very openly run. I was on the mailing list for the development of the v3 Single Unix Standard (SUSv3), and everything about the standard was developed on that list. Compared to other supposedly "open" standards making processes, such as the ones run by ANSI and ISO, this was quite a breath of fresh air.
About halfway through the process of creating version 3 of the Single Unix Specification, the standard was merged with POSIX. That is to say, SUSv3 and POSIX-2001 (more properly, IEEE Std 1003.1-2001) are completely identical
standards. This is an excellent turn of events, because getting documents out of the IEEE is similar to dental surgery: it's expensive and painful. In contrast, you can download the Single Unix Specification free of charge. In addition, the merger between POSIX and SUS means that, as of 2001, there is a single definitive Unix standard (as compared to half a dozen conflicting ones).
If you're a Unix programmer (especially a Unix C/C++ programmer), I highly recommend you download and read (or at least browse) this standard. It is often more informative than man pages, and can help guide you in the direction of writing portable code. In addition to the C API, SUS also standardizes commands and utilities (like diff and cp). This isn't of much use when you're typing commands interactively, but it's of great help when you're trying to write a portable shell script.
As of this writeup, SUSv3 compliance is a bit sketchy. Linux's glibc library supports most of it in recent snapshots, and it's likely that FreeBSD/OpenBSD/NetBSD and Solaris will follow along. Other Unix flavors, like HP-UX and AIX, are probably not likely to support it anytime soon (though I've been known to be wrong). By this, I mean completely support the standard: most Unix systems made in the last 5 years are probably close enough that it won't be much of an issue.
Links (current as of January 27, 2003):
- Open Group: http://www.opengroup.org/
- Single Unix v2: http://www.opengroup.org/onlinepubs/007908799/
- Single Unix v3: http://www.unix.org/online.html
- Comparing various Unix APIs: http://www.unix.org/apis.html