l3mpire / lemverse

The first-ever coworking metaverse
https://app.lemverse.com
GNU Affero General Public License v3.0
150 stars 42 forks source link

Feature flags #74

Open ramnes opened 2 years ago

ramnes commented 2 years ago

Except for the core of the app (i.e. people moving around and WebRTC being triggered when two people are close), it would be great if all features could be toggled, through the settings or in-app.

Things we may want to enable or disable:

This would also help when working on new features – we could release the code in production even when a feature is not 100% ready yet, keep working on it on a development instance and disable the feature in production. That way we wouldn't have to keep two distinct git branches with one lagging behind, which helps when you want to patch things.

Also, if we go through a module-based approach, we would make out-of-tree code standard, which would help minimizing the codebase here and contributions through third party codebases.

Donorhan commented 2 years ago

There is lp.isLemverseBeta('myBetaFlag') to set flags on users, isn't that enough?

ramnes commented 2 years ago

That works for new features but not the existing ones. We can't disable the chat that way, for example. :)

alimtunc commented 1 year ago

https://github.com/l3mpire/lemverse/pull/139

ramnes commented 1 year ago

161 started to implement a new features configuration model in the settings:

{
  "features": {
    "useMessaging": {
      "enabled": true,
      "guestEnabled": false,
      "levelConfigurable": true
    },
    ...
  }
}

It covers most cases but now we have a lot of things to refactor to follow that model. :)