thorium-nova
thorium-nova copied to clipboard
Feature Flags
Is your feature request related to a problem? Please describe.
Some crews and flight directors might not want to use all of the features. Maybe there should be some way of adding feature flags of sorts.
Describe the solution you'd like
I have no idea. Suggestions welcome. This won't be marked as approved until we have a good plan for moving forward.
Like, what even counts as a feature?
Additional context
This would be especially helpful for a few reasons
- Letting users decide to not use certain features
- Enabling release channels, so users can choose to opt-in to beta features
- Seamless, OTA updates instead of requiring users to download the entire app whenever they want to update. Feature flags make it so we can do those updates without changing everything around suddenly.
This also might be a bad idea - too much complexity, not a whole lot of value. I might just reject this idea anyway, but I want to hear if anyone has any other ideas.
This might be a really "dumb" question but, what would you consider a feature? Is a feature basically the different items you can choose to install when setting up thorium?
Not a dumb question - I asked it myself
Like, what even counts as a feature?
I don't have an answer really. I suppose at its broadest, a feature is anything that we change in the behavior of Thorium Nova that causes a user to go "Hey, wait. I liked it the way it was before better. Change it back!"
As far as potential features that not everyone who downloads thorium might want (or might change the way thorium feels/functions), I can see the following:
- Main View screens
- Various assets related to Thorium Nova's story (i.e. missions, ship files, music) beyond the basics needed for initial tutorials and such.
- Any language files (if even applicable for Nova)
- "Extra themes/skins" beyond what is determined to be the "basic" pack.
- Non-required job related materials (i.e. medical).
- Any "mini-games" that are not required for normal gameplay. (I don't think this has been discussed but I could see some jobs having "mini games". For example: the pipe game for the engineer, an asteroids game for tactical, an alignment game for transporters, etc. Many mini games could be accomplished via a mini game or a more basic screen depending on the setup (and possibly even using real IO in the future, similar to the competition ran for Thorium Classic a while back)) (A version of your atom game might even apply here)
- The Vox plugin for voice manipulation.
- The ai version of the ship's interior might even be considered a feature. But it might be tied into too many things to not be considered as a feature.
I can see some people maybe wanting to install a "lite" version of thorium that only includes the bare minimum to run on "wimpier" pcs.
I'm not sure as to complexity vs added value for any of these items being features but they are what I came up with at first thought as being potential "features".
That's a good list. Many of them are configurable as plugins, like extra themes and assets, but some of them are definitely deeply integrated and would need something special to toggle on and off.
I don't know how hard it would be to do this kind of stunt. But what if everything is a plugin. Like a flight behavior plugin for a ship, or a different view screen plugin. This way by disabling the plugin itself you could implement a feature flag system. But I simply do not know enough about your plugin system to be certain if it's possible or if it would just throw out more issues than by just implementing some simple configuration feature flags.
Plugins are just content packs. I would call any external package that adds code a "mod" and we decided in this discussion https://github.com/Thorium-Sim/thorium-nova/discussions/32#discussioncomment-1510208 that mods are a no-go. We'll expect people to just add code to the core. The feature flag discussion actually started in that discussion anyway.
Mods would add a ton of complexity and difficulty, especially when it comes to adding in new UI to the frontend. It's easier on developers to just build it in directly.
The current plugin system I think answers this question.
As it stands, we are putting in what is necessary to run it, then different content packs people can add as plugins all they want.
It may be worth it to come back to this once we are closer to a more feature filled system to see what can be classified as "absolutely necessary" and "Optional that some people will pass on."