HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
torvalds
linux
C2010–2026
torvalds / linux

linux

Linux kernel source tree

742Distinct people
940Mentions
5Explicit recommenders
255.5KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Linux kernel source tree

GitHub

Where it is used

  • Ubuntu — Ubuntu uses the Linux kernel at the core of the operating system to manage and control hardware resources like I/O, memory, and CPU. Source
  • Android — Android uses the upstream Linux LTS kernel as the base of its Android kernel. Google then adds Android-specific patches to produce Android Common Kernels. Source
  • 1 more documented example

What people are saying

For critical applications, I for one would like to know the story behind a commit, preferably in the commit itself and not a reference to an external system like idk, Jira. My…

Cthulhu_ used a recommendation phrase. 5 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 7:02:50 PM UTC.

GitHub Down Again? direct repository linkCritical

Users report that GitHub's official status page inaccurately claims all systems are operational while widespread 504 gateway timeouts and download failures disrupt CI/CD pipelines and software distribution. The conversation highlights significant frustration with the platform's reliability and transparency, leading to debates about migrating to self-hosted or alternative services like Codeberg.

57 readable replies · Supporting reply 1 · Supporting reply 2 · Supporting reply 3 · Supporting reply 4

Mentions over time

HN mentions by year940 dated mentions

Observed mentions: 2010-07-15 18:39:05 UTC to 2026-10-29 13:46:22 UTC.

02550751002010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20102011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 13 mentions; 3 submissions, 10 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 24 mentions; 2 submissions, 22 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 23 mentions; 5 submissions, 18 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 31 mentions; 7 submissions, 24 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 42 mentions; 4 submissions, 38 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 55 mentions; 9 submissions, 46 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 72 mentions; 8 submissions, 64 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 57 mentions; 8 submissions, 49 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 66 mentions; 6 submissions, 60 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 80 mentions; 6 submissions, 74 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 91 mentions; 8 submissions, 83 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 104 mentions; 8 submissions, 96 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 76 mentions; 3 submissions, 73 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 76 mentions; 6 submissions, 70 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 72 mentions; 7 submissions, 65 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 57 mentions; 8 submissions, 49 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC101
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC13310
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC24222
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC23518
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC31724
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC42438
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC55946
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC72864
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC57849
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC66660
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC80674
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC91883
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC104896
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC76373
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC76670
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC72765
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC57849

What Hacker News says

