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 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 2:59:53 AM 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

91 sources
The MediaTek wifi AX platform is supported by OpenWrt master and also supported by upstream Linux including AX wifi. (MediaTek contributes a lot to upstream kernel) * MT7622 SoC (2x Cortex-A53, including 4x4 ieee80211n wifi integrated in MT7622 and supported by upstream kernel too) * MT7915 Wifi 6 (ieee80211ax) 4x4 * MT7530 5 port 1G switch (2.5G uplink) You can find this hardware in the following devices: * Linksys E8450 / Belkin RT3200 (same device just different name and color of casing) * Ubiquiti UniFi 6 LR * Also some others See here the open source wifi driver for MT7915: https://github.com/torvalds/linux/tree/master/drivers/net/wi...
In Analysis and reverse-engineering of the original Starlink router
With Linux, you can! I started this project years ago just to prove to myself that it was possible. Every Linux process interfaces through the kernel via the system call interface. It is stable and language agnostic. The interface is defined at the processor architecture level. https://github.com/torvalds/linux/blob/master/Documentation/... https://man7.org/linux/man-pages/man2/syscall.2.html Any compiler can emit this sort of code, including JIT compilers! It's possible to discard the entire C user space and rewrite everything in Rust. Would be a monumental effort but still. Note that no matter what there will be at least one C library remaining: the vDSO the kernel maps into the address space of every process. https://github.com/torvalds/linux/blob/master/Documentation/...
In liblinux: Architecture-independent access to Linux system calls
Yes! The difference is on Linux a shared library is not actually required for kernel system calls. The binary interface is stable and will not change. https://github.com/torvalds/linux/blob/master/Documentation/... On Windows and other operating systems, things such as system call numbers can and do change. There's no way to interface with the kernel without linking to vendor libraries. So on Linux you can ditch libc and write your own code. A Rust liblinux is definitely possible, I tested it. You can even have a compiler generate the system calls for you! It just needs to support the simple calling convention. No libraries necessary. I've seen a project that does just that: https://github.com/titzer/virgil
In liblinux: Architecture-independent access to Linux system calls
> semantics of "volatile" in C++ or Java But the semantics of "volatile" are completely different in C++ and Java! And I've seen lots of bugs from people assuming Java semantics for volatile in C++. In C++ land, volatile is mostly useless and sometimes harmful (see [0]). It's dangerous to use it in concurrent code and hardly ever useful for memory mapped i/o without appropriate memory barriers (which make the volatile qualifier redundant). In Java land, volatile can actually provide some useful guarantees when it comes to multithreaded uses but afaik they will usually just be turned into atomic load/store instructions so you might as well be writing atomics explicitly. And it can be debated whether "volatile" should be a type qualifier in the first place. I would argue that it's better to make load/store operations on volatile memory expl
Read the rest
icit (for those very rare cases when you need it). There is experimental support in Rust for the latter, `volatile_load` and `volatile_store` in `std::intrinsics` [1]. But still, doing volatile loads and stores in multithreaded code is hardly ever the right thing to do, at least without accompanying them with the relevant memory barriers (which are especially important on ARM CPUs). [0] https://github.com/torvalds/linux/blob/master/Documentation/... [1] https://doc.rust-lang.org/std/intrinsics/fn.volatile_store.h...
In What memory model should Rust use?
Great article, it was immensely useful in my quest to understand Linux processes. It says "Linux x86 program" but it assumes it's a hosted C program whose entry point is provided by GCC startfiles and libc. Everything after _start is specific to C. Note that _start is an arbitrary symbol and merely the linker's default value of the entry point. It can be changed to anything. The important Linux facts are: 1. _start is not a function It can't be returned from, the exit system call must be issued before execution terminates. 2. Arguments and environment are on the stack Argument count and vector can be simply popped off the stack into appropriate registers, in that order. The environment vector is located after the NULL terminator of the argument vector, or argument count + 1. The auxiliary vector is located after the NULL terminator of the
Read the rest
environment vector. No count is provided for that, so code must loop through the environment looking for the sentinel in order to find it. The auxiliary vector is really interesting. I don't usually see software making direct use of it. It contains interesting information such as CPU identifier and capabilities, page size, the location of the Linux vDSO, some random bytes, program file name, user and group IDs, among other things. https://github.com/torvalds/linux/blob/master/include/uapi/l... https://github.com/torvalds/linux/blob/master/arch/x86/inclu... https://github.com/torvalds/linux/blob/master/Documentation/... This is the data the Linux kernel passes to programs. After organizing these parameters, the program is free to do whatever it wants. The libc entry point will naturally start setting up libc. In particular, it seems to spend a lot of time setting up the init and fini insanity that's probably better off forgotten. https://blogs.oracle.com/solaris/post/init-and-fini-processi... It's not necessary. After this, you can just run your program directly. I used to develop a liblinux that illustrates all this with much simpler code: https://github.com/matheusmoreira/liblinux/blob/master/start... https://github.com/matheusmoreira/liblinux/blob/master/start... The entry point code passes the stack pointer to a C function which gathers all kernel parameters and starts the program with no further setup. I made several example programs, including one which outputs all these variables. https://github.com/matheusmoreira/liblinux/blob/master/examp... I stopped developing this because I discovered the Linux itself has a better solution that they use for their own tools: https://github.com/torvalds/linux/blob/master/tools/include/... The entry point code for all supported architectures is present as inline assembly code!
In Linux x86 program start up – How the heck do we get to main()? (2011)
I had several iterations of this in S. Fla.--first "MediaOne" 1-way cable (downlink via a General Electric Sufboard SB-1000 ISA card with uplink via modem), then an external SB-1200 which was a combination cable modem downlink and modem uplink and an ethernet gateway. Finally, they threw all that away and gave us a DOCSIS modem. I still remember what a pain it was to get that 1-way modem working on linux. I had to print the documentation out from Windows, and then reboot. On the other hand, learning how to get that driver[1] to compile and loaded as a kernel module was very educational. [1] https://github.com/torvalds/linux/blob/master/drivers/net/sb...
In SPARCbook 3000ST: The coolest 90s laptop (2019)
Here's my 30 Mbps IP over UHF/SHF system. It takes advantage of a little known driver in the Linux media subsystem that exposes the RF link as just another Ethernet interface. Although not shown in the diagram, it also works with IPv6. Of course, it's a lot more expensive to implement than the article system (and I used some Cadillac components in the test bed). Someday (when the parts shortage is over), I may productize it. https://www.w6rz.net/ofdm3.png https://github.com/torvalds/linux/blob/master/drivers/media/...
In Open IP over VHF/UHF Part 5
> That said, what I'd say here is that it's fun. Really fun. Implementing ABI compatibility requires you to understand under the hood of the kernel. > You can learn how printf(3) works. You can learn what happens before main(). Yes! It's such a wonderful experience. This is exactly what I most enjoy doing, just seeing how things work, maybe making my own version. I hope you have lots of fun. You're reimplementing Linux's kernel-userspace binary interface, right? The system call interface is stable and language agnostic, it's really nice. Some pointers for anyone who'd like to know more: https://man7.org/linux/man-pages/man2/syscalls.2.html https://man7.org/linux/man-pages/man2/syscall.2.html https://github.com/torvalds/linux/blob/master/Documentation/...
In Kerla: Monolithic kernel in Rust, aiming for Linux ABI compatibility
> But do you run a lot of software that works without glibc and other userland utilities? Yes. I made a few of these utilities for my own use. I actually started developing a Linux system call library to facillitate this but then I discovered the kernel developers themselves already made one for their own tools. https://github.com/torvalds/linux/blob/master/tools/include/... People can include this awesome header file in a freestanding C project and enjoy making 100% dependency-free Linux binaries. No C standard library cruft anywhere. It's amazing. You could boot Linux directly into one of these things just by writing init=/my/program in the kernel command line. You'd need to do some init stuff like mounting procfs and sysfs but it's totally fine. I've even seen graphical software running this way with OpenGL ES on top of kernel interfa
Read the rest
ces for mode setting and buffer management, people could even make video games that run this way. I really want to get into this.
In OK Lenovo, we need to talk

Showing the 15 most recent of 91 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.