9 comments

  • nickcw 9 minutes ago
    I had a look through the code to see how it manages not to use a pile of C libraries with cgo like other Go GUI libraries.

    The answer is platform dependent:

    Windows loads the relevant DLLs by hand and calls them. This is a well established technique in Go programs and due to the super stable DLL interface works well.

    Linux has an x11 and Wayland backends and these implement (through a library) the wire protocols directly in Go which is nice and will make cross compilation and distribution easy.

    macOS does appear to use cgo to access the cocoa libraries. macOS doesn't like statically linked Go programs anyway though as they don't use system name resolution so this isn't a bad compromise, but will mean macOS stuff needs to be built on macOS I think.

    I didn't see Android or iOS support.

    A nice innovative approach to GUI building. Since the lowest common denominator for the backends is an RGBA buffer, this will bypass all accessibility things the OS provides.

    The above gleaned after a few minutes reading the source so may not be 100% accurate.

  • TazeTSchnitzel 1 hour ago
    I will admit that I don't like vibecoded things, but perhaps I must stomach that AI will be writing a lot in this brave new era.

    However, when the commit history has stuff like

      v0.5.0: native backends, software renderer, text input, IME
      Co-authored-by: Claude <noreply@anthropic.com>
      Co-authored-by: Codex <codex@openai.com>
      Co-authored-by: Composer <composer@cursor.com>
      Co-authored-by: Cursor Grok 4.5 <noreply@cursor.com>
      
      377 files changed
      Lines changed: 62423 additions & 2871 deletions
    
    it's very hard. These “change the entire world” commits make for a history that is impractical to follow for a human, and therefore of little interest to me.
    • rowanseymour 24 minutes ago
      I think a challenge for a vibe coded library to gain adoption is if there is a lack of human time investment in its creation, how do we know there will be investment in its maintenance?
    • hsn915 1 hour ago
      This is a publish-only mirror repo.

      The commit history is the publish history, not the work history.

      • weare138 39 minutes ago
        Where's the actual repo then?
  • swiftcoder 1 hour ago
    > Experience has shown us that an immediate mode API is the only sane way to program GUI applications

    I wonder how long till they pivot away from this belief. I feel like everyone in UI goes through this phase as some point, but in the end it doesn't scale to truly complicated UI

    • cosmic_cheese 55 minutes ago
      Yeah. Based on my personal experience I think some kind of hybrid of old-school imperative retained and declarative retained, both with granular reactivity is probably the correct balance for "serious" high-utility desktop applications. Declarative approaches are great for smaller components but become a nightmare for anything much more complex than a relatively simple mobile app while imperative requires a lot of extra legwork at the component level, and as I understand (which may be incorrect) immediate mode makes certain types of optimization more difficult.
    • hsn915 1 hour ago
      It's the only thing that can scale to complicated UI
      • gen2brain 33 minutes ago
        What does "scale"even mean in UI context? 10 or 100 controls in app makes difference how exactly? Retained apps redraw when needed, they are idle most of the times. How redrawing every frame helps to scale?
  • iafan 1 hour ago
    I understand the core is the layout engine and a component library? Does the rendering somehow benefit from GPU?

    I recently had a good experience creating custom UI based on ebitengine — also a cross-platform Go engine. As it is a game engine, it has this built in game drawing loop, GPU-accelerated, with some cross-platform kb/mouse input handling. And this feels like a good platform to build the layout engine and components on top of. Have you ever considered this? Or how does your approach compare to that of ebitengine? Did you try (and do you position) your library to build custom UI for some underpowered computers such as Raspberry Pi?

  • shinzui 8 minutes ago
    What a waste of tokens.
    • 5701652400 6 minutes ago
      true to that. looks like AI took shortcuts and avoided real work and real hard problems. might as well just flip a random bits for cpu hours.
  • ahriad 25 minutes ago
    How it compares to Fyne?
  • roncesvalles 53 minutes ago
    Wails is another cross-platform GUI framework in Go: https://wails.io/
  • 5701652400 22 minutes ago
    cross-platform is overstatement.

    can I run it on Android? iOS?

    no? then 99.999999% of real world users cannot access it. and if it is desktop oly, what is the point? it is no better than web.

    • cosmic_cheese 14 minutes ago
      The needs of desktop and mobile are different enough that it's extremely difficult to build a UI framework for both that doesn't seriously compromise one paradigm or the other.

      I would argue it's one of the main reasons why frameworks like Flutter stuggle with widespread adoption on desktop — it was conceived primarily as mobile-oriented, and so on desktop you're stuck with half-baked third party components for essentials such as datagrids and tree views. WinUI with its mobile heritage in UWP suffers similar problems.

      GTK + Adwaita tries to straddle the fence and produces a subpar experience on both sides. Desktop data density is terrible due to mobile-minded button sizes and margins (big touch targets, bloated whitespace to make inadvertant touch interactions less frequent) and desktop-oriented widgets like tree views feel out of place on mobile.

      • 5701652400 7 minutes ago
        so it is not cross-platform? or all available platforms are... desktop.

        serious vibes of shortcuts and avoiding real hard work that brings real value.

    • DANmode 3 minutes ago
      Web is fantastic.
  • oooyay 19 minutes ago
    [dead]