31 sources
You shall read this first: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1331150 There was a rather significant change to the kernel ARP caching behavior introduced in early 2013: https://github.com/torvalds/linux/commit/2724680bceee94eac39... It seems to work fine everywhere, except in EC2 VPC, where the arp cache can sometime becomes stale. We too reported this issue to AWS support, but have no idea if they are doing anything about it. The workaround is to apply a sysctl change to revert to the old behavior prior to the commit. Or to use a subnet larger than /24 to reduce the chance of getting the same IP.
In When your IP traffic in AWS disappears into a black hole
"The drm/i915 driver is now mostly based on the Linux 3.8.13 implementation and is no longer similar to the FreeBSD driver. Many Linux APIs and data structures have been implemented in the DragonFly kernel in order to reuse as many parts as possible of the Linux drm/i915 code without modifications." I was wondering how did they deal with licensing issue. I thought Linux drivers are all under GPL. And DragonFly is (obviously) under BSD. Then I've noticed gpu/drm/i915 has a permissive (MIT?) license. E.g.: https://github.com/torvalds/linux/blob/master/drivers/gpu/dr... Is it true for everything else under gpu/drm directory? What license does DRM have?
In DragonFly BSD 4.0 released
I think it's worth noting that a pretty big percentage of the if's in the kernel are one line. I'm not particularly tied to one opinion or the other, I'll do whatever fits with the project (Though I do tend to use the one line if syntax for personal projects). But, I personally like them in the kernel's source simply because one line if's are so common and mostly encouraged. IMO, a better solution is to use a context-aware patch system, rather then line-based patches. That brings it's own set of problems though unfortunately. That said, I think the argument does apply in that some pieces of the kernel don't strictly follow the kernel style, and the fact that braces aren't enforced leads to some uglier pieces of code [0] being allowed despite not strictly adhering to the style. [0] https://github.com/torvalds/linux/blob/master/kernel/group
Read the rest
In Linux kernel coding style
The kernel has a perl script called 'checkpatch.pl'[0] which can check if code is formatted correctly. The Kernel coding style isn't actually enforced 100% though, which makes it a bit more iffy. Not all the code in the kernel actually follows the same style (IIRC, there's at least one sub-system that uses a slightly different style, I think 'net' maybe?), and so 'checkpatch' is recommended but may not be the be-all end-all in every situation. [0] https://github.com/torvalds/linux/blob/master/scripts/checkp...
In Linux kernel coding style
The culture is different. The most noticeable thing is of course simply size. FreeBSD is by far the largest of the BSDs, but it is a much smaller community than Linux. That means that it is easier to get involved, easier to follow what is going on - eg look at the commit log[1] - you can follow it pretty well, vs the Linux commits where each is a large merge of a nested set of commits[2]. Sometimes small size means things can change faster, eg NetBSD has had 64 bit time_t since 2012, while 32 bit Linux still has no roadmap to fix this (the BSDs are also have a different compatibility model). Other times it of course means that less is done and things take longer. You will often hear people say the BSDs are better designed, as perhaps prioritising limited resources leads to more design, or maybe there are just fewer people who need to solv
Read the rest
e a problem fast but not so well. Including (some) userspace means that the tools are less bloated than the GNU ones which were designed pre Linux as portable tools, before the Gnu project had a kernel - remember GNU was the cathedral in the cathedral and the bazaar. [1] https://github.com/freebsd/freebsd/commits/master [2] https://github.com/torvalds/linux/commits/master
In Ask HN: Can we talk about FreeBSD vs. Linux?
Great stuff. I haven't tried figuring it out on cloud computers, but even when I have root access, turbo boost often enough seems to make precise measurements difficult. On Linux, with the exception of i7z (which he mentions) and 'turbostat' (which I usually prefer: https://github.com/torvalds/linux/blob/master/tools/power/x8...) CPU speeds are almost always reported using the nominal speed rather than the actual speed. And even those tools just report an average speed, which means the part of the program you care about might be running faster or slower than the rest. The new Haswell-EP chips even have both an additional AVX base and AVX turbo speed, and switch speed for any portion of code that uses full width vectors. As a result, his traditional solutions 2 (read the performance counters) and 3 (write a test loop) can be harder tha
Read the rest
n they sound. So while the reading the MSR's can help a lot to diagnose the issue and to reduce the error, if you really want reliable measurements, the "turn it off in the BIOS" option is the best choice. But even this can be harder than it sounds, as it seems some BIOS will lie and use it anyway. At least, I have one Dell Haswell machine to which I have root but not physical access, which i7z and turbostat show to be running Turbo Boost although the otherwise reliable on site admin swears he's checked several times that it's turned off in BIOS. It seems like it should be possible to turn Turbo Boost on or off by _writing_ to the appropriate MSR but I haven't succeeded with this yet. Is there a trick I'm missing? Has anyone else had success doing it this way? It would be nice to be able to turn it off as part of the timing routine, and then turn it back on for normal operation after.
In The Model Specific Registers of EC2
Just to expand on the timing and cost argument: When you have 10,000 tasks and about 8 cores (give or take a few) the number of context switches is very large. Switching in the kernel will happen mostly in the system call boundary of blocking IOs and require the scheduler to make a decision on what thread to wake up next and then change the running process. This can be seen in function context_switch inhttps://github.com/torvalds/linux/blob/master/kernel/sched/c... without the arch dependent components and can hardly be compared in complexity and effort to switching between 4 and 8 registers in user-space. The above still doesn't include any changes to the TLB and memory protection tables as I assume the OS optimized those away when it switched between two threads of the same program. An optimization I'm not sure that happens normally.
In Dyad: Minimal, portable async networking library for C

Showing the 15 most recent of 31 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.