Spot

Dev tools

gui toolkit

SHOW HN2024

Legend

Spot

Simple, cross-platform, reactive desktop GUI toolkit for Go

github.com

#go gui toolkit#react-like go#cross-platform desktop gui#fltk go

309points
57comments
#193of 3,515 in 2024
Top 6%of 2024 by points

How HN took it

CuriousMostly questions and neutral comments

2 positive, 12 neutral or asking, 1 mixed, 6 critical, out of 21 comments about the project. Thread score -0.16.

Idea: 2 for, 4 againstDesign: 0 for, 2 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Declarative reactive model is appealing for complex state

    From 2 comments
    • For complex scenarios (i.e. the user interacting with the UI while there are some long-running processes in the backround doing this, too), managing the state quickly gets…
      da_rob on HN
    • While I agree, that the virtual widget tree has a certain overhead, the typical desktop app you would create with Spot probably does not have 1000s of components—more like ten to…
      da_rob on HN
  • Fills a need for simple Go GUI with React-like model

    From 2 comments
    • If only I had known about this (or judging by commit history, if it existed) ~3 weeks ago. I've been saying for ages that either React ported to Go or a React-like framework for…
      Heliodex on HN
    • I’ll have to give this a look! I’ve been looking for a simple way to use Go to write an internal development tool which is basically just a form with some buttons and text…
      heywire on HN

Objections

  • Cross-platform support is spread across too many toolkits and may hurt quality

    From 1 comment
    • "Cross-platform: Leveraging FLTK[1] & Cocoa[2], Spot works on Mac, Linux, and the BSDs with plans for native Windows support in the future." I'd seriously recommend that you…
      jerf on HN
  • No Windows support yet

    From 1 comment
  • Virtual widget tree adds overhead and complexity

    From 2 comments
    • I'm already convinced of the benefit of declarative GUIs over imperative ones. To be clearer, what I mean by declarative GUIs is ones where I can specify that UI elements should…
      felipefar on HN
    • I don't know how to take this in. On one side, it's great to have a cross-platform GUI toolkit that's easy to use; on the other side, it feels like a React-like UI is contrary to…
      ASalazarMX on HN

Requests

  • Windows support

    From 2 comments
    • I applaud your effort, but cross plattform with no Windows support?
      KingOfCoders on HN
    • Fltk supports windows. Will you be using another solution and that’s why u don’t support windows yet?
      getcrunk on HN
  • GTK backend for Linux

    From 1 comment
    • Very cool idea! If someone implements GTK I would absolutely use it, its just fltk is no fun in Linux world
      jakjak123 on HN
  • Listing supported platforms in the readme

    From 1 comment
    • Looks great! Thanks for sharing. Would you consider listing the supported platforms in the readme? I think that would be a pretty interesting piece of information: ``` - Windows…
      sandreas on HN

Questions

  • Why use a virtual tree instead of direct updates to controls

    From 2 comments
    • I'm curious to hear your take on this: what's the advantage of following the virtual control tree approach compared to instead updating directly the controls that are displayed…
      felipefar on HN
    • I'm already convinced of the benefit of declarative GUIs over imperative ones. To be clearer, what I mean by declarative GUIs is ones where I can specify that UI elements should…
      felipefar on HN
  • How cross-platform layout handles differing native control sizes

    From 1 comment
    • I have been looking for something like this in Go for a while. I think there's a real opportunity for Go to provide a great developer experience for cross platform UI due to how…
      iamcalledrob on HN
  • Cross-compilation and packaging for macOS and Windows

    From 1 comment
    • Cool! What does building for cross platform look like? Would love if there was a command that produced my MacOs .app and Windows exe without me having to dive into package…
      scosman on HN

Alternatives named

  • Fyne

    From 2 comments
    • This is exactly how the data binding APIs in Fyne (another Go GUI toolkit) work. And it's also an optional feature, so if you want to handle things by registering callbacks and…
      dweymouth on HN
    • Been using https://fyne.io/ https://github.com/fyne-io/fyne for years but will check this out ( terminal but still great go guis: https://github.com/gizak/termui…
      andrewfromx on HN
  • Wails

    From 2 comments
    • Wails <https://wails.io>. I wanted to use Go but wasn't as familiar with native UI as with HTML/CSS/JS, I tried out most of the other popular Go UI frameworks too though they…
      Heliodex on HN
    • I’ll have to give this a look! I’ve been looking for a simple way to use Go to write an internal development tool which is basically just a form with some buttons and text…
      heywire on HN
  • wxWidgets

    From 1 comment
    • Was looking for something like this some years back. Though I wanted Windows support too. Ended up switching to C++ to use wxWidgets, giving me small self contained binaries.
      allanrbo on HN
  • Gio

    From 1 comment
    • I’ll have to give this a look! I’ve been looking for a simple way to use Go to write an internal development tool which is basically just a form with some buttons and text…
      heywire on HN
  • Qt

    From 1 comment
    • Main problem is that when you release on desktop, a web version is usually desirable (except for very niche apps that interact a lot with the OS). Alternatively, something that…
      Fire-Dragon-DoL on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/40469592)