158 comments

[ 3.4 ms ] story [ 193 ms ] thread
KWin developers decided not to play this game either and just ignore EGLStreams[1]. Gnome on the other hand budged and implemented an extra path.

The main point that Martin made back then:

> Overall we are not thrilled by the prospect of two competing implementations. We do hope that at XDC the discussions will have a positive end and that there will be only one implementation. I don't care which one, I don't care whether one is better as the other. What I care about is only requiring one code path, the possibility to test with free drivers (Mesa) and the support for atomic mode settings. Ideally I would also prefer to not have to adjust existing code.

KWin though has the benefit of supporting X11 which Nvidia blob users can rely on. Wayland only compositors are really in a tough spot, until this mess is resolved.

1. https://blog.martin-graesslin.com/blog/2016/09/to-eglstream-...

I'm sure you're aware that they started a new open-source project for buffer allocation? gbm has some major design flaws which makes it not that great for most drivers and they have been trying to suggest alternatives.

https://lists.freedesktop.org/archives/dri-devel/2016-Octobe... https://github.com/cubanismo/allocator

It's good to see there is some progress to resolve this mess.
Author here. I should probably mention this, I'll add some information. It's not all roses here, either, for what it's worth.
> Edit: It’s worth noting that Nvidia is evidently attempting to find a better path with this new GitHub project. I hope it works out, but they aren’t really cooperating much with anyone to build it - particularly nouveau. It’s more throwing code/blobs over the wall and expecting everyone to change for them.

This is far from the truth. This is a piece of code that everybody has wanted for the longest time (surface allocation is far from a solved problem), the solution was discussed with the nouveau developers at XDC2016 and XDC2017. People from ARM and Red Hat have both contributed to the project.

https://www.x.org/wiki/Events/XDC2016/Program/jones_unix_dev... https://www.x.org/wiki/Events/XDC2017/Program/#james_jones

I dont disagree with this article, however its articles with this strong language and "better than you" attitude that gives linux a bad name.
I'm angrier about this than I would normally be because I have to deal with entitled Nvidia users all the time. If Nvidia was a crappy player and I never heard about it, I wouldn't care, but Nvidia is a crappy player and many of their users act like entitled brats who fill my inbox and IRC channel. This article is as much addressed to them as it is to Nvidia.
Speaking as someone who is recovering from his own fuckups in this realm, I'm reminded of the buddha quote about how anger hurts the person who is angry rather than what you're angry at.

Please don't take this as a criticism of you personally though, I'm just venting and worried about how I'm gonna fix a work relationship that I care about that I damaged because I was angry

Wise words. This is actually rather tempered from my first draft. It may have made sense to temper it more, but I stand by every point I said.
Just a tip. It is best to write something out, sleep on it and then revisit what you wrote the next day with a fresh mind. Hope it helps.
It's seriously amazing how much you (and many others) give to the floss community.

I do the 9-5 developer thing and enjoy it very much, but I would probably lose my shit if I constantly had random strangers emailing me on my personal accounts demanding help.

I joke to myself that I would be the worst floss maintainer in the world and immediately reply to every feature request with an hourly charge out rate.

A surprising number of Nvidia users seem to live in an alternate universe where Nvidia GPUs are self-evidently the only "serious" option and only an idiot would bother with anything else. In their case I think they might honestly believe that Nvidia is the 800-pound gorilla in the GPU market, to the point of everything else being on the margins. Perhaps it simply doesn't even occur to them that Nvidia could ever resemble an annoying rump faction more than a glorious leader.
Unfortunately AMD gpus are not supported on OSX, so if you want to dual boot OSX/linux you are forced to chose nvidia because of Apple.
Wondering if you could clarify what you mean here? All current Macs that have discrete graphics use AMD GPUs, so they are definitely supported by macOS - or are you talking about Hackintoshes?
I’ve got six Macs sitting within arm reach that disagree with you. Heck, my desktop Mac Pro has both Nvidia and AMD GPUs and both run without issue.
You mean Hackintosh?
You're pretty much angry in every one of your post. It's kind of ironic that you state Nvidia users act entitled, your post come off as though you are better than every one else and that the rest of the world is wrong if they don't agree with you. While it sucks that Nvidia is not fully supportive of Linux or Wayland, this seems like the least productive way of getting them to do the right thing.

Telling people they are wrong, or idiots, or entitled, is probably the quickest way to alienate them and lose all support instead of gaining it.

Bottom line, just admit it, you hate anything that is not 100% open source, which is your opinion and right to do, but that doesn't make it the only option and if Nvidia provided a solution that allows you to work with their GPUs, it is you that is wrong here. They are the bigger fish, thus they get to eat you or at least push you around. Basic life lesson.

You would have been much better off writing an article simply asking for a few passionate Nvidia user that wish to take over Nvidia support if they would like to see it continue to work in Sway. Instead, you write an article that alienates the entire user base. That's a pretty shitty thing to do and a reason people seem so unwilling to work with a lot of FOSS maintainers, because the truth is, they act like the entitled ones, as your article clearly does about you.

