Experimental Functionality

Last modified 12 Nov 2021 16:57 +01:00

Some parts of midPoint functionality are marked as experimental. It means that those features are not intended for production use. Such features are not finished. They are not stable. The implementation may contain bugs, the configuration may change at any moment without any warning and it may not work at all. Use at your own risk. This feature is not covered by midPoint support. In case that you are interested in supporting development of this feature, please consider purchasing midPoint Platform subscription.

Excluded from support services

Experimental functionality is explicitly excluded from all support services that Evolveum provides - unless inclusion of such functionality was explicitly negotiated in the support/subscription contract. This is usually the case for platform subscribers that are funding development of the functionality. As bigger part of midPoint functionality cannot be delivered in a single release cycle, intermediary results are delivered in a form of experimental functionality. While this is generic functionality designed to benefit broad range of users, current implementation of the functionality may be limited. Such functionality is tested to support only certain use cases, usually the use cases of the platform subscriber that funds the development.

Bug reports for this functionality are very likely to be turned down - unless you are the subscriber that funds the development of this feature.

It may still make sense for the community to report bugs and improvement suggestions to provide feedback to the development. However, those report may not get any priority and they may be postponed indefinitely. In case that you want to make sure that this functionality matures as soon as possible please consider activating midPoint subscription. This is still useful even in the case that there is already a subscriber driving the functionality as your use-cases may be different. Also, more funding will mean faster development and higher quality of the result.

The reason for having experimental functionality in midPoint is the need to evolve the product. The world around us is changing all the time. Therefore, MidPoint must adapt. We are also strongly committed to improve midPoint. All of this effort requires a constant evolution of midPoint source code. New features are added in every midPoint release, older features are improved. We are quite confident about most of those changes and most of the code is based on solid design, well implemented and receives proper quality assurance. However, there are parts of identity management and governance that are not well understood yet. And any progressive IDM product needs to explore those areas. There are also software engineering techniques introducing more risk than usual. And of course, there are time and budget constraints. Occasionally, we are trying new techniques and we are experimenting with functionality that cannot be fully finished. This is a natural part of software development.

To be completely fair to midPoint users, we are marking such functionality as experimental. Therefore, midPoint users know what to expect. This functionality may work all right for many midPoint users. But there may be limitations. And because the functionality was not tested and we are not entirely sure about the concepts yet, such functionality may change completely at any time. Therefore, use experimental functionality at your own risk.

Experimental functionality is marked in midPoint documentation. But it is also marked in midPoint shchema:

           <xsd:element name="foo" type="xsd:string" minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>
                        Blah blah blah ....
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:experimental>true</a:experimental>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

It is also marked in midPoint source code:

@Experimental
public interface DashboardService {
    ...
}

Enable Experimental Features

There are two places in System Configuration where you can turn the experimental features on. The experimental features are turned off by default, which means that midPoint GUI will not display them, if the GUI is aware that a particular feature is experimental.

Enable Experimental Code

Can be used to turn on any experimental backend code.

Enable Experimental Code
<systemConfiguration>
    ...
    <internals>
        <enableExperimentalCode>true</enableExperimentalCode>
        ...
    </internals>
</systemConfiguration>

Enable Experimental Features

Can be used to turn on any experimental GUI-based features. As this is part of adminGuiConfiguration, it may be in the System configuration object or in roles/organizations assigned to the users.

Enable Experimental Features
<systemConfiguration>
    ...
    <adminGuiConfiguration>
        ...
        <enableExperimentalFeatures>true</enableExperimentalFeatures>
    </adminGuiConfiguration>
</systemConfiguration>
Was this page helpful?
YES NO
Thanks for your feedback