Simplified App Executable #772
alexanderson1993
started this conversation in
Feature Proposals
Replies: 1 comment 1 reply
|
Have you considered the risk of being tied to Bun post-acquisition? Tauri remains encouraging to me IMO but all of that makes sense to me otherwise. Naturally if I wanted to put my money where my mouth is, I'd push a PR to get Tauri working for you. In absence of that, or perhaps to make it easier for someone to pick up Tauri, would you expand on why Tauri didn't work beyond "all kinds of cross-platform problems"? Or is Bun really still the best option? On the more out-there side of things, have you considered using something like Godot or just a simple native wrapper for a web view? Do you really need Chromium to make this work? |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
There are two options for starting Thorium Nova: The first is very simple: A command line program that just starts the server, and then you can connect via a web browser. Easy peasy lemon squeezy.
The second is an app that supports kiosk mode. Ideally, this app automatically runs the Thorium Nova server unless you connect to another Thorium Nova server, at which point it activates its kiosk mode, making it difficult to switch apps or close out.
Thorium Classic's kiosk has the following bonus features:
These features are handy, but are only really useful for a commercial space center that needs to optimize for setting things up quickly. They're also kind of a pain in the butt to implement well using the current tools that I'm working with. (see the footnote below for more details)
I am not targeting commercial space centers for the initial release of Thorium Nova, and most of these features would be overkill for living room players. Thus, I'm deciding to cut this from the scope for Thorium Nova 1.0. The app executable for Thorium Nova will at most show a small window with the status of the Thorium Nova server, the IP address and/or hostname to access it, and buttons open the server URL in a web browser.
If a commercial space center is seriously interested in using Thorium Nova after 1.0 is released, we can have a discussion. (I'm considering a paid licensing agreement, allowing commercial space centers to support the development of Thorium Nova by paying for commercial features.)
The footnote - more technical details that you probably don't care about
Thorium Classic is built with a mature desktop web app framework called Electron, which also powers Discord, Slack, Spotify, and a bunch of other apps.
Electron is known for having large app sizes and using a lot of memory. It's also hardened and full of features that makes it easy for Thorium Classic to support the features listed above.
The NodeJS server runtime version that Electron uses is tied to the version of Electron, which meant I couldn't upgrade the server's NodeJS version until Electron supported it. This was really frustrating and made it hard to maintain Thorium Classic. To avoid that problem in Thorium Nova, I've decoupled the server runtime from the app framework, which has the added bonus of making it really easy to have the command line program version of Thorium Nova's server.
Bundling my decoupled server with Electron's NodeJS runtime would be overkill, I'm using a different framework altogether for the new app executable. I tried using Tauri, but ran into all kinds of cross-platform problems. I'm now planning on using a framework called Electrobun, but it's very new and doesn't have the same features that Electron has. Over time I expect it to mature, but for now, cutting back on the features and having the app be a bare-bones server launcher makes a lot of sense.
At this point, if I had to create a kiosk app for Thorium Nova for commercial purposes, I'd have it be a separate program built with Electron. Incidentally, this is how it was when Thorium first launched — I merged the server and kiosk into one program with Thorium Classic 2.0.
All reactions