Commentary: Nvidia caused a stir by announcing the open source Linux kernel driver for its GPUs, even though the company kept most of its driver code closed source. Why this is still a win.
In a classic glass half-empty/half-full moment, Nvidia released an open source kernel driver for its GPUs. Chris Duckett from ZDNet has detailed why Nvidia’s open source moment was good for Linux and good for Nvidia, but I want to talk about Linux developer Hector Martin complaint that “open source didn’t do their ‘driver'” because Nvidia “does most of [the driver smarts] to firmware and had the open source driver called in it. Even if we accept Martin’s negative, half-empty view of the news (and Jens Axboe, Linux block IO subsystem manager, does not), there is also a more positive, glass half-full way to read it.
SEE: Hiring Kit: Back-end Developer (Tech Republic Premium)
That more positive idea is that open source isn’t easy, and companies new to open source take the time to master it. Patience is required.
So what happened?
Others have written more intelligently than I can about Nvidia’s history with open source, but here’s a tl;dr: it’s no good. At least not with the Linux community. You don’t deserve a ‘worst company we’ve ever dealt with’ badge of shame from Linux creator Linus Torvalds without some cause† Given its quirky past, it’s perhaps not surprising that Michael Larabel delighted on “this super exciting milestone that many of us have been hoping to see for many years to come.”
But what precisely did nvidia open source?
Christian Schaller, Director for Desktop, Graphics, Infotainment at Red Hat, as long as a critical, objective assessment. But not uninterested. As he wrote:[A]s the only Linux vendor with a significant tech footprint in GPUs we [Red Hat] have been working closely with Nvidia for a few years now and are now trying to pave the way for Nvidia to move to an open source kernel driver model.” In other words, this was not a decision made in a day.
It wasn’t a decision to make everything open source either. As Schaller acknowledged:[A] a large portion of modern graphics drivers are found in the firmware and userspace components and are still closed source.” Maarten takes the time to catalog the relative magnitude of what was open source and what was withheld, but for Schaller the essential news is that “it means we now have an Nvidia kernel driver that can use the GPL-only APIs in the linux kernel.” No, it doesn’t apply to older Nvidia GPUs from before 2018. And yes, it will take years for the impact of this decision (and its direction) to really sink in for most developers.
In all of this, Martin may be factually right (“no freedom was won, for people who care. The ~same amount of code is closed”), even without being correct or, at least, not optimistic in the implications ( Schaller noted). for example, notes that “over time it provides a path to radically simplify support for Nvidia hardware.”) Those implications are that Nvidia has just taken an important step in the direction of open source, rather than outside of it.
Credit for intentions
Remember Schaller’s comment that this move has been up for debate for years year between Red Hat and Nvidia? If it was an easy jump for Nvidia, it would be over after that first encounter. That is why Axboe was insightful when he pointed out: “Has [it] help access the driver source by pushing more bits into the firmware? Certainly yes, clearly.” Martin unsurprisingly expected more of the driver to be open source, but Axboe is almost certainly right suggest That not keeping all the code in the driver made it easier for Nvidia to take the open source step all the way.
SEE: 40+ Open Source and Linux Terms You Should Know (Tech Republic Premium)
Why not everything open source? Linux graphics system contributor Timur Kristóf offered one reason: “The biggest concern is usually that competitors can extract “trade secrets” from open source drivers or other implementation details that the company prefers to keep secret.” We can agree or disagree that companies should have this concern, but for a company like Nvidia that has traditionally operated outside of open source, the internal struggle to keep the driver closed must have been huge.
In any case, it’s reasonable to demand that Nvidia and other companies do more. But let’s also be empathetic to the human Behind the scenes factors: fear of giving competitors an advantage (whether we consider it a well-founded concern or not), fear of poor open sourcing (companies are regularly berated by open source spectators for not following their preferred licenses, governance models, etc.), and a number of other fears. Rather than berate Nvidia for not going far enough, let’s celebrate how far it’s come.
Disclosure: I work for MongoDB, but the views expressed herein are mine†