1.4. Linux Lineage
"The best thing about standards is that there are so many to choose from." Linux developers had 20 years of Unix history to examine when they designed Linux, and, more important, they had high-quality standards to reference. Linux was designed primarily according to POSIX; where POSIX left off, Linux generally followed System V practice, except in networking, where both the system calls and networking utilities followed the far more popular BSD model. Now that the joint SUS/POSIX standard exists, further development is normally compatible with the newer POSIX standard, and past deviations have been largely corrected when possible.
 Andrew Tanenbaum, Computer Networks, Prentice Hall, 1981, page 168.
The biggest difference between SVR4 and Linux, from a programming perspective, is that Linux does not provide quite as many duplicate programming interfaces. For example, even programmers who coded exclusively for SVR4 systems generally preferred Berkeley sockets to SysV TLI; Linux eschews the overhead of TLI and provides only sockets.
When there are insufficient available standards (formal, de jure, and informal, de facto) for an implementation, Linux sometimes has to provide its own extensions beyond POSIX. For example, the POSIX asynchronous I/O specification is widely judged as inadequate for many real applications, so Linux implements the POSIX standard by means of a wrapper around a more general, more useful implementation. Also, there is no general specification for a highly scalable I/O polling interface, so an entirely new interface called epoll was devised and added. We call out these nonstandard interfaces as such when we document them.