Kernel Comment: Release early, release often!
by Thorsten Leemhuis
"Release early, release often" is a popular mantra in the open source world. Unfortunately, some developers don't pay enough attention to it – and contribute to the reputation that Linux offers bad support for current hardware.
The sloppiness of individual developers and long amounts of time between new versions are among the reasons why Linux distributions tend to be rather bad at supporting new hardware. A current example is the 3D support for Aruba graphics cores in AMD's Trinity processors, which have been used in various notebooks and PCs in recent months.
Aruba GPUs belong to the Northern Islands generation. The graphics cores of this generation are used on many graphic cards from the Radeon HD 6000 series, for which an open source Linux driver has long been available. Because of this close relationship, these drivers will support Aruba GPUs with only a few minor changes. In March, such changes were incorporated into X.org's Radeon driver and in Linux kernel version 3.4, which was released in May.
In March, the developers also extended the open source 3D driver for Radeon graphics cores, which is developed as part of Mesa 3D, to support Aruba GPUs. The tiny patch only contained ten new lines of code and modified four existing lines; however, this change was only merged into the development branch of Mesa 3D, which will lead to Mesa 3D 9.0 in October. Mesa 3D 8.0.3, which was introduced in May, and its July successor, 8.0.4, offered no Aruba support – although in the comment for the Aruba change, the developers had mentioned that the patch was a candidate for integration into the Mesa 3D 8.0 series.
As a result, Linux users whose computers use the AMD Trinity CPU's processor graphics can only access 3D acceleration if they install the developer version of Mesa 3D or manually backport the changes and then manually configure Mesa 3D 8.0.x; both tasks require more than advanced Linux skills and a considerable amount of time. The Mesa developers could have easily spared their users this situation by integrating support for Aruba into the 8.0 branch as well. From there, it would have made it into various distributions months ago; 3D acceleration with Aruba GPUs would then simply work.
Sometimes it isn't as easy to backport as it is in this case, because the code for new hardware might be more extensive. By releasing new versions often, the developers could ensure that improvements don't stay buried in development branches for months before they make their way to users through the distributions. The kernel developers have been aware of this problem – it was one of the reasons for dropping the Unstable series (Linux release series such as 2.3 or 2.5) from development. Minor harmless hardware support improvements are now even added to Stable and Longterm kernels; as these form the basis for the Linux distribution kernels, hardware support improvements can reach users within only a few days or weeks this way.
Stable driver interfaces
In the Linux kernel, Mesa 3D, Gutenprint and SANE drivers and their surrounding infrastructures are developed together. In theory, the development could be split with drivers being issued as required independent of the infrastructure releases, as long as there are stable driver interfaces. However, amalgamating drivers and their infrastructures offers various advantages, as explained in the stable_api_nonsense.txt kernel documentation file. This opinion is shared by the developers of other software components where infrastructures and drivers are tied together – in the medium, and perhaps even in the long term, stable driver interfaces will therefore likely continue to be the exception in the Linux world.
The Mesa 3D developers should consider following this example. However, they are not the only ones whose hardware support improvements take months to arrive in the stable releases. Nine months passed between the release of versions 5.2.6 and 5.2.7 of the Gutenprint project's printer drivers (formerly Gimp-Print); 5.2.8 was released thirteen months later. The SANE project that develops scanner drivers occasionally takes a similarly long time to release improved drivers.
What's more, up to an extra six months (more with Debian) pass in most distributions before a distribution update deploys new software versions; this delay has already been discussed in "Linux distributions need fresher drivers" at The H Open.
Ultimately, it can take up to eighteen months before the code to support a new hardware component appears in mainstream distributions. Often, the hardware is outdated by that time, because a similar amount of time passes between the introduction of processors and graphics chips and the arrival of the next generation. Product life cycles are not quite as short for printers and many other components, but even for those, successors tend to be released after about two years.
In these conditions, the reputation that Linux only offers good support for outdated hardware is not unfounded. However, the developers of the Gutenprint, SANE, Mesa 3D and various other driver projects could easily avoid the problem by adopting the kernel developers' tried and tested model and releasing a new version every two to three months.
Do you believe that open source developers don't pay enough attention to the "release early, release often" mantra"? Have your say in the the forum.