Qt licensing is moving towards granular model with smaller baseline products and separately sold / delivered additional modules. Currently Qt DC / B2Qt architecture does now follow this. E.g. if customer A has only Qt DC license but customer B has both Qt DC and M2M license, we either need to leave M2M protocols outside of B2Qt image making customer B unhappy and having difficulties in getting started or include M2M protocols for all B2Qt images enabling features for customer A for which they in fact do not have a license for. Both options are bad thus we need to be smarter with our architecture.
B2Qt is a quick and generic getting started environment but doe to the above issues we have been forced to enable pretty much all possible imaginable use cases on it. It would be better to enable a minimum set and then provide an easy model to add missing bits. Having said that, we need to avoid becoming a embedded OS configurator.
Epic covers use case where release manager uses tooling (QtCreator etc.) with conan support to create custom SDK's and target images that contains addons which are available via conan (conan has yocto support to install build packages to image https://docs.conan.io/en/latest/integrations/cross_platform/yocto.html#deploying-an-application-to-a-yocto-image).
Enable add-on model for Qt DC. This is needed for new channel, changes in product structure and ability to add 3D runtime, M2M protocols etc on the B2Qt images based on acquired license and availability of the libraries. Also, 3rd party partner will benefit from this capability.
It should be possible to add a library / feature to a B2Qt stack without rebuilding the whole stack from scratch. If feasible, we should use same model on embedded as used delivering modules from a channel outside of installer (Marketplace) to Desktop (additional library Conan packaging delivery).
We have atleast one additional library module with which we can demonstrate this capability and we believe this capability is generic enough to cater for needs on various different libraries.