
Free user space for non-graphics drivers - ingve
https://lwn.net/SubscriberLink/821817/d2e8e5c253b68ce6/
======
pabs3
It would be nice if Linux kernel devs also had some leverage they could use to
increase the amount of open source firmware out there. There is precious
little open source firmware and most of it is hardware specific so it becomes
less useful as newer generations of hardware come out.

[https://wiki.debian.org/Firmware/Open](https://wiki.debian.org/Firmware/Open)

------
ddevault
Strong support for rejecting kernel drivers with a proprietary userspace
counterpart. Totally violates the spirit of the GPL. I was NACK to this WSL
driver, too, totally flies in the face of the rest of the Linux graphics
stack. Companies should get in the habit of talking to the kernel early, and
not just dumping a patchset over the fence and hoping we like it.

~~~
chrisseaton
Why do companies care if their driver is in the main kernel repository or not?
All that matters is if distributions ship it, which they have to if people
want their computers to work. Why don't they just say 'take it or leave it.'

~~~
g_p
Good question. The answer is that it requires you to keep your driver
maintained as a patch that applies against the kernel you want to use it on.

Every release, there's refactoring and improvements of the kernel subsystems.
They don't offer stable APIs (by design) for drivers - you need to keep it up
to date.

If you want to see this for real, try getting a "code thrown over the wall
once" type embedded device kernel tree, figure out the kernel version it
shipped on (likely ancient), and try to apply the latest patch level for that
release to it. Then resolve the inevitable issues even just applying a few
minor bug fixes.

Now if you to to update to the next major kernel version, you'll start to find
functions your driver tried to call aren't there, or have new function
definitions. You need to dig through the code to see what's changed. Over a
few major versions, you'll eventually realise this is a whole lot of bother.
If you just mainline your driver, you'll no longer need to worry about this
costly maintenance burden - it might well be a few engineers spending most of
their time on it. That quickly adds up, and suddenly mainlining starts to make
sense.

Nvidia has to keep updating their proprietary driver every release, and
presumably has a few developers doing this. I can't speak for how well it
works, as I always go for AMD, but other comments here seem to confirm
distributions will happily break Nvidia drivers because they aren't mainline
and therefore aren't tested.

~~~
tasogare
> They don't offer stable APIs (by design) for drivers

The real problem lies in this practice. Which other popular system uses this
approach? Windows, macOS but also open source alternative like FreeBSD all
have well-defined kernel API and drivers SDK. So, not providing a standard
interface but then crying for the lack of third party drivers is hypocritical:
the problem is self-inflicted.

~~~
cycloptic
This has been explained so much that there is a documentation page all about
it: [https://www.kernel.org/doc/html/latest/process/stable-api-
no...](https://www.kernel.org/doc/html/latest/process/stable-api-
nonsense.html)

No other popular system follows the same development cycle as the Linux
kernel.

~~~
g_p
Good link - there's also a clear case that "requiring" the kernel to provide
long-term stable driver API/ABIs is simply reallocating a cost towards the
benevolent open source maintainers, to allow closed-source companies
"leeching" (to use Greg K-H's words) from the kernel devs to benefit.

There's clearly a non-zero (and indeed non-trivial) cost to providing a stable
kernel driver API, and the kernel devs don't want to bear that cost, as they
feel it would hold back the kernel from evolving, improving on APIs, and
fixing security issues or other implementation bugs.

The other side of the coin is that closed driver developers want this stable
API to reduce their own development costs, but they will not follow the
"intended" workflow that reduces the ongoing maintenance cost to effectively
zero.

------
NickGerleman
How did Qualcomm get on the "naughty companies list"?

~~~
wmf
By never releasing open source drivers ever. (Not counting Atheros which was
an acquisition.)

~~~
the_pwner224
That's unfortunate. I remember 7 years ago I specifically seeked out an
Atheros-bassed WiFi card for my computer because of Linux support, and more
recently purchased a high-end router based on OpenWRT support. And a few
months ago I specifically got a $450 AMD GPU because Nvidia doesn't like free
drivers. Seems like Intel is the only option left for networking...

Qualcomm being closed source is the biggest issue with running good (user-
respecting) software on phones, since basically every single Android has a
Qualcomm processor/GPU. Samsung has some Exynos stuff but not in the USA. Only
because of that, I'm looking into the PinePhone and Librem 5, which can run
the mainline kernels.

I realize I'm far from a normal user, but the amount of ill will these
companies develop is pretty massive. Broadcom for example has been permanently
associated with 'this will be a pain in the ass to get working, and will break
your system on updates.' And when I was buying the motherboard / wifi card /
wifi router recently I immediately disqualified anything that had a Broadcom
chip or didn't specify a chip.

For consumer sales, technologically aware people like us have an amplified
impact because people trust us for recommendations. The AMD GPU purchase
doubled to $900 because I suggested it to my brother when he needed a new one
last month, even though he uses Windows. I've heard this also accredited to
the rise of services like Google & GMail; 'techies' used them and their
influence on family & friends was a big amplifier to help get users. So I
wonder why Qualcomm and Nvidia are so hostile.

~~~
eropple
_> Seems like Intel is the only option left for networking..._

Mellanox?

~~~
namibj
ConnectX4/5 drivers seem to be in my (Arch) Kernel. So, yeah, seems ok (at a
glance).

------
matheusmoreira
> There is a trend toward devices that are programmable from user space and
> the kernel is simply used as a conduit to carry proprietary code and data
> between user space and the device; only the device maker has any real view
> into what is actually happening inside it.

They just keep coming up with new ways to take away the user's control...

~~~
grawprog
Every bit of control taken away from the user is just another avenue that can
be used to make money from them. More than that though, it's a way to ensure
only select people can be creators, the rest must be delegated to consumers.

Computers as they've been for the last few decades has enabled more people to
create so many things than any other time in history. For one of the first
times in history, the last 30 years or so has allowed any single person on
this planet, with enough money for a computer to do amazing things.

But, this upsets the status quo. Businesses and I guess the 'powers' for lack
of a better word, that profited off society as it was have been threatened and
in many cases overturned in a short time.

However, they're catching up faster than the average person and through a
combination of marketing and just market control, companies are closing
hardware platforms faster than what it's taken for most people to begin to
utilize all this amazing technology.

And it's sad, I know my kids won't have the experience of booting up an atari
computer and laughing as they use their first loop to make a bunch of random
things appear on their screen over and over. They won't have that experience
cobbling computers together from spare parts and getting on the internet for
the first time and just being amazed at all the things out there. They'll
never get that feeling of really being free to do anything because they have a
computer.

As a kid, even when everything else was really shitty, being able to just turn
on a computer and do anything, whether I was supposed to or not, just really
helped me through so much and honestly, I don't know how my life would have
turned out if I couldn't have done that.

By the time I have kids and they're old enough, unless I buy some retro
computers and set it up or something, everything they end up using or seeing
will be a locked down device the sole purpose of which is to constantly track
them and market to them. The internet is corporate, sanitized, and locked away
in these little bubbles provided by platforms.

So much has been lost and slowly but surely, the ability to just pick up a
computer and create anything we want is being stripped away by hardware
vendors and these huge dominating platforms that control every aspect of the
computing experience and feel the need to profit off of and dictate everyone's
computer use.

~~~
imtringued
Why would you want to buy them a retro computer? The reality would look closer
to something like Windows S being installed on every PC and you'd have to
shell out $2000 for an expensive Windows license to be able to run unsigned
applications. Also, the raspberry pi is pretty much the epitome of giving
children access to a programmable computer.

My personal fear is that people will think that they have to explicitly decide
to invest into becoming a software developer by buying developer tools the
same way you have to invest into dedicated wood working tools to become a
carpenter.

~~~
rowanG077
It's already happening. Look at the tablet/mobile market. These devices are
easily capable of providing a development environment but it's essentially
impossible to use them like that.

The IPad Pro being the worst of the worst. It even markets itself as a "real"
computer.

------
SomaticPirate
This is the part of open-source that bugs me. There is and likely always will
be some level of politics in play. There seems to a precedent here and people
are able to get around it by who they know or their reputation in the
community.

I’ve seen similar things happen in the CNCF.

It’s understandable but still rubs me the wrong way.

~~~
monocasa
On good definition of politics is "the set of activities that are associated
with making decisions in groups, or other forms of power relations between
individuals, such as the distribution of resources."

All collaborative projects are inherently political.

~~~
TallGuyShort
But that's obviously not what people mean when they criticize something as
being "political". The negative connotations of the word include people having
double standards based on identities or group affiliations, being disingenuous
about one's actual values and motivations, abusing relationships and
partnerships to further an often hidden agenda, etc.

~~~
monocasa
Can you give examples of these hidden agendas?

Most of the time I see people complaining, it's more from 'I don't understand
why I have to abide by the community's values (plural) in order to submit code
or otherwise get free labor out of them.'

~~~
TallGuyShort
Well take, for instance, Microsoft's reputation of embrace, extend,
extinguish. That's a perfect example. I don't think they're that bad any
longer, but I used to work with a lot of Apache projects where people would
vote against committers from another company that they happened to compete
with, and have pretty flimsy explanations for why they didn't think they
belonged in the community. Or people would refuse to engage on design
discussions and then shoot down proposals - usually just on opposite sides of
some corporate competition. That's beyond free labor - it's mixing corporate
interests with community project governance, and it's contrary to what should
be the inclusive and good-willed nature of non-profit open-source projects
like that.

