Readit News logoReadit News
Posted by u/popcar2 2 years ago
Show HN: GodotOS – Fake operating system interface made in the Godot enginegithub.com/popcar2/GodotO...
GodotOS, an operating system interface created entirely in Godot! Browse folders, edit text files, view images, play games, and more in one cohesive polished interface that can even be used on the web.

Note that GodotOS is more of a toy than a serious project. It's meant to push the limits on UI design in Godot while creating a desktop that is minimalist, distraction-free, and aesthetically pleasing. Any feedback is greatly appreciated!

Apologies for posting again, but I forgot to include "Show HN" in the title, and when I did post yesterday Hackernews almost immediately went down for over an hour, which is unfortunate.

Gormo · 2 years ago
This is actually a great proof of concept for using Godot as a cross-platform framework for desktop applications. The distribution package is incredibly simple -- just a single executable and a data file -- and performance is excellent.

This seems much superior to Flatpak and the like as a way to offer fully self-contained distro-agnostic binary packages, and vastly superior to Electron in the performance department. Maybe desktop applications built with game engines are the next big trend.

ladberg · 2 years ago
This would be sooo much worse from a UI point of view. All nice OS features (good text rendering, uniform text editing interface, accessibility, transparency) would all get chucked out the window.

I also don't think Godot is inherently more performant for any random UI than Electron is. It happens that most Godot apps are performant because they're made by the type of people who want to use videogame engines and thus care about performance. Electron can definitely have great performance when the developers care about performance (VSCode).

I say all this as someone who's worked on game engines before.

bufio · 2 years ago
I have never encountered an Electron app that can even display the results of keystrokes in a timely manner, and that includes vscode. All Electron apps waste system resources to an obscene degree. Also, Electron apps have already thrown away OS conventions to the point that user interface consistency has become a thing of the past.

I don't believe that either choice is ideal, but if Godot were ubiquitous instead of Electron, applications would probably at least be less laggy and more memory-efficient.

Gormo · 2 years ago
> This would be sooo much worse from a UI point of view. All nice OS features (good text rendering, uniform text editing interface, accessibility, transparency) would all get chucked out the window.

This is what is already happening with people using sandboxed-runtime containers (like Flatpak) and webapp wrappers (like Electron). Desktop UX is becoming a hodgepodge of siloed runtimes and inconsistent interface paradigms.

I don't think Godot would be a great alternative to developing a conventional desktop app, relying on the OS-provided runtime environment, but if you're already deviating away from that, it might still be much better than Flatpak or Electron.

> Electron can definitely have great performance when the developers care about performance (VSCode).

But most Electron applications do not have great performance because they're not being developed this way. Using Godot would provide an easy-to-learn frontend environment (with a scripting language that might even be simpler than using web-derived JS) while still providing the performance of a game engine under the hood. So non-Microsoft developers who would otherwise use Electron might still stand a chance of releasing decent software.

lolinder · 2 years ago
Exactly. People hate on Electron because they have bad experiences with many Electron apps, but that's not because Electron is inherently terrible, it's because most developers choose Electron because it requires the lowest amount of effort. When you start with that as your single reason for choosing a tech stack, it's unsurprising that optimizing performance never happens.

VSCode works because they chose Electron for the advantages that web tech has when it comes to building a plugin ecosystem. They were then willing to put in the effort to make performance decent.

bigstrat2003 · 2 years ago
Except VSCode most certainly does not have great performance. I can open the same set of files in VSCode and Sublime, and Sublime will use a few hundred MB of memory while VSCode uses well over 1 GB. That's not acceptable.
corethree · 2 years ago
No it's better for an os UI. A web page UI is better with electron where you click on a link an open a page. But floating windows with resizeable and highly dynamic UIs Godot is likely easier, better and much more well suited.

HTML was never intended for dynamic interfaces. Whenever you diverge beyond what it does best which is hypertext, things become more and more hacky and awkward. If you wanted to design an os UI in electron, you would use a framework called react, and you would use a language called JavaScript that compiles down into typescript and you'd need a whole build ecosystem and connect everything together, then you might find HTML to awkward so you have to switch to webgl which is too low level or you might switch to svg... In both cases you miss the text rendering from HTML. If you stick with HTML then you'd be using css to move shit around and create windows which is also incredibly awkward.

People use electron because it's easy. The reason why it's easy is because of familiarity not because of actual superiority.

Web UI is one of the most hacked together technology stacks ever. Developers with nothing better to do keep coming up with new abstractions trying to build for a moving target. It's not unique in this regard but it doesn't change the reality. Godot has the benefit of a very specific design implementation for a target that is highly dynamic and likely will never change. Plus it's new so you don't have armies of developers trying to "abstract" shit on it over years and years of horizontal progress.

