Hacker News new | ask | show | jobs
by tw04 3480 days ago
That's an interesting take... this is why Linux gaming sucks. I get the pragmatism but we also need to be realistic that they aren't going to maintain a completely separate driver for Linux when the Linux gaming market share is barely a rounding error.
4 comments

And not being able to play A-grade games is barely a rounding error in the pros and cons of why most people use Linux, especially in the workplace.
For workplace, sure. But the only reason I don't run exclusively on Mac or Linux is gaming. I've spent a lot of money and time in that ecosystem for that single reason.

There's a lot of people that care about gaming, even if you don't.

This will hardly change, back on my hard GNU/Linux days I came to realise that the gamer/demoscene culture and UNIX culture are totally opposed to each other.

The gaming and demoscene cultures don't care 1 second how much their tools cost, the openess of hardware and software tooling, rather the achieved results and getting their stuff on the hands of users, regardless how.

The GNU/Linux culture is all about the ideology of having stuff for free, replicating a desktop experience as if CDE was the epitome of UX, fulled with xterms.

Of course I am generalising and might get tons of counter examples, just noting my personal experience regarding friends and co-workers.

> The GNU/Linux culture is all about the ideology of having stuff for free

Uh, no. It's about having the freedom to fix, improve, or otherwise modify the software you use. Being free-as-in-beer happens to be a requirement for that, but it isn't the goal. Think about it this way: free software developers get paid to do work, instead of getting paid for having done work like proprietary software developers. You pay me to implement feature X, which is then released to the world for further improvement in the future.

Why should I bother to pay you, if others do the work for free to build portfolio for job interviews?
To get whichever offers the best experience? Seems like a pointless question, functionality is a large deciding factor.

When they're equivalent products there's really not much to pay for though. That should push the costly product to improve more or else lose sales.

Well, do you want the work done or not?
>the ideology of having stuff for free,

Yeah, no. Having free stuff (as in speech), yeah. Having stuff for free ? That's not the UNIX culture...

That is why there are so many successful commercial applications being sold on GNU/Linux.
If the desktop APIs break all the time and there are lots of incompatibilities between distributions, it is really hard to sell commercial applications on GNU/Linux.
And it is also why it will continue to be marginalised, and have generally shit, inconsistent UI.
I feel that any KDE distribution has a more consistent UI than the monstrosity that is windows 10 with their Metro/Ribbon/Windows 7 UIs.
consistently bloated, yeah
Lol KDE has many flaws but bloat isn't one of them, I get the feeling sometimes that the presence of several ultra-ultra-light "desktop environments" on Linux causes people to think the major ones are "bloated" when in fact they're much smaller than the DEs on Windows/OS X. FWIW "slow under certain circumstances" does not necessarily imply bloat b/c a single badly implemented feature can cause slowness but that's not the same as bloat; try enabling compositing in some old versions of Xfce (basically right after it was added, maybe Xfce 4.2?) and you'll see what I mean real quick.
It is a matter of taste, of course, but compared to Windows 8 and Windows 10, common Linux/Unix desktop environments like MATE or Xfce are very pleasant to use.
Reliable wifi and streaming video appeal to a significantly larger market than GPU-heavy video games. Having a good, easy-to-use image editor (competes with paint.NET and old versions of photoshop) and music player (competes with foobar2k et al/the surprisingly good performance of iTunes on os x) doesn't hurt.

