Hacker News new | ask | show | jobs
by asiekierka 1335 days ago
The Linux kernel did not even compile on most non-GCC compilers (like LLVM) as recently as a few years ago: https://www.phoronix.com/news/Clang-Kernel-2018

Therefore, for the Linux kernel specifically, I think the only concern is whether or not GCC remains supported in addition to LLVM - as GCC and Clang are, as far as I know, the only two compilers which actually can be used to build the kernel as we speak. There's work being done on both gcc-rs and rustc_codegen_gcc to allow using GCC as a Rust backend, meaning that all platforms currently supported by the Linux kernel should be eventually capable of being supported without porting a compiler backend.

1 comments

> The Linux kernel did not even compile on most non-GCC compilers

I believe that was a feature.

non-GCC compiler, like Clang+LLVM, are (were?) considered to be open source but not Free Software (TM)

The kernel community has never been particularly interested in the whole free vs open source software debate. The leadership is mostly pragmatic people.

It’s just that Linux used GCC extensions and no one was interested in doing the work necessary to have it compile on a non-GCC compiler.

That's plainly not true as there are plenty of intra-kernel interfaces that are tagged as GPL only and if your kernel module isn't GPL you can't use said interfaces. For example, they added the GPL tag to the floating point context switch functions which broke ZFS at the time.
I don’t understand your comment. The kernel cares about its license which is indeed the GPL, yes.

But Linux didn’t go out of its way to be incompatible with ZFS out of ideology. Sun intentionally picked a license which would not be compatible. That’s why ZFS lives outside of the main tree.

The ideology that’s driving the Linux kernel development: “shared source code leads to better code, user land should never be broken” are very different from the one that led to GCC gimping itself. Generally speaking the kernel community is very technically oriented and doesn’t go out of its way to prevent things for social reasons.

The kernel devs went out of their way to label a whole bunch of kernel functions as GPL only. It's not about mainlining third party kernel modules, it's about not letting non-GPLed modules use certain functions in the kernel. This includes the fully open source OpenZFS project. It's not about CDDL / GPL incompatibilities. For OpenZFS it was some FPU context switching functions that had to be worked around when the kernel team labelled those functions as GPL only.

See: https://github.com/openzfs/zfs/issues/13042

You seem confused. There is no mysterious GPL only label in the kernel. The whole thing is licensed under the GPL v2 period. It’s just that some ABI were broken for an unrelated reason as Linux doesn’t guaranty ABI stability and OpenZFS can’t find an alternative which satisfy their dependency needs. The kernel team doesn’t care about out of tree code when making changes. It has always been the rule.
> The kernel community has never been particularly interested in the whole free vs open source software debate

that's total BS

are you telling me that Alan Cox had no involvement in the Free Software?

https://en.wikipedia.org/wiki/Alan_Cox_(computer_programmer)

> It’s just that Linux used GCC extensions and no one was interested in doing the work necessary to have it compile on a non-GCC compiler.

the GCC extensions were essential to enforce the GCC supremacy because no other non-free compiler could implement them

> are you telling me that Alan Cox had no involvement in the Free Software?

I don’t see how your statement contradicts or is even linked to mine.

The kernel community as a whole very much has little interest into the philosophical arguments surrounding open source. Apart from being convinced that sharing code is the best way to develop a kernel they have next to no active involvement in the whole charade.

See for exemple keeping GPL v2, not opposing TIVOisation, disapproving on technical merits but allowing proprietary drivers and binary blobs.

> the GCC extensions were essential to enforce the GCC supremacy because no other non-free compiler could implement them

Linux uses GCC extensions because they are handy and GCC was the compiler everyone used to compile C projects for a long time. It’s not intentionally done to promote GCC on ideological ground, something pretty much no one cares about in the kernel community.

> The kernel community as a whole very much has little interest into the philosophical arguments surrounding open source

because they didn't have to.

someone already established that it was the foundation, people like Linus Torvalds, Alan Cox, Maddog Hall and many (not too many, actually) others.

The "community" for the longest time has been a bunch of people

"is a small and well-defined group: Linus, Maddog Hall, Alan Cox, and somewhere between 6 and 12 others (varying at times)." (Steven Suson, 1999)

"Watch the linux-kernel mailing list. The "Inner Circle" becomes very obvious. People go in and out of the Circle, so a list probably isn't possible [...] I would say it includes may be 2 dozen people." (Eric Princen, 1999)

> It’s not intentionally done to promote GCC on ideological ground, something pretty much no one cares about in the kernel community.

again: you're talking at the present, I am talking about the first two decades

you may have forgotten about it, I did not.