dartharva · 2 years ago
You are overlooking a massive point that invalidates your concerns from a homebrew developer's POV: it is _easier_ on the mind to make apps using low-code graphical interfaces than with full-code.
alfalfasprout · 2 years ago
VSCode is super laggy even on a $4000 MBP. Compared to something like IntelliJ sure, but that's a super low bar on responsiveness.
vcg3rd · 2 years ago
> All nice OS features (good text rendering, uniform text editing interface, accessibility, transparency) would all get chucked out the window.

Could you explain this to someone who doesn't program and knows nothing about how os internals?

My naive question is wouldn't the OS/DE/WM still take care of the above for an application?

brucethemoose2 · 2 years ago
> I don't think Godot is inherently more performant for any random UI than Electron

It probably depends on the app?

Electron will obviously excel at things that resemble an oldschool web page, but one would think Godot would excel at more dynamic OS UIs? If something is already sluggish or GPU heavy in Electron, I would think its right up Godot's alley.

Accessibility of course is a seperate and huge concern.

computershit · 2 years ago
Adobe Air, anyone?
popcar2 · 2 years ago
Completely agreed! I've been meaning to write a blog post on using Godot to professionally create cross-platform applications (and probably will soon). The short of it is that Godot is fantastic as a UI builder, and I think a lot of people are slowly realizing it. Many professional applications have been built with Godot[0] , and I also want to give a shoutout to Lorien[1] which is my favorite whiteboard application also made in Godot, and what partially inspired this whole project.

Godot isn't perfect of course, and there are some things that many other UI creating tools do better, but I think there's a lot of untapped potential here.

[0]: https://alfredbaudisch.com/blog/gamedev/godot-engine/standal...

[1]: https://github.com/mbrlabs/Lorien

LSRegression · 2 years ago
It's already being used for that! I use a program called Dungeondraft[1] for easily creating maps for TTRPGS and it's built on top of Godot (see the modding API page[2] where they mention Godot).

[1]: https://dungeondraft.net/

[2]: https://megasploot.github.io/DungeondraftModdingAPI/

FinalDestiny · 2 years ago
To add to the list, Pixelorama[1] is a pixel art sprite editor built on Godot.

[1]: https://godotengine.org/showcase/pixelorama/

FireInsight · 2 years ago
I don't get why people in this thread are conflating Flatpak with different ways to do desktop UI. Even if your app is a single self-contained binary, it can benefit from Flatpak. Sandboxing, permissions management, separation from system (needed on 'immutable' and image-based distributions), unified package format (don't need to create deb, rpm, etc. for a simple GUI app), and many other Flatpak's features can benefit the devs and the users alike. That has not much to do with what you use to write UI. Flatpak can't be entirely replaced by self-contained binaries.
Gormo · 2 years ago
> I don't get why people in this thread are conflating Flatpak with different ways to do desktop UI.

Flatpak is often used as a solution for creating OS-agnostic distribution packages for applications, by bundling dependencies. This is an example of a solution that provides a standalone binary, obviating the need for the extra complexity of Flatpak.

