1. 27
  1.  

  2. 22

    This wastes a lot of time denigrating other peoples’ free donated labour.

    Fine, your requirements are that you don’t want to install anything and that you don’t like boilerplate, got it. Is “oh god my eyes” and “what the goddamn hell is this supposed to be” necessary? What is it helping? Generally when a library author settles on a solution it’s because they have some constraints. Maybe the boilerplate is because they expect you to customise that bit, or because their approach is generic enough that you need to fill in the gaps to glue it to your particular problem. Maybe those constraints don’t match yours and it’s not a good fit for you but it’s probably not because they’re trying to assault you personally and everyone except you is stupid.

    You’re fully in your rights to just not use it, nothing wrong with that. You’re finding yourself in a wealth of choice, given this opportunity to be choosy, because of the generosity of these people whose work you’re shitting on instead.

    1. 9

      Qt has accessibility. The author states that installing it is more work than they want to do. I’ve installed Qt on various platforms and it’s not been difficult.

      I don’t feel like this is an honest evaluation, but rather a lazy stab at ticking an ‘accessibility’ box without having to put even a small amount of effort into understanding the very basics of some well regarded frameworks.

      1. 3

        Yeah installing QT is fairly simple, even more for the amount of stuff it can do. Using QT with anything but C++ isn’t something on my wish list, as far as my little experience with that goes. Oh and if the author is already afraid of installing QT, a “binding generator” will be far too much for them.

      2. 8

        It wasn’t at all a waste of time for the OP to write this. I’m actively interested in writing a GUI program in Rust, and I myself have looked into a few of the libraries mentioned here and come to some of the same conclusions about their immaturity for my use case. It was directly helpful for me to see this analysis of some of the GUI libraries I didn’t try myself.

        I agree that it’s in poor taste to denigrate the work of people releasing an open source library to the world; but it’s not any meaningful kind of denigration to look at open source libraries critically, evaluate whether they meet your needs, and say so honestly and publicly if the answer is “no” or “not yet”. Which is what the OP was doing.

        1. 1

          Sorry, doing the survey and documenting it wasn’t a waste. A reader has to read it through the lens of the writers’ requirements of course but that’s always the case (which again, include not installing anything, a lack of boilerplate, and accessibility features; all legitimate requirements). The unnecessary negativity to other peoples’ work in the middle of it is what I’m railing against

        2. 5

          Is “oh god my eyes” and “what the goddamn hell is this supposed to be” necessary? What is it helping?

          Well, at least it’s good to know that people in the Rust community are just as nice to each other as they are to those who aren’t using Rust…

        3. 10

          “Bindings to Core Foundation for macOS” are cool if I’m using macOS. As established, I’m not.

          This doesn’t sound like a GUI library. Core Foundation was basically a C implementation of the Objective-C Foundation Framework that dates back to a time Apple was aggressively hedging their bets no Objective-C and supported Classic MacOS-style C development with Carbon, Objective-C with Cocoa, or Java development with Cocoa (Mocha). Core Foundation was intended to provide a set of core data structures that could be used directly from C and trivially bridged with Objective-C and Java, so that developers could more easily move between projects. It sits well below a GUI library - it’s used by most of the Darwin system services that want some high-level abstractions but don’t want to take a dependency on Objective-C and the Foundation framework.

          1. 4

            The title is much more pretentious that it needs to be. “Rust GUIs for Windows with zero setup and non-zero accessibility” would be a better title.

            It’s still an interesting, even if a bit lazy, experiment: if I want to throw together a Windows GUI in Rust quickly with my brain fried, what would be the go-to. Accessibility is a nice litmus test for quality, even though I suspect ioi gamed this aspect.

            1. 4

              I appreciate the author going through the drudgery of actually taste-testing all of these different libraries, though their requirements are not my requirements.

              One of the big things they point out is “hey, I just want to use the language package manager…why you gotta make this weird?”. That’s an issue that exists in all ecosystems, and one that I think doesn’t get enough attention. Windows is often treated as an afterthought/third-class citizen by developers (which is hilarious, since Windows solved the GUI stuff “well-enough” two decades ago that devs these days mostly punt on and use Electron for, but that’s a whole different thing…) who aren’t perhaps used to dealing with an OS where developer ergonomics is not in the Unix mold. Even with WSL2, it can be a bear treading the path outside of Microsoft’s blessed tooling–this is a truth that needs to be accepted.

              Another thing the article points out around accessibility is the number of libraries that just…don’t. I wish the author went into more detail about this, but basically any library that uses OpenGL/Vulkan/DirectX/whatever directly (and handles its own book-keeping internally for widgets and stuff) is going to have a hard time with accessibility and require extra work to get there. If you aren’t using the native OS parts for that, or using a layer that handles it for you, this is bound to be an issue.

              I am a little annoyed that the author disqualified the most successful of the offerings–the native-windows-gui library–because of a sudden surprise concern about cross-platform development, which makes me a bit suspicious about the integrity of the article as a whole. That said, it’s still a good summary if you have the constraints the author seems to.

              1. 4

                I find running Windows applications on wine/linux is easier than running “native” Linux programs. And since wine is not an emulator … I’d say Windows api is cross platform :)

                (only half kidding)

                1. 2

                  Unironically this. Proton has given Linux gaming a useful set of APIs to develop against.

                  1. 1

                    Proton

                    huh my first time actually hearing about this (shows how much i follow the game world). But yeah it legit makes sense, and it does for desktop apps too. The Windows API is actually pretty good and Wine does a solidly ok job.

                    I do find it a bit weird how the same people who will taut a browser-based thing as “finally on Linux” will disregard wine.

              2. 3

                The links in the table don’t do anything for me. -1 for accessibility and easy reading. Also I’m missing a “cross Plattform” / OS column.

                1. 3

                  Also I’m missing a “cross Plattform” / OS column

                  Is it? They’re pretty explicit that they care about Windows, I don’t see cross-platformness listed in their constraints at all

                2. 2

                  I’m a little bit surprised the author went through the pains of installing Rust on Windows.

                  1. 1

                    I have tried several times to get GTK 3 or 4 working for development on this computer. I have failed several times, and succeeded none.

                    stop using windows lol All you really need is meson. I’m not sure how well this works with Rust bindings currently, but that should be relatively easy to integrate into build.rs if it’s not done yet I guess.

                    WebRender: what the goddamn hell is this supposed to be? the basic example is doing shader fuckery! that doesn’t seem basic to me!

                    It’s not a GUI toolkit! It should never be put on the same list as the others! It’s a very low level building block!