Hacker News new | ask | show | jobs
by feld 3388 days ago
An OS is a kernel and userland developed together in its entirety. All the code shipped is maintained by a single responsible entity: an open source team or a company. External code is imported into the source tree and treated as if it is owned by the team. Any patches required for it to integrate cleanly are the responsibility of the OS maintainers.

A distro is a Linux kernel and a collection of open source software, typically GNU, which fulfills the needs of the userland environment. The distro maintainers are responsible for packaging and distribution. They are not responsible for maintaining the kernel or any of the userland software unless it was internally developed such as a custom installer or various glue code, maintenance scripts, etc. They do not own the libc, the kernel, the shell, any drivers, responsibility for writing security patches, or bug fixes for any code they did not originally write, etc. The distro volunteers or employees of the company in charge of producing the distro may be involved in kernel or other open source softeare development, but it is not required.

This may be an unpopular statement, but a Linux distro is not an OS.

It is a collection of open source software that tries to be compatible with all of its components. Subject matter experts of all components are usually not involved in its creation. Instead they exist spread out across the entire Linux distro ecosystem.

Does Arch Linux have an expert in the virtual memory subsystem of the kernels they ship?

Does Gentoo have an expert in the kernel random code?

Does Debian have an expert in the glibc codebase?

Does Ubuntu have an expert in the bootloader?

Does Mint Linux have an expert in the BASH code they ship?

I can say with confidence that Suse and Redhat employ experts of many areas of the kernel, glibc, systemd, filesystems, and other components, but not everything.

Does FreeBSD/Dragonfly/OpenBSD have an expert or designated owner of the filesystems they ship? Bootloaders? Libc? Kernel timekeeping code? Random? Crypto? VFS? Network stack? NIC drivers? CPU schedulers? Shells and userland utilities?

Yes they do. They're OSes, entirely maintained in-project. Just like Windows, OSX, Solaris, etc.

OpenBSD is most aggressive here, but unmaintained code usually means nobody is using it and it will be removed. Everything has an owner and is constantly being looked after. In the BSD world it would not be common for a major component to exist long term without an SME joining the project and maintaining it or replacing it.

BSDs are OSes, and are mostly independent. You cannot easily port kernel code between them because they have diverged significantly.

2 comments

This is nonsense.
Except it's not. If I hit a bug in the NFS code, who at Debian will help me? Nobody. The bug report is opened and the buck is passed upstream. Now they have to hope the upstream maintainers of the NFS code care to fix it. They might not be interested especially if the distro is shipping an older release they no longer wish to maintain.

If I hit a bug in the NFS code on FreeBSD, I open a bugzilla issue first, but get the attention of Rick Macklem. If I hit a bug in the posix shell, I contact Jamie Gritton. If I hit a bug in the VM subsystem, I want to talk to Konstantin Belousov. A weird timekeeping issue? Most likely our resident Time Lord, Poul-Henning Kamp. A C conformance issue? Presumably David Chisnall. Even our compilers have patches required for our codebases, so we have compiler maintainers. If I hit a bug I have a team of people to reach out to.

All of these people have a vested interest in bugfixes and maintaining the code within our supported releases. You do not have this luxury in the Linux world. At best you can hope you have a support contract with RedHat or someone who can pay a competent employee to figure out how to fix it if upstream refuses to get involved.

I do like those qualities in an operating system. But they're not a requirement for the label.
I maintain that System and Distribution are not compatible by definition.

Distribution: A spatial or temporal array of objects or events.

System: A group of interacting, interrelated, or interdependent elements forming a complex whole.

I admit I am not an expert in language, but I have yet to see an explanation of how these two terms mean the same thing.

> An OS is a kernel and userland developed together in its entirety.

[citation needed]?

How is a Linux distro not an OS? Isn't it the Operating System on whatever machine it's running?

If I run Ubuntu or Arch, what OS am I using?

> If I run Ubuntu or Arch, what OS am I using?

Linux.

Well, that's a kernel. I don't see why something needs to be either a distribution or an OS.

Ubuntu is an operating system. It is also a distribution of Linux.

If I'm using Debian with the Hurd kernel, is the actual OS Hurd? This makes no sense.

You are right about the kernel point however there's more to it than that.

Debian is a collection of software and configuration that's distributed for convenience. That's where the term "distro" originates. The OS would be better described as GNU/Linux (the GNU user land and Linux kernel) with "Debian" being the name for that particular set of user land defaults.

Likewise Hurd is often referred to as GNU/Hurd since it too uses the GNU user land. Debian, Arch, etc will then take the Hurd / Linux and GNU sources and add their own touches to it (package management, etc) but fundamentally Ubuntu and Arch are still the same platform at their core in a way that Ubuntu and FreeBSD is not.

I didn't agree with much of what the GP raised (particularly around issues of support), but one point he was correct about was how Debian, Arch, etc aren't the maintainers of the Linux kernel nor GNU coreutils. Sure they will contribute patches but essentially what they do is redistribute GNU/Linux with their preferred packages and configuration. Hence the term "Linux distribution".

So the TL;DR version is:

If you're running Debian you do have an OS installed. The OS might be referred to as GNU/Linux to express the GNU user land and Linux kernel. Debian is the name given to the distributed collection of programs and default configurations that's based on GNU/Linux.

You're gonna have to let the Debian people know about that. They've been calling themselves an Operating System for as long as I can remember. :-)
Now you're running Android - what OS are you using?