Happy 25th Birthday Linux: A Short History
The process by which richer featured, more robust Linux kernel iterations make their way into the world.
Linux is 25 years old now, and is used in millions of computers. Android, a derivative, populates about 1.5 billion active devices today. Linux began in the early 90s as a small project that Linus Torvalds started because he needed an OS. He shared it and others contributed ideas, and then code. Slowly it grew and eventually a community developed around Linux. The OS was not scalable to what Linux became, so Torvalds delegated maintainers of subsystem trees, and the number of maintainers has grown to cover over 100 subsystems today.
The Linux Foundation hosts the Linux kernel and has been tracking it for 11 years. Since then, more than 13,500 developers have contributed to the kernel, many contributing under the auspices of the companies they work for. To date, 1,300 companies have contributed, and the number of contributors and contributing companies are both growing. The number of volunteer, unpaid developers is declining because many unpaid, volunteer Linux developers get hired by companies seeking Linux talent; these employed contributors then continue to contribute from within the companies that hire them.
“Linux” is a term that is often applied to the whole operating system, when in fact Linux is just the kernel and is surrounded by other free software, such as GNU tools from the GNU project, components from GNOME and KDE desktop projects, as well as other contributing sources. The Linux kernel has been tracked since 2005 using Git, a version control management system for tracking code revisions. Git was developed by Linux Torvalds and community members specifically for large distributed projects like Linux, which needed to be very fast at applying patches and syncing with hundreds of maintainers working in tandem, often applying changes at the same time. Git also was designed, as Torvalds himself stated, to “…have very strong protection at all levels, even in the presenses (sic) of disk/memory/cpu corruption….” Git is open source, and anyone can place code on github.com to share.
Although in past decades a major number release (the number before the dot) meant major changes, the most recent release of Linux 4.x is no more “major” than any other recent 3.x release. The version number progressed to 4.0 in April 2015 in part because version numbers had reached 3.19, and Linux quipped that he was “…running out of fingers and toes.” Thus, the kernel version number is no longer an indicator of importance or major changes, however in dealing with revisions of any work, it’s understood that numbers after the dot are generally less significant.
With Linux, one or two releases every year are chosen to be maintained as “stable releases” so that distributions can be used reliably by end users. Kernel development proceeds on a new release to continue to adapt new features and technology into the kernel going forward. For example, very new technology often must be supported with drivers, such as USB 3.1. Those companies or individuals who need the Linux OS to support USB 3.1 for a particular product or application are forced to adopt the latest kernel version, whether it is very stable or not. Linux would not be what it is, however, without legions of users to report issues as they deploy the latest distribution for use in their products and services. Those developing code for the Linux project cannot run every possible test case that the actual kernel might experience in real life use cases; thus, those at the forefront of technology will be the ones who test the latest kernel versions and they, in turn, contribute valuable development information to the kernel developers, who fix the issues and apply them as patches.
Contributing developers increasingly are contributing on behalf of a company that uses Linux in its products. The developer, especially subsystem maintainers, can continue to contribute regardless of who they work for. Company contributors may work on the Linux kernel one day and with customers the next day, testing customer use cases and handling the reporting back to the Linux community on use cases that “break” the kernel or the product that’s using the kernel. These real-world fixes then get folded back into the next kernel release so with each iteration, a richer featured, more robust Linux kernel is released. And all of this is happening on a very large scale with many companies working on many different areas of the kernel, non-stop around the world.
Linux releases on a timeframe of every nine weeks with some exceptions to 10 weeks. During a development cycle, many notable features are added and hundreds of bugs are fixed. Many companies may participate in kernel development, but some need to maintain a specific stable kernel for a year or more. (A project is underway for enabling some stable kernels to be maintained for a decade or more.) Some of these kernel versions are maintained outside the usual “stable Linux kernel” process, the oldest of which is release 3.2, which was released in early 2012 and is being maintained by Debian developer Ben Hutching.
Many in the general public are more familiar with the desktop environment known as Windows, however. But consider the release cycles of Microsoft Windows. The issue of “stability” is reflected in the public’s acceptance of new features in the major Windows releases. Many held off in the upgrade to Windows 8. For some, it was the look and feel that was touch-screen oriented on a desktop environment that put them off. For others, drivers were too slow to arrive, rendering familiar peripherals useless. For example, some printers (especially older ones) would not work with Windows 8 at first, although with time this improved. Microsoft releases “updates” often, but the release schedule does not appear to be based on a regular time schedule. Linux is successful in desktop and more so in embedded environments, if you consider its derivatives. Android is a distribution that uses the Linux kernel, and is very successful. Perhaps Microsoft should use tools like Git to coordinate its developers’ daily production. An analysis on the differences between Windows and Linux could fill a book, however.
Lynnette Reese is Executive Editor, Embedded Intel Solutions, and has been working in various roles as an electrical engineer for over two decades. She is interested in open source software and hardware, the maker movement, and in increasing the number of women working in STEM so she has a greater chance of talking about something other than football at the water cooler.