Linux kernel, its 29-year history report

2020/08/25, Linux Foundation [2020 Linux Kernel History Report](https://www.linuxfoundation.org/blog/2020/08/download-the -2020-linux-kernel-history-report /) has been released. It summarizes the 29-year history of the Linux kernel, from its first release on September 17, 1991 to Linux 5.8, released on August 2, 2020.

So I read it roughly diagonally. Please do something about the PDF that you can't copy and paste.

Linux Kernel History Report

This report explores the entire history of Linux. From the first kernel release on September 17, 1991 to August 2, 2020, when the latest 5.8 kernel was released, BitKeeper and git have over 1 million commit histories. ..

Kernel Archeology

The first release had only 88 files, 10,000 lines and 2964 tokens. There are only a few traces of the original, but there is still a first commit by Linus himself on 09/17/199 1 in vsprintf.c.

01.png

More than half of the Linux 5.8 kernel is code written within the last seven years.

02.png

Impact of Development Process Best Practices

To promote development best practices, CII created the Best Practices Badge (https://github.com/coreinfrastructure/best-practices-badge) system in 2015. Linux Core was one of the earliest projects to get this badge, and in June 2020, it got the highest title, the Gold Badge.

It says, but since CII is an organization within the Linux Foundation, I can't help but feel like a match pump.

Adoption of Maintainer Hierarchy

The MAINTAINERS file was committed for the first time at 1.3.68 in 1996. With only 107 lines, there are only 3 maintainers. Alan Cox, Jon Naylor, and Linus Torvalds.

MAINTAINERS


REST:
P: Linus Torvalds
S: Buried alive in email

Since the early discussions of Linux kernel development were made in multiple MLs, the discussions before 1997 are only fragmentary. Some of the collected items are published at http://lkml.iu.edu/hypermail/linux/, but they are also missing. If anyone has a log of that time, please provide it.

In turn, the 5.8 MAINTAINERS has 19033 lines, and 1501 maintainers are listed.

MAINTAINERS


THE REST
M: Linus Torvalds <[email protected]>
L: [email protected]
S: Buried alive in reporters
Q: http://patchwork.kernel.org/project/LKML/list/
T: git git://git.kernel.org/pub/scm/linux/
kernel/git/torvalds/linux.git
F: *
F: */

Version Control Systems

03.png

Prior to BitKeeper, it wasn't very clear who contributed and how much. A proper history began around 2002, and before that, it is inferred from the history left in each document.

In 2005 various things BitKeeper became unusable, so Linus made Git from scratch and went there. Migrated.

Recruiting developers is an eternal challenge, and the Linux Foundation continues to support Outreachy and LKMP programs. We have also made efforts to increase the number of female contributors.

04.png

Removing Unused Code

Efforts to remove unused code are ongoing, for example, 4.17 in 2018 removed 18,000 lines of 8 architectures.

It seems that it is, but it is only a small amount compared to the increase amount.

05.png

Highly Diversified Corporate Contributors

The Linux kernel has been contributed by many companies. From 2007 to 2019, there were 780048 commits from 1730 companies. The top 20 companies account for 68%.

06.png

In the last 10 years, there have been contributions from about 400 companies every year.

07.png

Release Model with Predictable Release Cycle Cadence

Linux release models are classified into four types. ・ Prepatch (RC) ・ Mainline ・ Stable ・ Long Term Stable

The latest kernel can be found at https://www.kernel.org/.

There was a lot of debate about the release cycle, but since 2011 a generally functional release model has been built. Starting with a two-week merge window, new features will be tested and introduced into the git repository. When the RC1 tag is added, it goes into a cycle of integration testing, debugging, and optimization, and the RC is updated weekly until quality and stability are ensured. When new features are released, the next merge window will start again.

08.png

Improving Automated Testing the Kernel

Kernel testing is based on community efforts. Sparse, Smatch, coccicheck are running as automatic test BOT, and Trinity, syzbot are running as fuzzing test. Many bugs have been discovered by these.

09.png

Stable Release Process

The stable release is about once a week.

Taking Linux 5.7.9 as an example, the release candidate RC is first announced to ML by email. There are 166 patches in this RF, all individually notified in ML. Each developer and automated testing tool tests their release method and sends the results back to an email. If there is a problem with RC, RC2, RC3 and its successors will be created, but RC2 is rarely created.

Automatic build BOT builds for more than 30 architectures. The stable version builds for 31 architectures and 56 configs. And many tests such as LKFT, LTP, Linux Kernel Selftests, Linux Perf are done. It will be released when the test is fully completed and the notification will be sent to ML.

Longterm Release Kernels

With the introduction of long-term support, Linux has become even more popular in embedded products. Distributions such as SUSE, Ubuntu, and Red Hat were the first to introduce this concept and prove its usefulness in the kernel.

Bugs found in the stable kernel will first be applied to the stable version, but will be backported if it is determined to be applicable to the LTS as well. Judgment as to whether the stable version of the fix can be applied to LTS is being improved year by year due to the development of machine learning tools by Sasha Levin. There were 18668 backports in 2019, more than the changes to the stable kernel 15 years ago.

Some markets are looking for ultra-long-term support SLTS that is even longer than LTS, and some developers have decided to support Linux 4.4 and 4.19 as SLTS.

Conclusion

Today's Linux kernel is used in all areas of security and security, from medical devices to spacecraft. Improving the infrastructure to ensure proper security and security before using Linux is one of the next major challenges.

The Linux kernel has a great foundation to continue to lead the world by creating best practices to improve the entire OSS industry.

Thanks

I'm out of sight.

10.png

Impressions

Linux is an indispensable part of the world, but it was an interesting material that gives a rough idea of its growth trajectory. The number of committers, the number of commits, the amount of code, and the dramatic increase in recent years clearly show the importance of this project.

However, there are only materials that are close to the public, and there is only content that can be made public. Back Side History It would be fun to have a report of History.

Recently, in the cloud-serverless-, the existence of low-level OS is trying to hide it behind the scenes, but as soon as something happens, I have to dig up commands and logs, so I need knowledge of Linux after all. It is still the same. Will the world where you don't have to worry about the existence and type of OS really come someday?

Recommended Posts

Linux kernel, its 29-year history report
About Linux kernel parameters
Linux kernel release 5.x (2/4)
Check Linux kernel version
Linux kernel release 5.x (3/4)
Linux kernel build time
Linux kernel release 5.x (4/4)
Linux kernel release 5.x (1/4)
Linux Kernel Build for DE10nano
Self-build linux kernel with clang
What is the Linux kernel?
[LINUX kernel rebuild] Version upgrade (4.18.0 → 5.8.8)