The guy is super angry, it doesn't matter what you say. Even if he had used different tone, I doubt he would ever accept the Nvidia support into sway.
NVIDIA repeats the exact same terrible behavior with Linux stuff over and over again (as the article put it, "throwing code/blobs over the wall and expecting everyone to change for them") and IMO they deserve large amounts of angry public criticism over it until they stop.
Because of the rapid Mesa progress, Nvidia will suffer gradual decline of the Linux user base as time will go on. I'm not sure if they care enough to do anything about it though. Potential setbacks in CUDA usage can bite them more, but for that Khronos need to ramp up their effort of Vulkan based CL-next[1] or whatever it will be called.

1. http://hexus.net/tech/news/software/105895-vulkan-opencl-wil...

I kind of sympathise with NVIDIA in all this; they've got a very tiny and very vocal market share that behaves very very differently from their main customer base.

With Windows users NVIDIA know that they want pretty games and they want them prettier very year, and they also know that Microsoft is probably going to work with them to make that happen. They've also got game developers and hardware vendors lining up to get NVIDIA logos on their products.

Whereas in Linuxland, they've got a kernel, a billion side-projects that may or may not be widely used and they all want NVIDIA to conform the THEIR way of doing things, an angry Finnish gentleman who just shouts and swears at things he doesn't like, and a largely non-gaming and very fragmented user base that could be using any number of desktop environments/kernel versions/drivers etc. On top of all that, this menagerie only accounts for about 3.8% of the desktop market. And they're also kicking and screaming that NVIDIA isn't doing enough to support the things that they want to do.

Sure NVIDIA could be working faster to better support Linux by throwing more people and money at it, but they don't have to and until more people use Linux they don't really have much of an incentive to do so. They'll probably have better Linux support, eventually, and if that fits in with their business plan then that's fine. If you're a Linux user and NVIDIA doesn't do what you want it to do, then that's fine as well - vote with your wallet and buy from someone else.

> If you're a Linux user and NVIDIA doesn't do what you want it to do, then that's fine as well - vote with your wallet and buy from someone else.

That's exactly what's happening. But the other side of the coin is, that in order to switch, the other choice should be good enough. Until recently, AMD had too many downsides, that many were ready to suffer through Nvidia's problems. But that is changing now.

You can observe the trend here (it's not a big sample yet, but it's still showing the trend): https://www.gamingonlinux.com/users/statistics#trends

Note: you need to click "trends" there to display change over time.

> I kind of sympathise with NVIDIA in all this

Nvidia are toxic arseholes whose business practises are on a par with 90s Microsoft - funding games studios to deliver crippled-on-AMD games, for example. They deserve bankruptcy, not sympathy.

Whereas in Linuxland, they've got a kernel, a billion side-projects that may or may not be widely used and they all want NVIDIA to conform the THEIR way of doing things, an angry Finnish gentleman who just shouts and swears at things he doesn't like, and a largely non-gaming and very fragmented user base that could be using any number of desktop environments/kernel versions/drivers etc.

There is one big elephant in the room here that you are missing and that is GPU computing. This is probably a big market for them now (Teslas go for a couple of thousand a pop) and the vast majority of it is on Linux. Their ecosystem with CUDA and CuDNN is pretty awesome, on the other hand, their driver has issues.

At any rate, it's a market that they cannot afford to lose. As OpenCL support for e.g. machine learning libraries such as Tensorflow is progressing they may not have a lock on the market as they have now.

>As OpenCL support for e.g. machine learning libraries such as Tensorflow is progressing

I wonder if the complex OpenCL API throws off many ML developers. Also I think they tend to focus on CUDA because there is much less chance of it breaking between devices. OTOH, each vendor has their own .so for OpenCL and they usually tend to be buggy and stay a point version or two behind.

This is the explanation I tell myself when I wonder why the hell Google chose CUDA over OpenCL.

