In many operating systems, there are two parts - the userland (user space) and kernel space. In Linux, the userland is GNU. Applications reside in the userland while the Linux kernel (and most drivers) reside in the kernel space. GNU is an open-source userland that contains many applications and utilities. The GNU Project is a programming collaboration for the GNU userland and related GNU software.
As this post* points out, these two can get out of sync very quickly and you have breaking dependencies, which restrict kernel bugs from being fixed.
*https://blog.farhan.codes/2018/06/25/linux-maintains-bugs-the-real-reason-ifconfig-on-linux-is-deprecated/
In Linus Torvalds own words - https://lkml.org/lkml/2012/12/23/75
It's a bug alright - in the kernel. How long have you been a
maintainer? And you *still* haven't learnt the first rule of kernel
maintenance?
If a change results in user programs breaking, it's a bug in the
kernel. We never EVER blame the user programs. How hard can this be to
understand?
As this post* points out, these two can get out of sync very quickly and you have breaking dependencies, which restrict kernel bugs from being fixed.
*https://blog.farhan.codes/2018/06/25/linux-maintains-bugs-the-real-reason-ifconfig-on-linux-is-deprecated/
On Linux, because the kernel and the rest of the operating system are not developed in tandem, this means updating or fixing a kernel struct would almost guarantee to break a downstream application. The only to prevent this would be to conduct regular massively coordinated updates to system utilities when the kernel changes, and properly version applications for specific kernel releases. Quite a herculean endeavor. This also explains why systemtap, one of Linux’s many answers to dtrace(1), does not work on Ubuntu.
Also, Linux can never have an equivalent of a lib80211(3) because there is no single standard library set. Even for the standard C library set, Linux has Glibc, uClibC, Dietlibc, Bionic and Musl. Rather than guessing the underlying C library implementation or falling into “dependency hell“, applications default to the most low-level implementation or their requested functionality. Some tools, such as ifconfig(8), resort to just reading from the /proc filesystem.
Linux’s solution to this problem was to create a policy of never breaking userland applications. This means userland interfaces to the Linux kernel never change under any circumstances, even if they malfunction and have known bugs. That is worth reiterating. Linux maintains known bugs – and actively refuses to fix them. In fact, if you attempt to fix them, Linus will curse at you, as manifest by this email (see below).
In Linus Torvalds own words - https://lkml.org/lkml/2012/12/23/75
From | Linus Torvalds <> |
Date | Sun, 23 Dec 2012 09:36:15 -0800 |
Subject | Re: [Regression w/ patch] Media commit causes user space to misbahave (was: Re: Linux 3.8-rc1) |
No comments:
Post a Comment