16 comments

  • x-complexity1 hour ago
    This is an advert for zgui, disguised as a critique piece.<p>From the article itself:<p>&gt; Disclosure: I ported GPUI’s current Linux renderer to wgpu2, I built the benchmark harness used below, and I work on zgui, a signal-based Rust framework that appears in the charts.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;zortax&#x2F;zgui" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;zortax&#x2F;zgui</a><p>zgui just released version 0.1.0 <i>last month</i>, with a 3 month dev history. And it&#x27;s their only version.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;zed-industries&#x2F;zed&#x2F;tree&#x2F;main&#x2F;crates&#x2F;gpui" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;zed-industries&#x2F;zed&#x2F;tree&#x2F;main&#x2F;crates&#x2F;gpui</a><p><a href="https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;gpui&#x2F;versions" rel="nofollow">https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;gpui&#x2F;versions</a><p>GPUI&#x27;s last release was 0.2.2, 1 year ago.<p>Framework maturity is an unavoidable contributing factor when choosing where to port over your application.<p>Should that mean that they can only choose 10-year-old frameworks? No, but also they shouldn&#x27;t be chasing 1-month-old projects.<p>There are minimums &amp; maximums, and the minimum sits at &quot;definitely not 1 month old projects with only 1 public release&quot;.
  • jharsman2 hours ago
    The subject is interesting, but the AI-generated text is very hard to read and makes me question if the author actually thought about the problem at all.<p>If you thought about this, write it yourself.
    • swiftcoder40 minutes ago
      &gt; the AI-generated text is very hard to read<p>You know, he&#x27;s done a pretty good job of editing&#x2F;prompting. It&#x27;s far less &quot;Claude voice&quot; than other AI-written articles that keep getting posted here
    • sashank_150949 minutes ago
      I must say, it took me a while to realize it’s AI generated. There were some tics after thousand of words that let me realize.<p>I should have realized sooner though, because I had no idea what that table was trying to say, and that should have been a signal already.
    • nephyrin1 hour ago
      I got as far as the table labeled<p>&gt; What a write runs | Who finds the change<p>Good lord. If you are writing a thoughtful critique of something.. actually write it.
  • faangguyindia3 hours ago
    So, which are the most advanced GUI frameworks that have ever existed, and why are they superior to GPUI or egui?<p>Which company in the past needed a GUI more than Microsoft? Maybe they have the answer? Or Apple?<p>I don&#x27;t think social media apps are GUI heavy enough to have developed something advanced in this field.<p>GUI complexity and application complexity are two different things<p>arguments in the post sound reasonable but conclusion is off.
    • hirako20001 hour ago
      Blender has seriously complex UI needs. No idea whether they use a reactive architecture but (claimed) raw performance is impressive.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;ppmpreetham&#x2F;BUI" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ppmpreetham&#x2F;BUI</a>
      • SkiFire131 hour ago
        Apart from the main 3D viewport Blender&#x27;s UI need don&#x27;t look that complex. Most of its UI are panels with simple layouts and buttons&#x2F;sliders&#x2F;checkboxes. And I bet they don&#x27;t use their UI library for the main 3D viewport.
        • slopinthebag1 hour ago
          what do you consider to be a complex UI?
    • slopinthebag2 hours ago
      all of the alternatives suck. you can complain about egui in particular but immediate-mode libraries have an overwhelming set of advantages and actually scale <i>better</i> with more complex ui.
      • ben-schaaf1 hour ago
        I work on a GUI toolkit professionally. Immediate-mode libraries are cool, but they absolutely in no way shape or form scale <i>better</i>. Having to evaluate and layout the entire UI for every state change is fundamentally not scalable. Doubly so if you need to do this multiple times to reach a steady-state layout like you do in some cases with egui.
        • slopinthebag1 hour ago
          you can cache layouts with immediate mode libraries. in terms of scaling, it really depends - if you have many components updating at once, the benefits of retained mode libraries are diminished if not reversed. when people create demos of 10,000 list elements and updating a single one, it&#x27;s basically designed as a best case scenario for retained mode. try updating the entire list...<p>but i can make strong claims about the benefits of not needing to duplicate your state inside of your ui framework. that alone removes an entire category of work, and i would argue scales better from a conceptual&#x2F;dev standpoint.
      • codedokode1 hour ago
        They are slow and inefficient especially in a VM where there is no GPU. It doesn&#x27;t make sense to redraw all screen if only one button has changed.
        • slopinthebag1 hour ago
          retained mode frameworks still redraw the whole frame typically, unless they&#x27;re doing some type of partial rendering - that still has a cost though, and all modern ui frameworks retained or not will suffer without a gpu.<p>in practice rendering a frame of imgui or whatever is so fast and efficient that it&#x27;s not an issue. we&#x27;re talking a few thousand triangles and typically a small handful of shaders &amp; draw calls.
          • codedokode37 minutes ago
            How fast are shaders on CPU? Shaders are garbage. I remember many years ago I tried Ubuntu in a VM and it decided to use llvmpipe for rendering. There was a 30-second lag between clicking on anything and seeing the result. Since then I hate GPU-based GUIs.
  • bluegatty2 hours ago
    Looks fun, but Rust is less well suited to UX than other langauges - tree based data structures, a lot of ugly state, event driven, heavily async, and naturally all of the json and other things that come in at that layer don&#x27;t have &#x27;very nice&#x27; libraries.<p>It does not leverage of Rusts advantages very well at all, and so the extra overhead is hard to justify.<p>I think there are definitely some key libs that would work well with rust (wgpu is nice!), but the the core language itself would ideally not be Rust.<p>Obviously - it can be done - and I&#x27;m sure it&#x27;s a lot of fun for some devs - but I think this is fitting the circle into the square hole. (Edit - it&#x27;s funny saying that because &#x27;fitting the circle into the square hole&#x27; is literally like saying &#x27;walkies?&#x27; or to a dog, aka &#x27;arise - a problem to be solved!&#x27; but I think that is what I&#x27;m getting at, like what wags the tail isn&#x27;t necessarily the best option)
  • SkiFire131 hour ago
    In my opinion this comes down to how much data you have on screen and whether you can efficiently skip off-screen data. If you can do that then it doesn&#x27;t matter how your framework scales, you will be bound by screen space anyway.<p>That said, I indeed am not fond of GPUI and egui, but for different reasons.<p>In GPUI having to manually mark the state as changed is IMO a footgun and any decent UI framework should not require something like that.<p>In egui I found the &quot;immediate mutation&quot; pattern (e.g. the classic `if button.pressed() { mutate }`) to produce glitches in the UI, because it will cause half the UI to draw the old state and half the new state. You almost always want to anticipate interactions, or to delay mutations. But performance is not a problem IMO unless you&#x27;re writing a complex vector graphics viewport (in which case retained UI won&#x27;t help you either)
  • rramon4 hours ago
    &gt;I believe both GPUI’s and egui’s state models are dead ends for complex desktop applications.<p>Why do those complex Adobe clones work so well then?
    • YuechenLi3 hours ago
      They actually don&#x27;t.<p>Slow, laggy UI is a common source of complaint on the issues.<p>Examples:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;cadcraft&#x2F;issues&#x2F;752" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;cadcraft&#x2F;issues&#x2F;752</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;cadcraft&#x2F;issues&#x2F;874" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;cadcraft&#x2F;issues&#x2F;874</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;vectorcraft&#x2F;issues&#x2F;2292" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;vectorcraft&#x2F;issues&#x2F;2292</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;artcraft&#x2F;issues&#x2F;2409" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;artcraft&#x2F;issues&#x2F;2409</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;photocraft&#x2F;issues&#x2F;9327" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;storytold&#x2F;photocraft&#x2F;issues&#x2F;9327</a>
      • arecsu3 hours ago
        Don&#x27;t know about the other links you&#x27;ve posted, but for photocraft the vast majority of those issues are from the engine that process the image itself, not about the GUI. In fact, as far as I can tell, none of the artcraft apps are that complex in terms of GUI to be slow down by any choice of GUI framework really. There could be performance differences between them, yes, but not so much.
        • YuechenLi1 hour ago
          You do realize that saying the PhotoCraft backend is also slow and buggy isn&#x27;t helping your case, right?
          • usef-46 minutes ago
            Why not? If the raw renderer has unoptimsied denoise algorithm, what has that got to do with egui?<p>They seem to be edge cases of building extremely complicated renderers (that handle varied user files&#x2F;scenes) in a very short time. The projects are weeks old. The original app&#x27;s renderers were built and optimised over decades against user files. I would also assume the central renderer is a 3d surface, not egui.<p>Generally to the contrary, I was surprised how snappy their UIs feel in normal usage compared to the apps they&#x27;re replacing.
      • rramon1 hour ago
        I see. Not my experience using those apps though. There are bugs but they get fixed.<p>You can use the UI to figure out your ideal design process manually and then hand it off to a gent next time. The cool thing about those apps is that everything in the UI works headless as well.
      • airesQ2 hours ago
        With vectorcraft loading shape libraries can be slow, but this is a background thread.<p>egui was a great choice given the results; also egui&#x27;s wasm support is very good, which means artcraft supports wasm; i.e. they can run on a browser.
      • anthk24 minutes ago
        It&#x27;s November and most of these issues were fixed two weeks ago.
    • anonymous9082133 hours ago
      Why are you stating something that is not true as though it were a given, and then using that unearned precondition as the basis for your question? The premise is false. Artcraft is a complete fucking trainwreck, nothing more than scamware that falls apart as soon as you poke beyond the deceptive facade that was used to build hype.<p>(That said, on the scale of blame for it being bad, I would say the GUI framework accounts for 0% of that and the programming methodology accounts for 100% of that)
      • airesQ2 hours ago
        This does not match my experience, I use gridcraft (excel), vectorcraft (illustrator) often; they work fine.<p>It&#x27;s ~100MiB each, installs in seconds; I can point my agent at the github repo and it will be able to run it and control the apps; e.g. look at how excel spreadsheets actually render and adjust the layout.<p>I&#x27;m not a power user, but for my particular use cases artcraft apps are better than the original counterparts (install-size + agent control).
        • codedokode1 hour ago
          Agent does not feel discomfort from laggy UI so your point is moot.
        • 1ba91154542 hours ago
          I&#x27;ve been using filmcraft for video editing and I&#x27;ve had no issues.
      • rramon2 minutes ago
        They are already usable and get better quickly. Are you working for a competitor?
    • codedokode1 hour ago
      I ran PhotoCraft in a VM and it runs like a game at 3 fps. Very laggy.
    • throwup2383 hours ago
      How’s accessibility?
      • SkiFire132 hours ago
        egui has been integrated with AccessKit since a few years now
    • cyberax3 hours ago
      UI for CAD-style apps is not that complex. You&#x27;re typically looking at maybe hundreds of visible controls at most. Of course, assuming that the rendering of the picture&#x2F;parts is handled separately.
      • fastball3 hours ago
        Hundreds of visible controls sounds like more complexity than you want.
        • Elucalidavah3 hours ago
          These controls are largely independent; whereas the complexity being talked about here is interdependent GUI elements.<p>Something about every complex GUI being a spreadsheet-style calculation.
    • Onavo3 hours ago
      Well, primarily users of Adobe software don&#x27;t have efficiency in mind as their first priority. It&#x27;s a little different if you are making a desktop widget and it eats a good chunk of your GPU while idle.<p>Most of these GUI software are vibe coded so state management essentially becomes somebody else&#x27;s blackbox problem.
  • jbk2 hours ago
    So, is there anything native between Qt and GPUI?<p>Having a middle ground, in between?
  • swiftcoder42 minutes ago
    &gt; but the truth is that Zed is a relatively simple app, UI wise. The app’s chrome contains a few buttons, in a simple layout, a sidebar and a text editor, and the text editor is implemented as a custom element, completely bypassing GPUI’s layout and view semantics. By their own account, a window “has tens of nodes and a few thousand elements”.<p>I&#x27;m glad we&#x27;re all finally coming round to this view. I&#x27;ve bene repeatedly annoyed at folks treating really basic UIs as evidence that their pet UI framework is suitable for complex UIs...
  • txdv14 minutes ago
    Good article, I will tell my AI agent to read it and fix my UI framework if there any problems and suggestions that could be used.
  • ryeights3 hours ago
    AI critiquing AI’s favorite native UI framework, brilliant.
  • koolala3 hours ago
    Can&#x27;t you fix this scaling by chunking the entities? So not making one massive 10,000 thing entity but instead breaking it up into entities that group 500 things?
    • YuechenLi2 hours ago
      Of course you can, and you can also make it so that if UI changes, instead of having every single entity rerender, only the changed entity would rerender, and you can have a library that manages the changes or &quot;dirty&quot; state of these entities reactively.<p>And that&#x27;s why React exists.
      • rudedogg2 hours ago
        Almost every GUI toolkit does this, it’s nothing React specific. And with the browser you have to know all sorts of complexities to know what it’s actually doing (is this change going to cause a full layout, full paint, etc.)<p>Personally I think most of the abstractions we’ve tried around GUIs don’t work, and old school frameworks like AppKit are better. They just need some DX love since programming has evolved so much.
      • koolala2 hours ago
        Doesn&#x27;t that need a whole new framework with other downsides but the first option lets you use it with how it is designed?
  • adamsvystun3 hours ago
    Is diffing really that expensive even in complex applications?
    • rtpg2 hours ago
      You have the diffing, but you also just have the various random bits of churn from building up the thing to diff etc.<p>Say what you will about &quot;plain&quot; COM models they don&#x27;t cause a bunch of random memory allocations when you drag-n-drop an element in a list down two spots
  • slopinthebag2 hours ago
    there is so much wrong in this ai generated article. from very poorly constructed egui benchmarks, treating dom performance as comparable, taking the egui creator&#x27;s quotes out of context, and more.<p>but i&#x27;m not going to spend time critiquing an ai-generated slop article. if anyone has specific questions about what is wrong feel free to ask me. i want to ideally spend my time interacting with <i>humans</i>
    • eviks44 minutes ago
      do you know of a similarly well-sourced and presented review of those approaches with framework benchmarks? This seems like an unfortunate niche where no human is willing to venture due to the required effort, but then the slop risk is too high to ignore in an assisted article.
  • cmrx642 hours ago
    gpui is pretty shite at energy draw too. bitemyapp’s sidestep is way better.
  • toolbrewlab1 hour ago
    [flagged]