Also, on machines with mixed intel/nvidia setuos, why cant i use the intel solely for display and the nvidia soley for compute,why does the gpu have to be tied into the display system, its a pain in tbe ass. To use cuda you almost must make tbe gpu work as a display system.
You should be able to do that. You can use the Nvidia GPU in a 'headless' mode.
The issue is that on many hybrid laptops the nvidia card is wired to the display but the built in intel chipset isn't wired to the display or only wired to the HDMI port.
Well sure GPU computing is huge, and Nvidia is top of the pack in that as well. But the original post was about desktop computing, hence why I only talked to that.
You are mistaking the variety of desktops with a variety of graphics stacks (which there aren't). At the levels of the stack that nVidia work at, there are only a small number of options (sometimes one), maintained by specialist developers who work closely together, and more or less share one long-term roadmap. For example, if you do OpenGL on Linux, you use the Mesa library, and so does everybody else. If you care about protocols, X11 is the legacy standard that everybody used to work with, and Wayland is the agreed replacement. We swear at nVidia because Intel developers have been good members of the community for years, and AMD have made an effort to become constructive participants. nVidia still aren't.
> For example, if you do OpenGL on Linux, you use the Mesa library, and so does everybody else.

Nvidia has their own OpenGL implementation that replaces Mesa so if you do OpenGL on Linux with Nvidia you are not using Mesa. Which is a good thing since Mesa is lacking in terms of features compared to Nvidia's implementation.

> Mesa is lacking in terms of features compared to Nvidia's implementation

Mesa is open-source. Nvidia can submit patches at any time they want.

>Nvidia has their own OpenGL implementation that replaces Mesa so if you do OpenGL on Linux with Nvidia you are not using Mesa. Which is a good thing since Mesa is lacking in terms of features compared to Nvidia's implementation.

Ironic statement, given that the article is specifically about how Nvidia proprietary drivers are lacking in features compared to the Mesa stack.

Nvidia could be documenting their product so they wouldn't have to throw more people and money at Linux support.
Who really loses out in this scenario though?

It sure as hell isn't going to be Nvidia who hold all the cards as far as CUDA based computing goes.

People who want to use this tech will go where the tech is, people even switch away from Mac to Windows to access this tech.

"It is better to be violent, if there is violence in our hearts, than to put on the cloak of nonviolence to cover impotence."

- Mahatma Gandhi

I think it's extremely important to express our dissatisfaction with nVidia, and strong language makes the point across. Sometimes people don't take your complaints seriously if you're too polite; (maybe because politeness signals impotence?)

(comment deleted)
If I want to play games on Linux in the same quality/speed as on Windows, I have to use NVidia. If I want to do Deep Learning in Linux, I have to use NVidia. If I want to plug 3x 4k monitors on Linux, I have to use NVidia. If you can't come to agreement with them, what am I supposed to do?
You just play games at marginally inferior quality. Our new work on Sway also will let you use multiple GPUs without any proprietary interfaces, so you can do 3x 4K on AMD too. Regarding Deep Learning, that's too bad. If you can afford a 3x 4K setup though you can probably afford to have a Nvidia GPU for Deep Learning and an AMD GPU for your desktop.

There are compromises you can make, most of them easy. None of this is my problem as the maintainer of Sway.

> None of this is my problem as the maintainer of Sway

So, in short, you're firing your Nvidia users? Sometimes it has to be done, but you'll have to be very clear that you don't want Nvidia users.

Passive-aggressive attacks in an indirectly linked blog post against the userbase and Nvidia themselves are not sufficient, you will have to just be explicit about it in your GitHub README.

Well, I'm firing my Nvidia proprietary driver users. Really, I never "hired" them in the first place. The ones who use nouveau are cool in my book. I don't feel the need to call this out in the README.

Also, this article contains pretty forwardly agressive attacks, I think.

Your users (those with 4 x 30" monitors like me) will be firing you as well. It isn't my fault that Nvidia makes superior GPUs and writes shit software :)
I use 4 displays, 3x 1080p and 1x 4K. I'm happy to lose users who don't do their research and misportray the superiority of Nvidia, though.
I do CUDA work (OpenCL is close, but not nearly as powerful) along with run big monitors. I've done my research, and there is Nvidia, and inferior options.
(comment deleted)
How does using Vulkan for GPGPU today compare to using CUDA, I mean performance wise?
Depends on how you value Wayland support.

That said, if I were Nvidia, and the post was an example of "cooperating" and "working" with the Wayland developers, I don't think I'd go out of my way to cooperate.

You can swap "Nvidia" and "Wayland developers" and still end up with an equally valid argument.
How so? The Wayland developers are pushing for open, unified standards that work across all chipsets. Nvidia is pushing for their own special snowflake implementation/interface, that no one else would or could use.

You can certainly make the swap and the sentence still makes sense and is factually correct, but the context matters.

I think he means that

>That said, if I were (the Wayland developers), and (witnessed how Nvidia is) "cooperating" and "working" with (us), I don't think I'd go out of my way to cooperate.

Is also a valid point.

Gah, I read it as the opposite, even though that was what the grandparent had already stated.
>I do CUDA work (OpenCL is close, but not nearly as powerful)

Do you mean cuda as a language v/s the latest opencl spec as a language, or implementations ? No one other than Intel is even implementing and updating OpenCL really, and nvidia will always push CUDA over opencl for lock ins. Which is kind of the same thing as every other argument that you can make for nvidia.

A friend of mine is doing heavy CUDA work at the Helmholtz research center in Dresden, and at the same time he's desperately waiting for AMD Vega cards to be in stock somewhere so that he can build a desktop without shitty drivers.
Reference Vega cards are available in stock. Check mindfactory.de for example.
Yeah, but the reference coolers are apparently not very good. Yesterday evening, my friend was pondering if he could remove the reference cooler and install an aftermarket CPU cooler.
>you're fired.

>nu-uh, I quit!

>Well, I'm firing my Nvidia proprietary driver users. Really, I never "hired" them in the first place. The ones who use nouveau are cool in my book. I don't feel the need to call this out in the README.

Upon thinking about this, it's kind of like listing dependencies. I think you should make it clear in the README. I don't think the blog post is relevant in this context, as people likely won't read your blog post before installing Sway (and how would they know to do so, anyway?).

Shouldn't it be Nvidia who needs to write it in their README? It's them who are incompatible with everything else, not Sway or Kwin.
> If I want to play games on Linux in the same quality/speed as on Windows, I have to use NVidia.

Not anymore. AMD/Mesa are already competitive enough, and are getting better fast. I was using Nvidia myself as well, until around the time Polaris cards came out, and Mesa was bumped to 17.x. That's when things really started to get good with AMD.

And in the overall integration sense, it's like night and day. Nvidia is never going to reach it with their blob approach. Seamless upgrades, proper framebuffer, proper KMS/DRM, no constant screen tearing, Wayland support, GALLIUM_HUD, you name it. I wouldn't go back to Nvidia now (and I do all my gaming on Linux).

> If I want to do Deep Learning in Linux, I have to use NVidia.

Why is that? What prevents you from using open APIs like Vulkan for GPGPU? Unless you rely on some CUDA only middleware of course.

CUDA has a strong grasp on a lot of the scientific market because Nvidia was ahead of the curve with CUDA initially and then has spent tons of money advertising and selling it to entrench it. To some degree it's a dev's own fault for getting sucked into a proprietary ecosystem, but ultimately "switch your code to something else" is not always a realistic option if you want to keep up with a community where CUDA is popular.

CUDA is not as dominant as it was at first now that there are serious alternatives, but Nvidia works hard (both carrot and stick) to keep you locked in. And their hardware and software tools genuinely do have great performance, even if they should be better if Nvidia was a bit less... well evil honestly.

Yeah, that's very Nvidia-like. Hopefully Vulkan based solutions will phase out CUDA lock-in in the future.
There is a huge amount of CUDA middleware while there is very little for OpenCL. In the case of deep learning, there's cuDNN which is highly optimized and used by all major frameworks. AMD has promised something equivalent, but a first version is very unlikely to have the same scope and features. (Nvidia probably does a large amount of dog fooding given their deep learning based automobile efforts.)

Using anything but Nvidia for deep learning is a great idea if you want to get noticed for not using Nvidia for deep learning, but it wouldn't be the smart thing to do if you want to actually get something done.

With regards to Deep Learning, a recently released Keras backend[0] actually supports OpenCL with direct validation on a few AMD cards. I've been playing around with it for the past week or so and so far have had no issues with it, though I'm admittedly not doing anything too serious.

0. https://github.com/plaidml/plaidml

For deep learning I can't specifically comment, but for GPGPU I can: give AMD your money and use OpenCL and the upcoming Vulkan.

It worked great for me, and given Nvidia deliberately de-rate their support for OpenCL to push CUDA, I feel it's important to signal with your money that given the choice between flexible and open standards vs. proprietary, I'll support openness.

From TFA:

> When people complain to me about the lack of Nvidia support in Sway, I get really pissed off. It is not my fucking problem to support Nvidia, it’s Nvidia’s fucking problem to support me. Even Broadcom, fucking Broadcom, supports the appropriate kernel APIs. And proprietary driver users have the gall to reward Nvidia for their behavior by giving them hundreds of dollars for their GPUs, then come to me and ask me to deal with their bullshit for free. Well, fuck you, too. Nvidia users are shitty consumers and I don’t even want them in my userbase. Choose hardware that supports your software, not the other way around.

Now, contrast with [1]:

> I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.

[1] https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost...

Author here. You know Microsoft engineers were paid 6 figure salaries to work on that, right? I have a Patreon where I make enough money to recoup half of the costs of maintaining these projects.
"I'm doing it as volunteer" is not an excuse for being unprofessional.
It is an excellent excuse for not devoting a huge amount of time and effort to fixing other people's stuff, though.
Wasn't aware that disassembling other people's broken code in your own free time for their benefit was a key part of being """professional""".
It isn't, but being a professional does suggest a basic level of respectfulness and composure. Going on a profanity-laden rant against a popular vendor and its users would seem to fall short of that.

On the other hand, a polite refusal to support EGLStreams may not have moved the needle enough to reach the front page of HN.

You know, I'm tired of being respectful and composed while others are walking all over me. If Nvidia doesn't care enough about the OS I bought their card for, fuck them, they suck, and I'm not buying another one of their cards again. I'm tired of being polite and not rocking the boat while I'm being taken advantage of.
It's one thing to be a jerk to Nvidia, which seems justifiable. It's another thing to be a jerk to Nvidia users who may simply be unaware of the harm their GPU vendor has done.
Is he being a jerk because he doesn't want to do a bunch of unpaid work? If your car manufacturer doesn't want to fix your broken car, am I a jerk for not doing it for them?
No, but you are a jerk if you tell people who want to use your software to "fuck off" or buy a different car.
Did he tell the people that? Or Nvidia? I must have missed it, if it was the former.
(comment deleted)
And proprietary driver users have the gall to reward Nvidia for their behavior by giving them hundreds of dollars for their GPUs, then come to me and ask me to deal with their bullshit for free. Well, fuck you, too. Nvidia users are shitty consumers and I don’t even want them in my userbase.
(comment deleted)
I think it's perfectly understandable (and perhaps even useful) to lose your composure when you have a bunch of users who act entitled and complain about your (free) software being "broken", when it's the fault of their GPU vendor, who makes a ton of money off their user base.
It seems like a big problem for the Wayland ecosystem that support for a large category of video cards depends on one volunteer.
It doesn't. Support for that large category of video cards depends on the manufacturer of those video cards.
>support for a large category of video cards depends on one volunteer.

How did you come to that conclusion? SirCmpwn doesn't maintain Wayland Nvidia support, just the Sway Compositor. If you want a Wayland compositor that supports Nvidia-proprietary, you can use GNOME.

The last time Sway came up as a topic at HN there was a conversation about whether a particular terminal manager was compatible with it yet. It seems to me that if the applications you use can have compatibility issues with the compositor you use, if you want to use an application your choice of compositors will be necessarily restrained to those that are compatible. And if compositors can be compatible or incompatible with particular hardware, that means that it's possible to have an application you want to use that is only compatible with compositors that are incompatible with your hardware.

What am I missing?

(comment deleted)
Not being paid for something is pretty much the literal definition of not being a professional.
So you define volunteers as unprofessional by definition. That doens't sound right.
(comment deleted)
It is an off handed snark based on the not terribly subtle difference between "not a professional" and "unprofessional" which I feel perfectly validated making because Sway isn't a volunteer effort, it is an (un|insufficiently) paid effort, which is also not a very subtle difference.
I would expect professionalism from someone I'm paying. I don't expect professionalism from someone who's basically giving me free stuff.

If someone offers to paint your fence for free, and your fence has some really nasty angles at some point, would you say the volunteer was unprofessional if they said "yeah I'm not going to paint that part"?

There is a certain level of just being a decent human being though. If I am an unpaid pastor of a church, should I give crappy sermons?
In what way is Sir_Cmpwn's work "crappy"?

Guess what: if you ask your local Catholic priest to give sermons for your weird sect, he'll probably refuse too. And if lots of people keep insisting, it's not surprising he gets annoyed.

> I don't expect professionalism from someone who's basically giving me free stuff.

Ironically, that's exactly what Microsoft has been saying about Linux during those bad old days. Linux was successful because its developers didn't say "If you want to talk to a professional, buy something else."

I'm not saying an OSS developer should bend over and take abuse from users. But I believe there's a line between that and calling users "entitled brats" just because they use vendor-supplied drivers for their $500 cards.

No, he's calling his users "entitled brats" because they come into his channel and bitch and whine and demand he support them... for free.
After the post and all his comments here I have my doubts that "bitch and whine" isn't actually "people ask me questions, I realize that they use Nvidia so their questions are by definition whining and bitching."
You're certainly entitled to your opinion, but as someone who has actually maintained widely-used open source software, you'd likely be shocked at the level of entitlement I've encountered among OSS users.
(comment deleted)
>Ironically, that's exactly what Microsoft has been saying about Linux during those bad old days. Linux was successful because its developers didn't say "If you want to talk to a professional, buy something else."

Except, the reason why Microsoft was wrong was that Red Hat existed. If you're running CentOS or Arch Linux or something, you really are fucked as a business. The key distinction here is that SirCmpwn is not a Red Hat dev, so should not be expected to meet the responsibilities of one.

> I don't expect professionalism from someone who's basically giving me free stuff.

That's weird. Professionalism should be expected in all aspects of life. That's basic human respect.

SirCmpwn has a patreon. If you feel the need to help pay for him to develop a feature, you can. He can't maintain everything especially with the hardware working against him.

https://www.patreon.com/sircmpwn

That is some heavy BS logic.
By that logic, I hope you cook only professional-grade food, and exercise like a professional athlete.
this pattern of a platform dev special casing in their product for specific games still goes on today, but by Nvidia and AMD. When a new, giant game comes out, nine times out of ten the developers did some depraved stuff with directx/opengl that worked on whatever few cards they actually tested on. When the game gets released (or sometimes as a prerelease), Nvidia/AMD will go through what the new game does on their hardware, find any hackey/unexpected/bad call to their drivers made by the game, fix these problems in their drivers for these specific games, and release new drivers a few days after the game releases. You could buy a $60 game on launch that is broken from the AAA developer and have to wait days to weeks on a patch from Nvidia to play with any playable framereate/graphics in general.

I believe I read about this phenomenon here https://www.gamedev.net/forums/topic/666419-what-are-your-op...

Can someone ELI5 why one would want sway vs just using i3?
Sway uses Wayland, which is shiny and new and fast.

i3 uses X11, which is old and crusty and not particularly fast.

But apparently a big difference between X11 and Wayland is that people implementing X11 window managers don't have to go out of their way to support particular graphics hardware. I have never in almost two decades of using X11 on Linux found myself worrying about whether my window manager supported my graphics card.
That's because X11 is a standard, running on a stack of other standards (DRM, KMS, etc.).

Wayland is also a standard, that should be running on a stack of other standards (DRM, GBM, etc.), but then Nvidia comes along and goes "Fuck GBM. I'll make my own, incompatible "standard"".

No, that is because X servers only provide the mechanism (window system, graphics, events, input, etc) but not the policy while providing functionality for the clients to provide that policy themselves. So a window manager can be made with and rely only to functionality provided by X11.

On Wayland the "window manager" (compositor) has to provide both the mechanism and the policy.

Sway [1] is a tiling Wayland [2] compositor [3], in case anyone was lacking context.

[1]: http://swaywm.org/

[2]: https://en.wikipedia.org/wiki/Wayland_(display_server_protoc...

[3]: https://en.wikipedia.org/wiki/Compositing_window_manager

Why does a window manager developer have to support specific graphics hardware in Wayland? Isn't abstracting away that kind of detail the first responsibility of a windowing system and/or framebuffer manager?
As GP has written: sway is a compositor not a window manager. Wayland compositors are like X11 server + X11 window manager. They use kernel interfaces directly.
Where Wayland is concerned, the compositor is the Wayland implementation.
Wayland does not have the "window manager" concept. The compositor (which, for the lack of a better term, well, composites windows) implements the display server protocol as well. It creates and hands off surfaces to the clients, and those clients directly render their contents there. So it's somewhat akin to a window manager + some display server parts.

(Note: I have written very little Wayland-related code, and quite some time ago, so do not put too much faith in the explanation below).

Managing device-accessible surfaces is very obviously hardware-specific, so it was abstracted behind a number of mechanisms. One of these is the GBM API, which is implemented (classically) by everyone except NVIDIA, and is the API that sway is going to use.

NVIDIA's proprietary drivers do not support GBM, and NVIDIA is pushing for its own solution called EGLStream. EGLStream does solve several problems that GBM has, but it seems to me that what makes it most attractive to NVIDIA is that it is theirs (it is an open standard but has only one serious commercial implementation, on a single vendor's devices, so at this point it might as well be closed). If you are curious, there is a wider discussion on the topic here: https://lwn.net/Articles/703749/ .

This is very useful context, thanks. I hope things standardize quickly, because having to worry about whether your terminal emulator is compatible with your desktop environment is compatible with your graphics card and kernel seems like it'd be a huge step backward for the Linux desktop. Xorg has been something I haven't had to even think about for the better part of a decade now, and that's the way it should be.
That's exactly what they're doing. It's wlroots, the compositor that sway is built on that won't support Nvidia.
Yeah NVIDIA's market share makes me sad. AMD seems to have become a much better team player last I checked.
There's also the new external imaage/fence and semaphore support in Vulkan. Which looks like it perform the parts done by gbm without referencing gbm explicitly.

Last I checked it was only in a mesa dev version. But it would be a standard hopefully everyone using Vulkan can support

In my early stages of learning to program, I had numerous issues with running Linux desktop on my Nvidia chipped laptop. I remember the frustration very clearly - I hardly slept for ~3 days trying to fix my broken Ubuntu installation and I was unable to continue with my programming exercises. I couldn't afford a new laptop, much less a MacBook, and Windows didn't support bash, nor did Windows have the community support that I needed. My feeling of failure in getting my machine to run was demoralizing, so much so that I considered quitting my pursuit of an IT career.

As painful as it was, I managed to get my machine working. But it led me to never trust an Nvidia chip for my Linux desktop ever again. I wish I had documented the insane finagling I had to perform just to get my machine in a workable state. Maybe a year later, I encountered another Nvidia issue on my Ubuntu laptop, and I posted my notes on a blog: http://www.lukeswart.net/2014/05/nvidia-optimus-with-bumbleb... I wonder how many aspiring computer professionals have quit because of the barrier in getting a Linux desktop to run smoothly.

I am indebted to the community members who devote their time and expertise online to help Linux desktop users. Even if they can be a little snarky :-) If someone is learning to program and only has a hand-me-down laptop with an Nvidia gpu, then a Linux desktop may be the only reasonable option. I just hope this can be more accessible. But as the author points out, Nvidia is only making this problem worse.