("Do users do X often?" isn't the question; "do they get annoyed when they can't?" is the question, and hardcore gamers tend to have one computer for gaming and oftentimes other computers for other stuff; if they were even using Linux on those it'd be a paradigm shift)

Android is Linux.
No. Android is a Java based OS that happens to use Linux as a kernel.

The majority of APIs are not exposed to NDK users, only to OEMs.

Google could release lets say Android 8 with another POSIX compliant kernel and the only apps that would notice are the ones using non official APIs.

Some Linux distros are already using non-linux kernels, e.g. GNU Debian/kFreeBSD, so Debian Linux is not Linux then.

Currently, Android is released using Linux kernel, ELF executable format, POSIX API's, and so on. There is no Android/kFreeBSD, nor Android/NT.

Android games can be launched on Linux using android libraries (not all, but some works pretty well, see: http://www.shashlik.io/showcases/ ).

Linux tools can be launched on Android systems (including X based tools, if X server is running).

For most of practical purposes, Android is Linux.

Nice try playing word games.

Debian user space isn't the same thing as a kernel.

Android kernel doesn't expose the same syscalls as a standard Linux.

I am really keen in having Google replacing Linux with Magenta, then we can carry on this discussion about what Android is supposed to be.

Currently, Android can be ran at vanilla kernel: http://forum.xda-developers.com/nexus-7-2013/general/android...
A forked version of it because Google didn't want to deal with "No." from the Linux maintainers when they were massacring the kernel into mobile ready form.
My distro uses patched version of Linux kernel too. Only very few brave souls are using vanilla kernel. So what?
The point is that distro patches are trivial compared to Android patches. Your distro will continue to work fine with a vanilla kernel unless it's using an esoteric configuration, and even with esoteric configurations it's relatively easy to include necessary patches to vanilla kernel.

Compiling and using a vanilla kernel instead of the distro one is straightforward and easy job for people with basic knowledge of source building. It's not a job for "very few brave souls". The reason many people use distro kernels is because they're good enough.

OTOH any consumer Android device requires millions of loc patching to a several years old version of Linux kernel just to boot.

AFAIK, vanilla kernel improved a lot in terms of functionality, so Android can work on vanilla kernel if code will be adapted to use these new APIs instead of Android homegrown APIs. Anyway, it's open source, so anybody can use Android patches without restriction. I see no problem here. Kernel version 4.4 is fresh enough for me: https://android.googlesource.com/kernel/common/+/android-4.4... .

BTW. I'm not sure if my distro (Fedora) will work with vanilla kernel without Redhat patches. There was times when it wasn't. I compiled kernel myself with my own patches and configuration in between 2001-2008.

> AFAIK, vanilla kernel improved a lot in terms of functionality, so Android can work on vanilla kernel if code will be adapted to use these new APIs instead of Android homegrown APIs. Anyway, it's open source, so anybody can use Android patches without restriction. I see no problem here. Kernel version 4.4 is fresh enough for me: https://android.googlesource.com/kernel/common/+/android-4.4.... .

What I'm trying to tell is it being possible doesn't mean it is practically possible.

Android specific API or subsystems are one part of it, then there is device specific patches. Kernel and patches being open source makes it possible to switch to a new kernel version but I've almost never seen that exercised. Few years ago the stats were that a typical consumer phone contains millions of line of patches on top of the selected upstream kernel version. It is not feasible to rebase a typical device to use a newer kernel version, and it really shows: I've seen only few phones that got a newer kernel version than it originally shipped with, switching from an ancient kernel version to only slightly newer but ancient kernel version.

> BTW. I'm not sure if my distro (Fedora) will work with vanilla kernel without Redhat patches. There was times when it wasn't. I compiled kernel myself with my own patches and configuration in between 2001-2008.

I'm pretty sure it'll. Linus himself uses Fedora and he likes his kernel pure vanilla :)

At this point any Android device you buy is a fork of Linux.

And, frankly, if Google decided to swap out Linux for, say, DragonflyBSD, almost no-one would notice or care.

Isn't this true for desktop GNU/Linux too? I mean, last I checked, Debian kFreeBSD would be similar enough to Debian GNU/Linux as long as you don't drop to the console - the equivalent of which would be adb shell.
No, because you get full access to the OS APIs, so any application is exposed to the implementation specific behaviours of POSIX and OS specific syscalls and paths.

Where in Android, you just get Java and a tiny bit of C and C++.

Check the NDK documentation, Google provides a list of the set of APIs any NDK application is allowed to use.

Since many used to ignore that list, starting with Android 7, any app that uses unauthorised native libraries will get killed.

It's called tivoization: https://en.wikipedia.org/wiki/Tivoization .

Fork Android OSP and fix that. I'm sure that CyanogenMod will allow me to use native libraries as much as I want.

I am ok with it, as it means less C code exposed to the world.
I'm not sure of numbers but AFAIR both kfreebsd and khurd have 80% of packages in the archive and even getting to this level requires Linux compatibility hacks like procfs support
I think you mean GNU/Android.
> I get the pragmatism but we also need to be realistic

I think what you mean is "I get the idealism but you also need to be realistic." It's not pragmatic to stand your guns and ask a multi-million dollar company to change the code they submit to your open-source project.

It's not pragmatic to allow a specific vendor to dump 100k LOC in your project that you have to maintain indefinitely so their developers have an easier time writing for both Windows and Linux.

In my opinion the existing AMDGPU code isn't exactly spectacular as it is. They barely have comments or commit messages and there's a ton of duplication. Linux has issues with keeping driver contributions up to snuff as it is, without enormous vendor-specific HALs everywhere.

There's also nothing pragmatic in one-sidedly denying contributions without understanding the case that rewriting a whole business stack for a minor player makes no sense.

What I see here is (sadly, again) two groups of developers unwilling to meet halfway and understanding each others problems. Expecting AMD to support a completely separate driver just for Linux is unrealistic. Expecting a 100kLOC code dump do be accepted is unrealistic as well. I don't see anyone talking about how to get over this hurdle on lkml, I just see the single least constructive word: "No."

Meanwhile, 3D support in Linux will remain a crappy tire fire which works well only if you use a completely proprietary nVidia driver.

I've only got one true power as a maintainer, and that is to say No. The other option is I personally sit down and rewrite all the code in an acceptable manner, and merge that instead. But I've discovered I probably don't scale to that level, so again it leaves me with just the one actual power.

-Dave Airlie, in TFA.

This position is so self-defeating, I really don't know where to start.

1. There is absolutely value in rejecting bad, or even good but unmaintainable code from your codebase. How is this even an argument?

2. The 'devs' don't just all meet and then decide to blow each other off anyway, AMD is simply in a position with Steam where they want it to "just work" for most games at the lowest investment cost possible. They took a gamble and lost.

3. A updated proprietary driver is not ideal, but works better than making the OS worse. Again, not sure you can really disagree.

I feel like the LKML is the most hypocritical place I've ever seen. One one hand, we want that more people GNU/Linux which depends on the quality and performance and number of application programs that work on Linux, while on the other we seem to encourage developers to make closed source binary blobs because we keep on showing them that we aren't willing to accept code.

It is a lose-lose situation for a developer. If I write open source software, people will demand more and more from me. If I say, "screw this, I'm just gonna release a blob." they will ridicule me while ignoring the fact that I am releasing the blob only because they pushed me to. /rant

> It's not pragmatic to stand your guns and ask a multi-million dollar company to change the code they submit to your open-source project.

The maintainer explains the pragmatism explicitly:

> AMD can't threaten not to support new GPUs in upstream kernels without merging this, that is totally something you can do, and here's the thing Linux will survive, we'll piss off a bunch of people, but the Linux kernel will just keep on rolling forward, maybe at some point someone will get pissed about lacking upstream support for your HW and go write support and submit it, maybe they won't. The kernel is bigger than any of us and has standards about what is acceptable

Rejecting half-assed patches is pretty pragmatic, no matter who the author is. Maintaining standards is pragmatic because 'your open-source project' is the one that will be maintaining (refactoring/rewriting) the code in the future, not the muliti-million dollar company.

> I think what you mean is "I get the idealism but you also need to be realistic." It's not pragmatic to stand your guns and ask a multi-million dollar company to change the code they submit to your open-source project.

That has basically been Linus' Torvalds job for the last 20 years. People want to contribute to the Linux kernel to get support for the thing that they are interested in, but often the code that they are offering should not be accepted as-is, because it will make Linux as a whole that bit worse. See DBus for an example where clever people strongly put forward useful functionality, and got push-back. The end result was that they went back to the drawing board, and designed something better.

AIUI, the reason that the AMD and nVidia proprietary graphics drivers are a terrifying mass of hacks on top of hacks is trying to say yes to everything. Years later, the vendors can only move forward by setting fire to the whole lot.

Thing is, Linux was never intended to run the latest greatest desktop gaming hardware. It was intended to be an open architecture where people contribute from all around the world to make something larger then themselves.

All of these people pretty much contribute their free time to it.

If they can't make basic architectural decisions that improve the worst kinds of work (driver authorship and maintenance is awful drudgery) how can you expect them to feel any kind of ownership over their fate?

You're asking unpaid people to do the work people get paid for. Even worse, when this work just gets dumped on those unpaid people by people who are paid quite well.

Most work on Linux is paid[0]. However, asking paid people to do work that does not align with their employers interest nor the project maintainers, is on par with what you're asking.

[0] 4.5 Development statistics https://lwn.net/Articles/679289/. Just google lwn Development statistics for more.

>However, asking paid people to do work that does not align with their employers interest nor the project maintainers, is on par with what you're asking.

Oh but it is in their employers' interest. It's the price of admission for mainline. And if they want in on mainline, wether simply to harvest PR or to net a contract that demands a mainlined kernel; they have to pay it. Just another case of the well-known "cost of doing business".

In the case of AMD I believe they want to reap the benefits of mainline (that is, not having to support the breakage that comes with being out of tree) and to be able to compete better with Nvidia; since AMD is unlikely to ever develop an OpenGL implementation as good as theirs but Nvidia cannot or is unlikely to be able to open source their driver.

It might be different if AMD, Nvidia and Intel all agreed on a longer term HAL, but that isn't the case... and 100kloc is pretty huge for a single vendor.
Haha yeah, because the Linux Kernel is just another open source project.