> Sandboxing, permissions management, separation from system (needed on 'immutable' and image-based distributions), unified package format (don't need to create deb, rpm, etc. for a simple GUI app), and many other Flatpak's features can benefit the devs and the users alike.

These all point out the problems with Flatpak.

Runtime sandboxing is unrelated to packaging and distribution, and having Flatpak do both of these things amounts to poor separation of concerns: how do I use a Flatpak package when I don't want sandboxing, and how do I sandbox a non-Flatpak app? The combinatorics of the use cases involved require multiple simultaneous solutions to both package management and sandboxing, which undermines Flatpak's aspiration to be a universal solution.

The attempt to unify the package format, apart from being a prime example of XKCD 927, also highlights the complexity of package management as a concept. If you're going to bundle dependencies anyway, why bother with building a packaging solution to include dynamically linked libraries? Why not release static builds that minimize the need for packaging in the first place?

The idea of Flatpak being easier on developers masks the attempt to shift packaging responsibility to app devs in the first place -- the traditional approach is that developers just work on their app, and the distro maintainers are the ones who package and distribute it. So this approach is actually extra work for devs.

> That has not much to do with what you use to write UI.

It's less about the UI and more about the self-contained nature of the executables generated by the engine.

jadtl · 2 years ago
I was trying to think of arguments against it, so I thought about the fact immediate mode GUIs might not always be suitable, before I stumbled upon this post: https://stackoverflow.com/questions/47444189/what-are-the-pe... The only other downside I can think about is from a design standpoint, the application has to have the same design language across platforms, so it cannot have a native look for each. Any other cons?
nucleogenesis · 2 years ago
I’ve been thinking about this a bit and the main concern I’ve had is around accessibility. The web has had a lot of iteration over time to make it relatively easy to build applications that are well suited for use with screen readers and other assistive technologies. Have you done any testing along those lines with the Godot UI tools?
654wak654 · 2 years ago
Some quick googling tells me Godot doesn't have native tray icons/notifications support or access to peripherals like webcams & printers. Buut if you're using Godot over electron/flutter/QT your app is probably focusing on 3D / physics topics. You can implement plugins for those other niche desktop features as you need them.
hazelnutcloud · 2 years ago
I feel like the scripting language (GDScript) is pretty bad. There's no real way to handle errors and its type system sucks compared to typescript. Not to mention you lose out on the diverse packages available from npm.
pants2 · 2 years ago
I would be concerned about power efficiency / battery life considering the type of rendering it's doing. That would be cool to get some info on.
Narishma · 2 years ago
It requires a GPU.
eru · 2 years ago
The Firefox people have some nice write-ups about how they want to / wanted to use techniques from games to make Firefox's UI faster.
themerone · 2 years ago
Electron apps work with screen readers and os accessibility feature.

Unless accessibility becomes a first class concern, game engines are not going to be good choices for desktop applications.

paulmd · 2 years ago
> This seems much superior to Flatpak and the like as a way to offer fully self-contained distro-agnostic binary packages, and vastly superior to Electron in the performance department.

The children yearn for Swing Toolkit

Gormo · 2 years ago
Swing had its issues, along with a lot of advantages over modern approaches to UI.
dataangel · 2 years ago
This doesn't remotely solve the same problem Flatpak does, you are comparing apples and oranges.
MrYellowP · 2 years ago
Did you actually do any benchmarks actually measuring CPU performance?

Last time I did that was two years (I think) ago and "excellent", even with Godot 4 beta, wasn't what I called it.

zengid · 2 years ago
If you're making a certain class of desktop app (CAD, DAWs, Video Editor) this is worth exploring!
simooooo · 2 years ago
The Godot editor is a good example of a cross platform framework for desktop applications
zilti · 2 years ago
Have you heard of AppImage?
Gormo · 2 years ago
And use it regularly. It's a great solution to test applications out before installing them, or run "portable" applications from removable media or a remote server.

But as another of those bundled-runtime solutions, like Flatpak, it suffers from the same issues, including high complexity and poor cohesiveness with the rest of the system.

turtlebits · 2 years ago
Sounds like you're describing Flutter.
janosdebugs · 2 years ago
I seriously doubt it. Game engines are, first and foremost, designed to provide a 2D or 3D graphics environment and input handling, they don't typically have the richness of UI components that you would expect for building a desktop app. Godot is no exception here, its UI components are very dated and limited in comparison what modern web-based applications can do. Furthermore, Godot specifically is limited to a single window (apart from popups) last I checked.

The other problem with Godot specifically is that every thing is tied to GDScript/the Godot typing system (yes, even the C# and gdextension APIs) and you need to deal with its inconsistencies. I'm currently implementing something as simple as a schema validator (think JSON schema) and it's nightmareishly tough in comparison to any other language I have implemented this in. And then we are not even talking about the almost universal lack of error handling in a large portion of the built-in functions, or really silly things like that opening a TCP connection apparently requiring active polling. I could go on.

I love Godot, it's super simple to build game-related things with, but holy macaroni do I wish they had thought things through just a little more when they implemented them. I would never want to build a data-heavy desktop app in Godot.

Gormo · 2 years ago
> Game engines are, first and foremost, designed to provide a 2D or 3D graphics environment and input handling, they don't typically have the richness of UI components that you would expect for building a desktop app.

Games are full desktop applications, ad often have full-featured GUIs overlaid on top of a 3D-rendered playfield.

Certain game genres, especially strategy games and RPGs, regularly implement full UI toolkits, with floating windows, list and table widgets, combo-boxes, toolbars and menu bars, etc. Some games have a superset of standard desktop widgets in order to account for standard UI functionality along with very game-specific needs.

Look at Paradox's grand strategy games for some examples of this. Some people refer to them as "spreadsheet games" because of the complexity of game data and statistics exposed through application-like UI controls.

TillE · 2 years ago
Godot 4 has proper multi-window support.

> schema validator > opening a TCP connection

You should be using C# for stuff like that. Ignore the Godot API, just use .NET 8.

But I agree that any game engine is a poor fit for general applications.

cjdell · 2 years ago
The Godot IDE itself is a "game" as in it is entirely built using Godot APIs. Makes me wonder if it would actually be a good environment to build portable business apps, sort of like a modern Visual Basic.
jeremyjh · 2 years ago
It would have all the issues of Flutter (non-native widgets, accessibility, etc) without the focus on these specific kinds of use cases.
IshKebab · 2 years ago
Only nerds care about non-native widgets.
larschdk · 2 years ago
Related: Grey Hack is a fake OS, Network, Internet in a multiplayer game where the objective is to hack (including each other). It simulates many basic functions quite well (you can steal files, place files on other computers, install software, run commands from a command line, including imitations of many tools). You can also write your own programs.
actionfromafar · 2 years ago
When will someone go all in and release a hack game with hundreds of emulated real little servers of various operating systems and vulnerabilities?
depressedpanda · 2 years ago
Some time ago, I found a site that provided different variants of VMs you could download which contained exploits you could utilize to pwn the machines. There were also walkthroughs and guides available to teach you how to break in.

Unfortunately I can no longer find the site, and my Google fu has failed me.

Unlike Hack the Box, no signup was necessary, you could just download the VM and get started.

Does anyone here know of any good alternatives they'd like to recommend?

bee_rider · 2 years ago
I’ve always thought it would be interesting to try something like that for a LARP.

It would be fun to run in an “anything goes” type setup. Get a cheap raspberry pi and install some really old Linux kernel with plenty of well know holes. I’d worry about delineating between game-machines and real ones. It would have to be totally isolated from the real network I guess.

mikepurvis · 2 years ago
At a certain point on the realism continuum, just get rid of the gamey parts and deliver someone a set of VM images that they have to boot up and break into.

(Maybe that's actually what Hack the Box is, mentioned in the sibling— I hadn't heard of that and only looked briefly at the homepage for it.)

aa6ll · 2 years ago
Isn’t hack the box already itching this?
t0astbread · 2 years ago
Yeah, my employer does that. We call it "infrastructure". /s
bitwize · 2 years ago
This might still be useful in the real world. Think movie industry, where having a mock OS for showing characters doing computer things is practically a trope in its own right. I was recently in a discussion with some fans of the movie Hackers, in which one of them asked what OS they used in the movie. My reply was to the effect of, what every movie in the 90s used, which was basically Mac OS with fake UI elements cobbled together in Macromedia Director (or Flash in later films).

With film studios increasingly turning to game engines for applications like providing real-time on-set CG as a reference for a shoot, something like this may well be the modern version of that.

netbioserror · 2 years ago
This just makes me yearn for a UI-centric minimal compilation mode for Godot. It's such an enticing target for GPU-rendered UI, and there are even some excellent libraries and plugins out there for making components that are useful in engineering or data analysis!
654wak654 · 2 years ago
You can disable a lot of Godot's features when building the engine from source [1]. Not sure how much you can save while keeping most of the 2d/3d components, but it should be possible.

[1]: https://docs.godotengine.org/en/stable/contributing/developm...

nightowl_games · 2 years ago
Pretty sure that already exists. You can choose which Godot modules you compile via the custom_modules flag. We, for example, ship a tiny wasm for our 2d Godot web games.
gcr · 2 years ago
Godot is a great sketchpad for these things. One time I was at the airport for a flight, so I wrote a quick-and-dirty notepad for the Russian pencil-and-paper game Virus War (“Война вирусов”) for my eInk tablet that my partner and I could play. It was just a grid with tappable buttons in varying states, but I was able to get a playable prototype ready for our flight.
freshnode · 2 years ago
This reminds me of a time circa 2005 where "Sub OSes" were somewhat popular in the GameMaker community. Seems that given enough time someone will try to make an OS-like interface in a given game engine.

It was a great way to understand UI and usability paradigms beyond building game mechanics.

This definitely triggered some pleasant nostalgia for me.

trigonated · 2 years ago
Nice to see someone else who also remembers those.

I was the creator of Tiagix OS, AFAIK one of the first subOSes that actually had support for creating apps for it.

Learned a lot about GUI toolkits making it, since I had to implement one from scratch for it.

arjonagelhout · 2 years ago
Do you have any material online on Tiagix OS? I can't seem to find anything from a quick Google search.
freshnode · 2 years ago
Looks like there's still some activity in the "scene" all these years later.

https://forum.gamemaker.io/index.php?threads/gm8-subos-proje...

wejick · 2 years ago
Also there are some in browser operating system as well, typically they have OS UI shell and applications. Unfortunately I forgot their names.
lmpdev · 2 years ago
Yes I remember the same for The Games Factory 2/Multimedia Fusion
Wowfunhappy · 2 years ago
> Note: GodotOS is not actually an operating system, it's an application with an interface resembling one.

...actually, is GodotOS any less of an operating system than early versions of Windows?