12

The Linux kernel is almost 25 years old. If I had to come up with the short version on the development history of the Linux kernel since 1991(its inception date), and in partcular since 1994 (1.0.0) until today, well I couldn't. The best I could do short of reading every single kernel release notes would be to provide the following which are the general release features added to the kernel up to version 3.11 (notes and links omitted):

  • Version 1.0 of the Linux kernel was released on 14 March 1994. This release of the Linux kernel only supported single-processor i386-based computer systems. Portability became a concern, and so version 1.2 (released 7 March 1995) gained support for computer systems using processors based on the Alpha, SPARC, and MIPS architectures.
  • Version 2.0 was released 9 June 1996. There were 41 releases in the series. The major feature of 2.0 was SMP support (that is, support for multiple processors in a single system) and support for more types of processors.
  • Version 2.2 (released 26 January 1999) removed the global spinlock and provided improved SMP support, and added support for the m68k and PowerPC architectures as well as new file systems (including read-only support for Microsoft's NTFS).
  • Version 2.4.0, released on 4 January 2001, contained support for ISA Plug and Play, USB, and PC Cards. It also included support for the PA-RISC processor from Hewlett-Packard. Development for 2.4.x changed a bit in that more features were made available throughout the duration of the series, including: support for Bluetooth, Logical Volume Manager (LVM) version 1, RAID support, InterMezzo and ext3 file systems.
  • Version 2.6.0 was released on 18 December 2003. The development for 2.6.x changed further towards including new features throughout the duration of the series. Among the changes that have been made in the 2.6 series are: integration of µClinux into the mainline kernel sources, PAE support, support for several new lines of CPUs, integration of ALSA into the mainline kernel sources, support for up to 232 users (up from 216), support for up to 229 process IDs (64-bit only, 32-bit arches still limited to 215), substantially increased the number of device types and the number of devices of each type, improved 64-bit support, support for file systems which support file sizes of up to 16 terabytes, in-kernel preemption, support for the Native POSIX Thread Library (NPTL), User-mode Linux integration into the mainline kernel sources, SELinux integration into the mainline kernel sources, InfiniBand support, and considerably more. Also notable are the addition of several file systems throughout the 2.6.x releases: FUSE, JFS, XFS, ext4 and more. Details on the history of the 2.6 kernel series can be found in the ChangeLog files on the 2.6 kernel series source code release area of kernel.org.
  • Version 3.0 was released on 22 July 2011. Torvalds announced that the big change was, "NOTHING. Absolutely nothing." 30 May 2011 saw Torvalds announce, "...let's make sure we really make the next release not just an all new shiny number, but a good kernel too." After the expected 6-7 week development process, it would be released near the 20th anniversary of Linux.
  • In December 2012, Torvalds decided to reduce kernel complexity by removing support for i386 processors, making the 3.7 kernel series the last one still supporting the original processor. The same series unified support for the ARM processor.
  • Version 3.11, released on 2 September 2013, adds many new features such as new O_TMPFILE flag for open(2) to reduce temporary file vulnerabilities, experimental AMD Radeon dynamic power management, low-latency network polling, and zswap (compressed swap cache).

I could also add that for many years now the Linux Foundation has been reporting on the kernel development. These are the 2012-2013 Kernel Development Highlights:

  • Almost 92,000 changesets have been merged from 3,738 individual developers representing 536 corporations (that we know about).
  • A vast array of important new features has been merged into the mainline. These include full tickless operation, user namespaces, KVM and Xen virtualization for ARM, per-entity load tracking in the scheduler, user-space checkpoint/restart, 64-bit ARM architecture support, the F2FS flash-oriented filesystem, many networking improvements aimed at the latency and bufferbloat problems, two independent subsystems providing fast caching for block storage devices, and much more.
  • The longstanding squabble over Android-specific kernel features has faded completely into the background. The much-discussed "wakelocks" feature has been quietly replaced by a different mainline solution which is used in the latest Android devices.
  • The use of automated tools to find bugs in development kernels has increased significantly during this period. Tools like the "trinity" fuzz tester and the zero-day build-and-boot system are finding large numbers of bugs in pre-release kernels, shortening the development cycle and enabling the community to deliver higher-quality releases.
  • Contributions from the mobile and embedded industries continue to increase. Linaro, Samsung, and TI, for example, together contributed 4.4% of the changes in the previous version of this paper; for the period up to 3.10, they contributed almost 11% of all changes.
  • The kernel project participated in the Outreach Program for Women for the first time, leading to 41 applications for 7 available positions. During the application process, 374 patches were submitted to the kernel, and over 1/3 of those patches were accepted in the 3.10 kernel release. The intern process is now underway, but the results of that will not start showing up until future kernel releases.

Furthermore, quantifying what is happening to the kernel is not very hard as we have metrics beyond the individual commits. For instance, we know the 1.0.0 kernel in 1994 had 176 250 lines of code; and we know a contemporary kernel like 3.10 has 15 803 499 lines of code. Considerably more. The kernel release frequency has increased(63 days for 3.10), as well as the rate of change(9 commits per hour or more as we speak). To quote the Linux Foundation:

The ability to sustain this rate of change for years is unprecedented in any previous public software project.

But all of this brings little insight in my opinion. Therefore, I would ask:

  1. Can this quarter of a century evolution be summarily qualified beyond the linear addition of all the listed features that make up this kernel over time?
  2. And does this bring any insight as to what the Linux kernel is about, or where it's going? After 25 years of development some conclusions can certainly be drawn about that?

Looking for an abstract answer in layman's terms which says it all without resorting to saying everything.

closed as too broad by Gilles, jasonwryan, derobert, Braiam, jordanm Apr 7 '14 at 22:12

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • "support for up to 229 process IDs" kind of jumped out at me, so I googled this and the only reference is, it seems, the original source of that paragraph. I had thought process IDs have a (signed) 16-bit range, i.e. ~ 16,000, but it may in fact be much more than that. It certainly isn't a few hundred. – goldilocks Apr 7 '14 at 20:57
  • 3
    This question is too broad because it is looking for the Wikipedia article on the subject. – Gilles Apr 7 '14 at 21:13
  • Are you intending to write a paper here? That's fine, but it would help, advice wise, if you are specific about what you are trying to do. I presume it's not just to have a good summary ready for your next evening at the local watering hole ;) – goldilocks Apr 7 '14 at 21:19
  • 1
    I vaguely recall there being at least a few people planning on writing dissertations on this, or similar. I suspect you will find academic literature on the subject... Other than pointing to existing publications, it seems like your questions would require months of research to answer. – derobert Apr 7 '14 at 21:47
  • On your question, maybe you need to tell us about layman's terms, in order to get a good answer here. Apart from that, post this to the lkml and get their feedback on your chronology. If you missed something important, they will make you know. – Bananguin Apr 7 '14 at 23:22