I worked at a company that exclusively used Linux desktops (we were effectively a team of remote Linux tech support/sysadmins).

Every week or two I'd reboot my machine for whatever reason, and it would boot load a minor point release kernel update,and X would fail, and I'd have to go manually recompile the nvidia drivers for my kernel and then I could start X again and then I could get back to work. It was one of those things that would add twenty minutes to your workday for no really good reason other than Dell had shipped nvidia chips.

This was made doubly frustrating for a coworker who had a habit of bumping into her computer and hitting the power button with her foot (a giant, easy-to-hit target right in the centre of it). It would reboot and, surprise, go rebuild your kernel module so you can use X, while you're in the middle of helping a hospital get the x-rays of a patient so they can get him into emergency surgery.

Personally, I got used to it. I'd reboot intentionally every however often so that I could deal with it on my own terms, but it was such a hassle that I always wished for an AMD or Matrox card so I wouldn't have to deal with their BS.

If you installed the driver with DMKS it should rebuild it for you automatically whenever you update the kernel.
DKMS is a relevantly relevantly development in the decades of pain nvidia has inflicted on linux users.
> relevantly relevantly

"relatively recent"?

...yes. lost a battle with autocorrect after a few beers.
Well that is weird. I built a desktop back in 2008 and fitted it with a Nvidia 9800GT. Installed Debian, then installed the nvidia-driver[0] package. That comes with the DKMS package[1] which builds the source and auto installs the module (and does this also for any new kernel update). Literally never had a problem. Don't think suspend ever worked, but this is a desktop so I didn't care. Also built a machine for my grandma back in 2008, went with the Debian and nvidia combo again. She's still using it, no problem.

