To my friends at KDE:
I'm writing to ask you not to merge the patch from NVIDIA's Erik
Kurzinger which adds support for the EGLStreams API to KWin. There are
numerous reasons not to, both technical and political. I know that
thinking about these issues can be exhausting, and I apologise for
bothering you with them. Still, it would mean a lot to me if you read
what I have to say and gave it some thought.
<technical appeal>
This code should scare you. If I'm just reviewing this patch for C++
style and does-what-it-says-it-does factor, it passes. But I would be
an irresponsible maintainer to stop there. Here are some of the other
reasons I don't like it:
There's no free software implementation of this API to verify it
against. If you're trying to build and test KDE, this whole module is
just dead code and you have to assume it works. Anyone who wants to
refactor the APIs it uses and doesn't have an Nvidia card or doesn't
want to use the proprietary driver will just have to hope. On the other
hand, the GBM code path works for any non-NVIDIA driver. Even if NVIDIA
offered a CI platform like Intel does for its open source Mesa driver -
and they haven't - it would require round tripping to their servers to
test this code.
If you do find bugs, your only recourse is to tell NVIDIA about it. You
can't do any more research on it yourself, or collect any additional
details to include in your bug report. Is it actually a driver bug, or
just a mistaken assumption in your code? You have to ask NVIDIA and hope
they get back to you before the next KDE release.
There's no light at the end of the tunnel here. I think we can safely
conclude that NVIDIA's commitment to work on a new allocator library
was an empty promise, given that there have only been 52 commits in 3
years, the most recent of which turns a year old next week. If you merge
this, you're almost certainly stuck with it forever. Consider insisting
that NVIDIA provides and demonstrates progress on a concrete plan for
unifying the graphics stack first. Alternatively, writing an EGLStreams
implementation for even one other GPU vendor - or even nouveau - would
be an excellent way to demonstrate their good faith.
<political appeal>
Today Linux easily has the broadest support for all kinds of hardware
out of the box of any operating system available today. Do you remember
what it was like 5-10 years ago? Proprietary drivers were the bane of
our existence. Wi-Fi alone drove many of us insane. Upstream's hardline
stance on this matter is the reason that the situation has improved so
much. Every driver which has a free driver in the usptream kernel has a
stark difference in quality compared to proprietary drivers for the same
classes of hardware. A lot of these upstream drivers work so well that
we've all but forgotten about them. Improvements to upstream drivers for
any vendor lead to improvements across all vendors, and the end result
is that upstream drivers grow better with time. Proprietary drivers
instead grow stale. The upstream kernel is without a doubt the best
place for drivers.
Force NVIDIA to get with the program. They need to either contribute to
Nouveau or write an open source driver of their own. Right now they're
bullies who are trying to force the Linux ecosystem into a box which is
conveniently shaped for their proprietary code. There's no excuse for
things like withholding signed firmwares from Nouveau. Don't cave to
bullies. Supporting their bad behavior is doing your users a disservice.
NVIDIA makes upwards of 10 _billion_ dollars a year. How much of that
would it take to fund the development and maintenance of an upstream
driver? How can you tolerate that they don't?
Sure, NVIDIA is probably the most popular GPU vendor out there today.
But supporting their monopoly is only going to make it worse. Throw your
lot in with the companies that actually care about Linux. If the GPU
that happens to be installed in your workstation is making an unbiased
judgement difficult for you, I will personally buy and mail you a better
one. Consider that a standing offer for anyone who works on Linux
graphics.
<personal appeal>
What motivates you to work on KDE? Perhaps you find the project
technically fulfilling to work on. Perhaps you appreciate the work of
those who came before you to build a desktop you love, and you want to
give back to the project. Maybe you love and want to support free
software, and know that KDE represents an important piece of the free
software ecosystem. What about your personal goals? Do you want to build
a piece of software that you personally enjoy using? Do you enjoy being
able to make an impact on such a large and important project? KDE has a
great and friendly community, and perhaps you enjoy collaborating with
all of the cool people in it.
Whatever the reasons, think carefully about why you work on KDE, and on
your personal goals for the project. Consider if EGLStreams is going to
help you achieve these goals. Is NVIDIA helping you accomplish KDE's
goals, or is KDE helping NVIDIA accomplish theirs? And if it's helping
you accomplish theirs - advancing proprietary drivers and securing their
monopoloy against players who love and support Linux - are you okay with
that?
<conclusion>
The patch was written by a friendly enough guy and delivered with a
smile, but don't forget about the company behind it and what it
represents.
If you're not willing to reject it outright, here's my suggestion: make
NVIDIA maintain it out of tree for a few KDE releases. Users who really
want to install it can pull down and compile the patch themselves, and
maybe even convince their distro to include it - or just stick with X11,
which is still supported by KDE. Until then, if you make them wait, they
will show you how willing NVIDIA is to keep up their maintenance
promise. If the patch doesn't become stale, maybe they're serious.
In my opinion, rejecting it outright is the better decision, at least
until NVIDIA starts being a better citizen of Linux. You are the
stewards of KDE and if you think a different course wiser, it's your
ship to steer. I've said my bit. I appreciate your attention and
thoughtfulness.
--
Drew DeVault