Torvalds was never a free software zealot in the way the FSS views the movement. He seems to believe open code leads to better code but I don’t think he is against the idea of closed source. He has worked on closed source software himself if I’m not mistaken.
If course LLVM is Free Software. It’s available in the mainline Guix and Debian repositories, and its Apache license is recognized as Free by the FSF.
If it was a feature, what's the benefit?
benefit != convenience

for some at least, and it was a goal in the first two decades of the Linux kernel community

TL;DR: LLVM and Clang allow non-free (proprietary) extensions

The Clang and LLVM developers reach different conclusions from ours because they do not share our values and goals. They object to the measures we have taken to defend freedom because they see the inconvenience of them and do not recognize (or don't care about) the need for them. I would guess they describe their work as "open source" and do not talk about freedom. They have been supported by Apple, the company which hates our freedom so much that its app store for the ithings _requires_ all apps to be nonfree. (*)

The nonfree compilers that are now based on LLVM prove that I was right -- that the danger was real. If I had "opened" up GCC code for use in nonfree combinations, that would not have prevented a defeat; rather, it would have caused that defeat to occur very soon.

For GCC to be replaced by another technically superior compiler that defended freedom equally well would cause me some personal regret, but I would rejoice for the community's advance. The existence of LLVM is a terrible setback for our community precisely because it is not copylefted and can be used as the basis for nonfree compilers -- so that all contribution to LLVM directly helps proprietary software as much as it helps us.

The cause of the setback is the existence of a non-copylefted compiler that therefore becomes the base for nonfree compilers. The identity of that compiler -- whether it be LLVM, GCC, or something else -- is a secondary detail. To make GCC available for such use would be throwing in the towel. If that enables GCC to "win", the victory would be hollow, because it would not be a victory for what really matters: users' freedom.

> it was a goal in the first two decades of the Linux kernel community

do you have any evidence of that? and why are you quoting RMS while talking about development of the linux kernel?

> do you have any evidence of that?

Yeah, the fact that only few years ago Linux was finally buildable with Clang.

If you have any proof that there were other reasons besides "nobody was working on that and the Kernel was using GCC extensions not found anywhere else" I'll be willing to look at them

These debates have been going on since the mid 90s, I don't know why people still ask questions about them, it's ancient history, GCC was the de facto compiler for Linux because Linus decided so and everybody else followed.

If there was no other reason than a philosophical one (the technical one is the GCC extensions) you could have built Linux with MSVC in 1997.

Reminder: the first two decades ended 11 (ELEVEN) years ago.

We are in the fourth decade right now.

> and why are you quoting RMS while talking about development of the linux kernel?

Because Stallman was in charge of GCC and the history of GCC and Linux are almost inextricable from 1991 onwards.

> If you have any proof that there were other reasons besides "nobody was working on that and the Kernel was using GCC extensions not found anywhere else" I'll be willing to look at them

I can't cite sources, but AFAIK Linux uses GNU compiler extensions. The reason is not to lock other compilers out, it's just that some of those extensions are genuinely useful.

For something to be considered a feature, it has to be beneficial to someone. I'm not arguing that the benefit should manifest in convenience. Who benefits from the Linux kernel not being able to be compiled by a certain compiler, and how?
> For something to be considered a feature, it has to be beneficial to someone

It was beneficial to Linux, the open source and free software, as in GPL licensed, kernel.

It was beneficial to its users.

It was beneficial to the free software movement.

It wasn't beneficial to corporations, probably.

Things in fact have changed when corporate sponsored interests raised around Linux as a money maker platform. And when Apple started its war against GPLv3 (suddenly GCC was not good anymore for them) .

> Who benefits from the Linux kernel not being able to be compiled by a certain compiler, and how?

Again: the fact that Linux was not being able to be compiled by a certain compiler doesn't seem to me it hindered its ability to become the most used platform in the server space (or one of the most used).

Any counter proof?

-----

As already stated: beneficial != convenient

Going to the doctor for regular checks is not convenient, but it's beneficial for your health.

Linux remained GPL, compiled with clang or not. It didn't become possible to use Linux in a non-free way, did it?
And apple "is" vanguard/blackrock, which is msft/google/starbuck!/etc, keep that in mind.

Apple doing open source feels more like PR than anything else (they do "maintain"/"employ the main dev of" cups if I am not mistaken).

And yes, open source is not enough anymore: we need "lean" open source, and that includes the SDK (excluding de facto the ultra-complex c++ and similar).

The real hard part is, once a piece of lean open source is mostly "done", it is to resist planned obsolescence.

That said, I am a "everything in risc-v assembly" (with interpreters of high level languages written in assembly) kind of guy.