I think the current issue with nvidia is they are refusing to support the new wayland stuff and ditch X server. In that case, I've got my eye on an ATI RX460.

[0] https://packages.debian.org/stretch/nvidia-driver [1] https://packages.debian.org/stretch/nvidia-kernel-dkms

I've been using Nvidia cards since the Geforce 4, and I've never had any noteworthy issues, aside from a buggy version here and there (easily fixed with a rollback to the previous version.)

However, for laptops and any other machine where graphics power is not a high priority, I just stick with basic integrated graphics, they do seem to behave better in regards to suspend and other power management.

ha.

Had all those same problems with an ATI-chipped laptop.

Your problems were not nvidia-specific.

Also: Windows has supported bash for a very long time - under Cygwin. (also Cygwin used to have pretty decent community support, back in the 1990's).

I'll say this also: Ubuntu is probably the EASIEST distro to get into a working state; with either Nvidia or ATI. (the proprietary drivers have their warts - but the worst are in their installers) ... (as long as you aren't itching to get special features working, like power management, or switching, etc - those things DO work, and CAN be made to work, with given chipsets, and kernels, and driver revs - if you're smart, and lucky... for the rest of us, there's the open source drivers, which are generally pretty good, and have gotten MUCH better over the past 10 years).

There's also Msys/GnuWin which is of similar age to Cygwin and avoids some of the interoperability issues Cygwin apps have.
I have been using ubuntu daily for the past 7 years with very few issues.

