As someone who doesn’t know a lot about go: why is CGo-free a feature? In what situations is CGo (which is basically just calling C libs from go, right?) bad?
It makes cross-compiling a lot more difficult. Instead of being able to build on whatever OS/architecture you use and produce binaries for any other OS/architecture you want to target with a single command (one of Go's superpowers), you need a complex build pipeline.
FFI is an additional headache. Instead of having a single hermetic build process that just works, with FFI you now have to deal with shared libraries which may or may not be present, and may or may not support all the architectures or operating systems you want to target. FFI is why so many Python projects blow up when you run pip install. Then it takes sometimes hours to untangle that horror show.
This is using purego which is still using FFI, it is dynamically linking the C libs so you still have the same shared library issues. You don’t have to setup a C compiler toolchain though which is nice.
Cgo is the correct choice for many domains (ui, gamedev, systems stuff) where you can’t use a network boundary as your “interacts with other languages”.
The language is opinionated; it’s not good at playing with others. It’s good at other things (network services, etc)… but you can and it’s not bad.
…it’s just hard, and people don’t like hard things.
It's too ugly for "general-purpose" apps, but it looks to be perfect for internal management apps (control panels, tools). I'm definitely going to try it for my key-management server.
How does this avoid Cgo? In the case of Ltk (FFI-free, Common Lisp bindings for Tcl/Tk), I know that the library communicates strings to a Tcl interpreter. This means no FFI is involved, but it does mean the user must have Tcl -- specifically, wish -- installed. Is there a similar requirement for this library?
Unfortunately, GitLab is locked behind Cloudflare turnstile and I can't access the source code.
I'm really impressed that it can render math from TeX input. Is this a common thing in GUI toolkits? My graphics experience is mostly limited to Java's Swing and OpenGL from my college days.
Apparently it's embedding actual TeX for this purpose: https://git.sr.ht/~sbinet/star-tex (TeX is written in a Pascal variant, and this kind of transpilation is by no means unusual.)
It's common to have HTML widgets in GUI toolkits, and some may even support MathML, but this here is a bit different.
Hm... the examples look nice, but there are several examples that render graphics and/or text on a canvas. How about demonstrating more complex controls, e. g. list views?
These are Go bindings for Tk, a cross-platform widget toolkit initially developed as extension for Tcl. Nowadays a lot of languages have bindings for Tcl/Tk. Python for example has been including tkinter [0] for a long time.
Really? Would love to see a binding for Powershell. Just for cross-platform shell scripts to be able to disable a pop-up for input etc. Just makes them more accessible.
Figma killed the desktop app. I yearn for the good old days of standardized UI if I actually need to get shit done efficiently. Nowadays it's learning everything from either scratch; maybe if you're lucky, the designer put in some 'intuitive' (read 'fashionable') interactions.
You write like you were born after all the events related to the desktop application had run their curse.
We killed the desktop app, to free ourselves from the Wintel monopoly. We pushed the migration to the Web, because that was the unreachable niche for Microsoft and their monopolistic practices.
We succeeded, and as punishment, now we have to endure all these applications written in Node.js with Electron UIs. We won, but we have paid a high price for it.
In this context, Figma is nothing more than an afterthought. Something that appeared as a consequence, not the cause of anything.
>You write like you were born after all the events related to the desktop application had run their curse.
>We killed the desktop app, to free ourselves from the Wintel monopoly.
Bombastic nonsensical crap!
There is no "we”, period.
That is a fallacy that you, not "we", impose upon yourself, and try to generalize it to, or foist it upon, everyone.
"We" didn't kill anything. and "we" were not slaves in the first place, so "we" didn't need to make ourselves free.
Maybe you, and some known to you, were slaves, or still are. Don't generalize vacuously.
This is not the multiple Oscar-winning award-winning Ben-Hur movie or the Biblical story of the ancient Israelites as slaves in Egypt or something like that.
Anyone, who wanted to, or at least, any reasonably large group of people (1), could have moved off, from Windows, if they wanted to, badly enough. In the early years of Windows, DOS was still there, right? And had plenty of good software on it, just not GUI-based. and there were some Unix versions around, including maybe some cheaper ones. I rememember Coherent Unix and ESIX, for example. I actually work on the latter, briefly, in an early job. Microsoft's own Xenix existed around the same time too, plus or minus a year or three, maybe.
(1) Say a few hundred or a few thousand people. As an example, they could have collected donations, and hired 20 to 50 smart computer science students, grad or undergrad, and / or professors and / or operating system developers, to create a better OS without the monopoly and bad practices of MS. You bet your ass, at least some people would have queued up for that.
Set up some rules for correct behaviour, and kick out anybody who did not comply.
>We pushed the migration to the Web, because that was the unreachable niche for Microsoft and their monopolistic practices.
So, your only option is to run away from an enemy? And do you think that the enemy cannot follow you there? What about WSL and Azure and what not? Ha ha. Never underestimate your enemies.
See the Stockdale Paradox. The Jim Collins version is a good one.
Back in the day, I used to really dislike anything TK related. It looked old and ugly.
Now it looks like a wonderful alternative to all the bloated, wasteful, Electron JS applications out there.
Edit: CORRECTION! This is a person that used to use the cznic nickname, maybe because they worked in CZNIC for a while, but now goes by "modernc"
Seems like they've been involved in transpiling C projects, like TCK, to Go.
Some context: https://news.ycombinator.com/item?id=33197603
==previous message before my edit==
Oh, seems like this is made by CZNIC, the org that admins .cz TLD.
They've also done the Omnia Turris routers, KNOT DNS server or BIRD routing daemon...
> Seems like they've been involved in transpiling C projects, like TCK, to Go.
Probably best known for their port of SQLite: https://pkg.go.dev/modernc.org/sqlite
Includes beautiful modern themes, e.g. azure https://pkg.go.dev/modernc.org/tk9.0@v0.53.0/themes/azure
As someone who doesn’t know a lot about go: why is CGo-free a feature? In what situations is CGo (which is basically just calling C libs from go, right?) bad?
It makes cross-compiling a lot more difficult. Instead of being able to build on whatever OS/architecture you use and produce binaries for any other OS/architecture you want to target with a single command (one of Go's superpowers), you need a complex build pipeline.
FFI is an additional headache. Instead of having a single hermetic build process that just works, with FFI you now have to deal with shared libraries which may or may not be present, and may or may not support all the architectures or operating systems you want to target. FFI is why so many Python projects blow up when you run pip install. Then it takes sometimes hours to untangle that horror show.
This is using purego which is still using FFI, it is dynamically linking the C libs so you still have the same shared library issues. You don’t have to setup a C compiler toolchain though which is nice.
It’s not a technical thing.
It’s not bad.
It’s a misguided community thing.
Cgo is the correct choice for many domains (ui, gamedev, systems stuff) where you can’t use a network boundary as your “interacts with other languages”.
The language is opinionated; it’s not good at playing with others. It’s good at other things (network services, etc)… but you can and it’s not bad.
…it’s just hard, and people don’t like hard things.
Oh wow! This is super-cool.
It's too ugly for "general-purpose" apps, but it looks to be perfect for internal management apps (control panels, tools). I'm definitely going to try it for my key-management server.
That motif toolkit with the detachable pulldowns and diamond shaped radios...
I know tk has moved on but I have not.
detachable menus is an undervalued feature, being able to detach a menu or submenu and cycle through its element, is great to have when you need it
There's a bunch of innovative things that just didn't go through enough design cycles to get the flow right which have since been abandoned
How does this avoid Cgo? In the case of Ltk (FFI-free, Common Lisp bindings for Tcl/Tk), I know that the library communicates strings to a Tcl interpreter. This means no FFI is involved, but it does mean the user must have Tcl -- specifically, wish -- installed. Is there a similar requirement for this library?
Unfortunately, GitLab is locked behind Cloudflare turnstile and I can't access the source code.
It’s using purego: https://github.com/ebitengine/purego
And linking against libtcl and libtk.
can cloudflare even be called a cdn anymore?
I'm really impressed that it can render math from TeX input. Is this a common thing in GUI toolkits? My graphics experience is mostly limited to Java's Swing and OpenGL from my college days.
Apparently it's embedding actual TeX for this purpose: https://git.sr.ht/~sbinet/star-tex (TeX is written in a Pascal variant, and this kind of transpilation is by no means unusual.)
It's common to have HTML widgets in GUI toolkits, and some may even support MathML, but this here is a bit different.
Tk! Some things just work. Never underestimate proven tech.
Hm... the examples look nice, but there are several examples that render graphics and/or text on a canvas. How about demonstrating more complex controls, e. g. list views?
how does this handle state management and event delegation? As in, when state is modified in one control , it instantly updates in the other controls.
The examples show how to draw controls, but that’s the easiest and least interesting part of GUI apps
He he, is this based on Tcl? It for sure seems at least inspired by Tcl/Tk.
These are Go bindings for Tk, a cross-platform widget toolkit initially developed as extension for Tcl. Nowadays a lot of languages have bindings for Tcl/Tk. Python for example has been including tkinter [0] for a long time.
[0]: https://docs.python.org/3/library/tkinter.html
yes, for python, from 1.5 or early 2.x versions onwards, iirc. I've used py a bit from 1.5 and much more from early 2.x, is how i know this.
yes, perl, python and ruby, for example.
Really? Would love to see a binding for Powershell. Just for cross-platform shell scripts to be able to disable a pop-up for input etc. Just makes them more accessible.
Similarly to Python Tkinter, it actually embeds Tcl/Tk and provides a Go interface to it.
And latest Tcl/Tk is v9 I think. So I guess there should be something...
CGO free. TK. I’m sold. imgui user.
Figma killed the desktop app. I yearn for the good old days of standardized UI if I actually need to get shit done efficiently. Nowadays it's learning everything from either scratch; maybe if you're lucky, the designer put in some 'intuitive' (read 'fashionable') interactions.
You write like you were born after all the events related to the desktop application had run their curse.
We killed the desktop app, to free ourselves from the Wintel monopoly. We pushed the migration to the Web, because that was the unreachable niche for Microsoft and their monopolistic practices.
We succeeded, and as punishment, now we have to endure all these applications written in Node.js with Electron UIs. We won, but we have paid a high price for it.
In this context, Figma is nothing more than an afterthought. Something that appeared as a consequence, not the cause of anything.
>You write like you were born after all the events related to the desktop application had run their curse.
>We killed the desktop app, to free ourselves from the Wintel monopoly.
Bombastic nonsensical crap!
There is no "we”, period. That is a fallacy that you, not "we", impose upon yourself, and try to generalize it to, or foist it upon, everyone.
"We" didn't kill anything. and "we" were not slaves in the first place, so "we" didn't need to make ourselves free.
Maybe you, and some known to you, were slaves, or still are. Don't generalize vacuously.
This is not the multiple Oscar-winning award-winning Ben-Hur movie or the Biblical story of the ancient Israelites as slaves in Egypt or something like that.
Anyone, who wanted to, or at least, any reasonably large group of people (1), could have moved off, from Windows, if they wanted to, badly enough. In the early years of Windows, DOS was still there, right? And had plenty of good software on it, just not GUI-based. and there were some Unix versions around, including maybe some cheaper ones. I rememember Coherent Unix and ESIX, for example. I actually work on the latter, briefly, in an early job. Microsoft's own Xenix existed around the same time too, plus or minus a year or three, maybe.
(1) Say a few hundred or a few thousand people. As an example, they could have collected donations, and hired 20 to 50 smart computer science students, grad or undergrad, and / or professors and / or operating system developers, to create a better OS without the monopoly and bad practices of MS. You bet your ass, at least some people would have queued up for that.
Set up some rules for correct behaviour, and kick out anybody who did not comply.
>We pushed the migration to the Web, because that was the unreachable niche for Microsoft and their monopolistic practices.
So, your only option is to run away from an enemy? And do you think that the enemy cannot follow you there? What about WSL and Azure and what not? Ha ha. Never underestimate your enemies.
See the Stockdale Paradox. The Jim Collins version is a good one.
https://news.ycombinator.com/item?id=42153495
Don't worry, mobile applications, which are basically another nightmare, are slowly eating the web for general purpose/public applications.
And now we have 2 oligopolies instead of 1 monopoly, but in practice it's basically the same thing.
The Tk GUI toolkit dates back to 1991.
This style of GUI predates Figma by decades.
Yeah, web dev sucks.