Commentary: Nvidia made waves by announcing the open source of the Linux kernel driver for its GPUs, even as 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. ZDNet’s Chris Duckett has detailed why Nvidia’s open-source moment was good for Linux and good for Nvidia, but I want to address Linux developer Hector Martin’s complaint that “open source their ‘driver’ they did not” because Nvidia “moved most of [the driver smarts] to firmware and made the open source driver call into it.” Even if we accept Martin’s negative, glass half-empty take on the news (and Jens Axboe, Linux block IO subsystem maintainer, does not), there’s a more positive, glass half-full way to read it, too.
SEE: Hiring kit: Back-end Developer (TechRepublic Premium)
That more positive take is that open source isn’t easy, and companies new to open source take 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 not good. At least, not with the Linux community. You don’t earn a “single worst company we’ve ever dealt with” badge of shame from Linux creator Linus Torvalds without some cause. Given the fractious past, it’s perhaps not surprising that Michael Larabel exulted over “this super-exciting milestone that many of us have been hoping to see for many years.”
But what exactly did Nvidia open-source?
Christian Schaller, Director for Desktop, Graphics, Infotainment at Red Hat, provided a critical, objective review. But not a disinterested one. As he wrote, “[A]s the only linux vendor with a significant engineering footprint in GPUs we [Red Hat] have been working closely with Nvidia for a couple of years now trying to help prepare the ground for Nvidia moving to a model with an open source kernel driver.” This wasn’t a decision made in a day, in other words.
Nor was it a decision to open source everything. As Schaller acknowledged, “[A] big part of a modern graphics drivers are to be found in the firmware and userspace components and those are still closed source.” Martin takes time to catalog the relative size of what was open sourced and what was kept back, but for Schaller, the essential news is that “it does mean we have a Nvidia kernel driver now that will start being able to consume the GPL-only APIs in the linux kernel.” No, it doesn’t apply to older, pre-2018 Nvidia GPUs. And, yes, it’s going to take years for the impact of this decision (and its direction) to really hit home for most developers.
In all this, Martin is perhaps factually correct (“no freedom was gained, for people who care about that. The ~same amount of code is closed”), even without being correct or, at least, not optimistic, in the implications (e.g., Schaller noted that “over time it provides a pathway to radically simplify supporting Nvidia hardware.”) Those implications are that Nvidia just took a significant step toward open source, rather than away from it.
Credit for intentions
Remember Schaller’s comment that this move has been under discussion for years between Red Hat and Nvidia? If it were an easy leap for Nvidia, it would have been done after that first meeting. Hence, Axboe was insightful when he pointed out: “Did [it] aid the opening of the driver source by pushing more bits into firmware? Certainly yes, obviously.” Martin not surprisingly was expecting more of the driver to be open sourced, but Axboe is almost certainly correct to suggest that not keeping all of the code in the driver made it easier for Nvidia to take the open source step at all.
SEE: 40+ open source and Linux terms you need to know (TechRepublic Premium)
Why not open source it all? Linux graphics system contributor Timur Kristóf offered one reason: “The main concern is usually that competitors can glean “trade secrets” from open source drivers or other implementation details that the company would prefer 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 open source, the fight internally must have been colossal to keep the driver closed.
By all means, it’s fair to demand that Nvidia and other companies do more. But let’s also be empathetic to the human factors behind the scenes: fear of gifting an advantage to competitors (whether or not we believe that’s a well-founded concern), fear of open-sourcing poorly (companies regularly get excoriated by open source onlookers for not following their preferred licensing, governance models, etc.), and any number of other fears. Rather than castigate 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.