If you can buy a laptop that is known to work that is best. If you have existing hardware then it is sort of a crapshoot.

Desktop is easier. Just stick to intel (CPU, iGPU, ethernet, and wireless) and you will have no problems at all, and even with some realtek and broadcom stuff thrown in it usually works.

Well, it depends on how long ago it was.

When I went to engineering school I used Nvidia with linux and worked flawlessly. It was the best vendor by far, because they needed to support Linux for Pixar and other guys.

Now it is the other way around, basically because of Nvidia success. They have a monopoly on practice and could do whatever they want.

They only care about Windows. We have Vulkan, Metal, OpenGL and DirectX backends for our software. We only debug in DirectX with Nvidia because it is the only thing they support well.

If we could get rid of Nvidia for most of what we do, like Apple did, we will without a doubt.

Nvidia Optimus was (and perhaps still is, i never updated on that) the only issue i had with Nvidia and Linux the last 15 years that i have Nvidia GPUs. I've used Nvidia on all my machines and always boughts Nvidia GPUs because of their excellent OpenGL support and drivers.

So you probably was just unlucky and ended up in the only fully unsupported case that has happened with Nvidia and Linux in the last decade (at least as far as consumer GPUs are concerned anyway). I did the same and i was annoyed by Nvidia, but after searching a bit i learned that they did try to support Optimus on Linux initially, but some developer refused to allow them use some symbols (or something, i'm not 100% into kernel development) in his code under a license that was compatible with their driver. So they dropped it.

I think they did something with Bumblebee some time later, but last time i used Bumblebee was incredible slow compared to Windows (whereas in my other machines Linux and Windows have the same performance in OpenGL) so i never tried that myself. That laptop remained a Windows-only machine.

But yeah, beyond that for me Nvidia was always pretty much the only choice exactly because of their Linux support. Although i might consider AMD at some point if Mesa implements GL_ARB_compatibility and compatibility profilers properly (i used to think this wont happen, but AFAIK there was recently some work towards the former, so who knows).

I ran into issues with Nvidia graphic cards. Whereas, When I put in the AMD card and installed the firmware package (firmware-linux-nonfree in Debian), everything worked and no issues on upgrades.

Now, for GL compatibility profiles, if they cause problems, are obsolete and intentionally not supported, better we are off.

It is infuriating that anyone finds this to not be appropriate. Nvidia is the one that sells products and doesn't bother to care enough for their Linux users to work with the community. If you want Nvidia proprietary driver to work with Sway complain to Nvidia for how they've handled their driver for Linux for years.

We need more projects to do what Sway and Kwin have done.

I bought a Lenovo Thinkpad W520 back in 2012. This laptop has an NVIDIA Optimus chipset, and for 4 years, I attempted to get triple-head support working under Linux (outputting to the laptop screen, and two monitors). Finally, in 2016, I was able to install the NVIDIA proprietary drivers through apt on ubuntu 16.04, and everything worked, including triple-head support.

Overall, all the hardware in the laptop is now working perfectly, and has been extremely stable. It took a long time, but I'm glad it's finally working using the proprietary drivers. Unfortunately, I haven't gotten this to work yet using nouveau. I'm currently running Mate and XMonad on X, and I have a feeling it's going to be a few more years before I will be able to run Wayland on this machine.

I have exactly opposite experience. All my computers used to had ATI cards. I forgot the exact issues I had, but I remember reading all those issue FAQs basically saying buy Nvidia to solve your problem. I was always jealous to Nvidia owners for their Linux support, to then point I actually bought Nvidia. I didn't experienced any problems with Linux since then. I wonder when situation reverted being ATI better? And why I always have to be on the wrong side when choosing graphic card.
The situation is annoying. Up until recently, when you wanted high performance drivers for Linux you needed an AMD or NVIDIA card with proprietary drivers. The NVIDIA driver was a bit annoying in some ways, but those issues could be worked around. The result was a stable installation with great GPU performance. Meanwhile, the AMD driver was somewhere between unusable and terrible. It updated so slowly that you had to stay on ancient versions of X to even be able to use it. For users of rolling-release distributions, that's simply unworkable, and so they bought NVIDIA.

There were also open source drivers, which worked quite well, but they weren't even close in terms of performance. (Intel has always played nicely, and their official GPU drivers are open source and work well. Their performance falls into this same category.)

Recently, however, AMD has replaced its proprietary driver with a new, open source, high performance driver. AMD is now a serious choice. Sadly the tables have turned, with NVIDIA holding back progress on Wayland by not cooperating with the community.

Can confirm. If you have a card that supports the amdgpu driver, then the experience is great. Everything just works, and at competitive speed no less.
Thanks to the hype and bubble around ICO and digital mining, all the AMD graphic cards are way overpriced.
> Nvidia users are shitty consumers and I don’t even want them in my userbase.

Watch out, we have a wannabe Linus over here!

Just another reason not to care about the cadt.
I'm tired of iNVtel. I'm buying AMD gfx and compute next time. I'm not the power gamer I used to be, and their new stuff is powerful enough, while their cpu's are getting pretty awesome.
"Nvidia module taints kernel"

I remember seeing that scroll by on my Gentoo install about 15 years ago. This strange sentence actually got me reading deeply into the what and how of open source. I have been hoping for a nice Nvidia Open source driver since... Until Intel took that away, I'm not a gamer/deep learner so I always opt for Intel integrated graphics nowadays, saves money, hassle and power.

I always believed that if AMD/ATI got their S together and made a super nice open source driver they'd make a lot of money! Guess I've always over estimated the Linux users' market share.

The current open source AMD driver is supposedly rather nice. I'm seriously considering to replace my ancient GTX460 with a shiny new RX560.
There should probably be a user space layer that abstracts over direct kernel graphics APIs. There’s no reason GPM vs EGLStreams shouldn’t be an implementation detail.

Another note, a window manager author shouldn’t have to deal with these sorts of issues. Puts into question the “wayland way.” I guess this is what wlc and wlroots are for but seems like those approaches have flaws given there was a need for wlroots to even exist in the first place.

GBM already IS a userspace layer than abstracts over driver-specific kernel interfaces. That's the whole point.

You also seem to have missed the whole point of wayland's design. There is no separation between "window managers" and "display servers"; there are just "compositors". So naturally it is something that needs to be dealt with. wlc, libweston, wlroots (for which I am an author, responsible for the DRM/GBM code), etc., are designed to make it easier to write compositors and allow for more code reuse. So yes, someone using one of these libraries wouldn't need to deal with these details, but we're actually writing such a library.

> You also seem to have missed the whole point of wayland's design. There is no separation between "window managers" and "display servers"; there are just "compositors".

I think the point is that this design is bad.

How about we call this abstraction layer X for the time being?
Wow, so much vitriol. I'm glad I don't like tiling window managers [x]. Sway seems well done, so I would use it and then be annoyed by the maintainer.

Wayland, systemd, heck, that they removed ifconfig - these are all changes I understand and welcome from a technical POV, but that lose me as a user. The pinnacle of desktop linux was around 2009, afterwards usability seemed to regress. I'd love to use Linux, but currently I feel more comfortable on Mac or Windows.

Doesn't help that leading projects on the linux desktop often have such abrasive developers.

----

[x] I tried them, but I found they are not really for me:

- I need something that passes the coworker or girlfriend test: Other people should be able to sit down and use my computer.

- Keyboard shortcuts don't actually make me faster. I find personally there is a lot of cognitive load trying to remember the keys to press, even after a lot of practice. I like to offload this to my eyes and arms, and use a mouse to e.g. arrange windows. That is the reason I gave up and now use arrow keys in VIM, and VS Code when possible.