These days it feels like everyone and their son are building a new IDE (and I say this as someone who’s done the same haha).
Interestingly, they’re using graphics libraries like OpenGL/Vulkan in Go. Like I originally was. But after a year of edge cases, I gave up and switched to Wails (using OS-native webviews). And I found that a good balance between avoiding the slowness and bloat of Electron, while not having to reimplement font atlases, Unicode rendering, and a million other things people take for granted these days.
Makes sense for programming nerds. Knowing a programming language doesn't make us unique anymore, but building our own IDE can get us back some nerd points
I use ebiten which through CGO uses glfw, so there’s a few layers of abstraction between Go and OpenGL. It’s true that I had to implement unicode rendering and a bunch of other things for either completeness or performance, but Ebiten was a solid foundation to build from.
Using the system WebView has pretty much the same bloat as electron (in terms of cpu and ram) unless I'm missing something? Sure it's nice that it's not 500MB on disk but day to day it doesn't affect me as much as the fact that you're still running in a browser.
It’s a fair assumption that it would, but that wasn’t my experience in practice.
Browsers are surprisingly efficient renderers. So I can use a lean AOT language for most of the heavy lifting and then just use the webview for the final painting to screen.
The final runtime isn’t actually any more CPU nor memory hungry than when I was having to store images and font atlases in GPU memory and writing to the frame buffer directly via SDL. And as a benefit of the switch, I get a richer library of widgets to draw, far fewer rendering glitches due to edge cases in fonts, graphics drivers, and a plethora of other hard-to-debug problems.
The original plan was to support both WebKit and SDL frontends (like how libghostty works) but the webview was such an accelerant on productivity and with so few drawbacks that i quickly dropped SDL support and went all in with webviews.
There exist a space between these approaches (webview, direct graphics) and TUI which nobody dares to explore anymore and I'm not sure why: native GUI apps and widgets. For example, Lazarus (FreePascal IDE / Delphi clone) gets it right. You get performance, low resource usage, portability and a good UI that's quick to use, respects platform standards and is highly discoverable.
There’s lots of reasons why that isn’t more common. Not good reasons. But reasons nonetheless.
1. It’s not cross platform.
2. Non-native but mature cross platform toolkits (eg Qt) have spotty support in many of the more recent and popular languages like Rust and Go.
3. The proliferation of the web has lead to application design becoming part of the branding. Which often works against using the sterile native widgets
4. Even before that happened, many companies still reimplemented their own spin on native widgets. Including the OS vendors themselves (Apple and Microsoft are notoriously bad at filling their own style guidelines).
5. A surprising amount of times, native widgets simple don’t exist for precise problem you need solving. For IDE example, you’d have to build your own text area anyway. Likewise for terminal emulation.
6. Web developers are cheaper
I honestly do think VB6 was peak GUI development for desktop systems. But times have moved on.
Also all the fresh implementations using OpenGL etc have to reinvent accessibility, keyboard control and many solved UX issues, which they rarely do as well as the existing platform libraries.
This is cool, but I think I'll stick with herdr and a separate browser and zed. Following the linux philosophy of using many tools that do their job well, rather than 1 tool that does everything poorly.
If they're going to do this they should have a real image viewer render images and control the coordinates of the image viewer's window by talking to the window manager. The operative word here being "should", us i3/Sway users recognize that some others may have this luxury (or not).
I remember when quality desktop ricing was a personal and novel thing, then there was commoditization of that beautiful thing and the posers outnumbered the organic ricers.
Looks like the same is happening for IDEs.
It'll fool other posers and macOS/Windows users, sure.
But when you watch someone work you can tell who carefully configured their plugins for Neovim they added incrementally over time.
It's like a suit. You can have a fancy suit, but people who have their own tailored suits can tell when the one you're wearing isn't really "your's".
hnlmorg 1 day ago
Interestingly, they’re using graphics libraries like OpenGL/Vulkan in Go. Like I originally was. But after a year of edge cases, I gave up and switched to Wails (using OS-native webviews). And I found that a good balance between avoiding the slowness and bloat of Electron, while not having to reimplement font atlases, Unicode rendering, and a million other things people take for granted these days.
whatever1 1 day ago
I am not happy with your decisions for the ide you sold me. I never was, I just coped.
The LLMs just enable everyone to build exactly what they need. And if that thing has an audience of one, so be it.
hnlmorg 19 hours ago
That’s why I’ve been running my own $SHELL for ~10 years. Even had my own Linux WM in development for a brief period.
But you’re right that it’s never been easier.
bicepjai 17 hours ago
hnlmorg 8 hours ago
ernestrc 1 day ago
hnlmorg 23 hours ago
It was a nice API to target and I got some really good performance vs memory and CPU usage out of it. But I also don’t regret moving off it.
gertop 1 day ago
hnlmorg 23 hours ago
Browsers are surprisingly efficient renderers. So I can use a lean AOT language for most of the heavy lifting and then just use the webview for the final painting to screen.
The final runtime isn’t actually any more CPU nor memory hungry than when I was having to store images and font atlases in GPU memory and writing to the frame buffer directly via SDL. And as a benefit of the switch, I get a richer library of widgets to draw, far fewer rendering glitches due to edge cases in fonts, graphics drivers, and a plethora of other hard-to-debug problems.
The original plan was to support both WebKit and SDL frontends (like how libghostty works) but the webview was such an accelerant on productivity and with so few drawbacks that i quickly dropped SDL support and went all in with webviews.
speed_spread 19 hours ago
hnlmorg 13 hours ago
1. It’s not cross platform.
2. Non-native but mature cross platform toolkits (eg Qt) have spotty support in many of the more recent and popular languages like Rust and Go.
3. The proliferation of the web has lead to application design becoming part of the branding. Which often works against using the sterile native widgets
4. Even before that happened, many companies still reimplemented their own spin on native widgets. Including the OS vendors themselves (Apple and Microsoft are notoriously bad at filling their own style guidelines).
5. A surprising amount of times, native widgets simple don’t exist for precise problem you need solving. For IDE example, you’d have to build your own text area anyway. Likewise for terminal emulation.
6. Web developers are cheaper
I honestly do think VB6 was peak GUI development for desktop systems. But times have moved on.
l1ng0 14 hours ago
metruzanca 1 day ago
bbkane 19 hours ago
ernestrc 21 hours ago
jon128 16 hours ago
I remember when quality desktop ricing was a personal and novel thing, then there was commoditization of that beautiful thing and the posers outnumbered the organic ricers.
Looks like the same is happening for IDEs.
It'll fool other posers and macOS/Windows users, sure.
But when you watch someone work you can tell who carefully configured their plugins for Neovim they added incrementally over time.
It's like a suit. You can have a fancy suit, but people who have their own tailored suits can tell when the one you're wearing isn't really "your's".
m1keil 1 day ago
amelius 1 day ago
jadar 1 day ago
hnlmorg 1 day ago
> You can download it for macOS and Linux
e12e 1 day ago
ra 1 day ago
KlausEWDev 1 day ago
ernestrc 1 day ago
__MatrixMan__ 1 day ago
LoganDark 1 day ago