A specification for Linux is an important step in the evolution of the open source operating system, as it will enable software developers to ensure that their applications work on any version of Linux. Among the people involved in the project are Linus Torvalds, author of the Linux operating system, and Alan Cox, one of the chief architects behind the Linux kernel.
Tony Lock, senior analyst at Bloor Research, said, "The specification appears to be trying to make a vanilla Linux platform." He said that while standards are very important, any attempt to put them in place for Linux development would be tricky, as the open source operating system is evolving very quickly.
"A standard for Linux is likely to be out of date before it is published," said Lock. The traditional way to resolve problems is to use the open source community, he added.
A drawback with the draft specification is that it does not recommend using the latest version of the kernel - version 2.4 - as this was introduced after the initial specification was written.
The draft specification states that newer releases of Linux usually support applications that were built on older versions. But it warns that an application built on a recent version may not run on an older version of Linux.
In essence, software developers need to confine themselves to writing applications that are backwards-compatible - by avoiding features in new versions of the kernel - in order to maintain the highest degree of portability across Linux distributions.
It also recommends that users avoid some of the features within specific Linux distributions, such as support for 64-bit file sizes on 32-bit platforms, PC Card and USB devices and the extended Raid API.
Other recommendations to ensure portability concern the C and C++ compilers (GCC) that ship with Linux. While it appears to be okay to use the GCC compiler to create C applications for Linux, the draft specification warns against writing C++ applications. It states, "Because of the immaturity of C++ ABI [application binary interface] we do not recommend depending on dynamic C++ libraries provided with the system."
C++ dynamic libraries, such as those found in the Microsoft Foundation Classes have played a significant role in simplifying developing Windows applications using tools such as Visual C++.
Features to avoid in order to ensure compatibility across Linux distributions:
Source: The Free Standards Group