Source/Interface/ExperimentalFeatures

= Experimental Features =

When Developer Extras are enabled in the Interface tab, a new Preferences experimental tab is shown. It contains non-production ready features that need feedback and design iterations.



DNA Changes and Check
The DNA struct `UserDef_Experimental` contains the variables that enable/disable experimental features in the user interface:

Although this is not the most efficient way of handling multiple variables, it is very easy to remove a setting when it is no longer experimental.

Use the macro `USER_EXPERIMENTAL_TEST` to test whether the features are enabled.

RNA Changes
In the `rna_userdef.c` file you need to create a new property in `rna_def_userdef_experimental`, but its get function can be auto-generated with the macro `RNA_USERDEF_EXPERIMENTAL_BOOLEAN_GET`:

Operators
Sometimes we have an operator which is experimental, so it will not be in the user interface at all times. However its `poll` function should not be affected by the experimental value.

This way we can make sure anyone building an add-on that calls this operator will have predictable results regardless of the user preferences. The downside is that this operator will be visible in the Operator Search.