11

You ask:

Can this quarter of a century evolution be summarily qualified beyond the linear addition of all the listed features that make up this kernel over time? And does this bring any insight as to what the Linux kernel is about, or where it's going?

I doubt such questions have well-defined answers. However, I think it is not difficult to understand the forces that are driving the development of the Linux kernel.

First, computers are increasingly important things. Chomsky remarks somewhere that they are central to any industrialized economy. A computer is nothing without an operating system, which thus makes operating systems important.

For a time in the 80s and 90s, proprietary operating systems became ascendent. This was in some sense an unnatural state of affairs. Microsoft's Windows was for a time dominant, and in a sense still is, but it only kept its position by exploiting network effects.

With the rise of the internet, it became possible to produce a community operating system. However, such an operating system would only be useful if it could not in turn be proprietarized. The BSD family of operating systems were not in that category. Hence the rise of the Linux kernel as the heart of a community operating system that could not be proprietarized.

Notice that a lot of big computer vendors have got behind the Linux kernel. Why? Individuals care about freedom. Communities care about freedom. Corporations care only about profit and associated strategies. I believe that many computer corporations made peace with the notion of a "commoditized" operating system, a "level playing field", if you will. They looked at the example of Microsoft making a lot of money by proprietarizing an operating system, but not everyone can be Microsoft, and having a single vendor be in such a position of power is, to say the least problematic, if only because it gives them an unfair advantage from the point of view of the other corporations.

So, I think that since most corporations aren't in a position to become Microsoft, and perhaps don't want to be, have decided to support a "commodity" operating system. Again, a level playing field. Thus everyone can use this OS for whatever purposes they want to, and nobody in the group is at an advantage with respect to anyone else. Another way of looking at it is that having something as basic as a operating system become proprietary is a severe interference with free market principles. In general corporations are not specially in favor of free markets if they can be on the winning side, but if they can't be, then they are.

Most of the characteristics of the Linux kernel can really be deduced from these dynamics. For example, the modular and malleable nature of a Unix-like operating system is well-suited to an OS which is designed to be "commodity". Also, in part the fast moving nature of the kernel project is because it is trying to satisfy all these many corporate demands to be what they need it to be. While much activity is centered around hardware support/drivers, there is also much activity outside that area; constant development of new features and maintenance and improvement of existing ones.

Of course, we should not discount the desires of the community, commonly called the free software community, or sometimes FOSS (Free and Open Source Software), to have a free operating system for ordinary people to use, which is not controlled by corporations. After all, projects like Debian and Fedora are run by volunteers who believe in these values. However, I think that the part played by corporations should also not be underestimated.

  • 1
    +1 For raising the issue of the socio-political forces which made Linux in combination w/ GNU bewildering in the mainstream. I think that's a very significant aspect of the origins, which although it may seem a "non-technical issue", is actually a defining characteristic of the hands on development of the OS -- see particularly the writings of Eric S. Raymond -- and a major part of the dynamics of its adoption by a wide range of hardware manufacturers and as the historically predominant platform of the internet. – goldilocks Apr 7 '14 at 21:48
  • ^ Note many people have a linux kernel in their home and don't even know it because of this (your router, your DVR box, etc.) – goldilocks Apr 7 '14 at 21:50
  • I commend your answer for situating the kernel in time, and appealing to the dynamics that prevailed - the evolution of computing; the business appeal; the market forces; the internet; freedom of computing; licensing; and how all the above have an impact on implementation in the kernel, with an outlook on Linux as a whole. I have to read in your statement about an "unnatural state of affairs" that we may lack historical perspective to properly assess this - and this is important. Although I was really focused on the kernel per se, I will think more about your points and comments above. Thanks! – user44370 Apr 8 '14 at 3:33
  • 1
    @goldilocks: Not to mention your Android phones. – slebetman Feb 25 '15 at 0:20