apache / celix

Apache Celix is a framework for C and C++14 to develop dynamic modular software applications using component and in-process service-oriented programming.
https://celix.apache.org/
Apache License 2.0
170 stars 89 forks source link

framework upgrade issue #768

Closed wunan799 closed 2 months ago

wunan799 commented 2 months ago

The issue I’m encountering is that when I develop and release a bundle using Celix version 2.4.0, and the container is also using version 2.4.0, the bundle works fine. However, if the container’s framework is upgraded to version 3.0.0, the previously released bundle (2.4.0) becomes unusable. It has to be recompiled and released under version 3.0.0. I hope to decouple the bundle and framework to achieve binary compatibility; otherwise, upgrading becomes very difficult.

PengZheng commented 2 months ago

You are correct. Upgrading to 3.x will break lots of things. That's why we have a dedicated support/2.4 branch. It will be maintained to give our users enough time to finish the upgrading after 3.0.0 is released.

Please note that 3.x is still NOT ready for production usage.

wunan799 commented 2 months ago

In our use case, we operate as an open plugin platform that allows third-party developers to create and release bundles. This makes it difficult to synchronize framework upgrades between the platform and the bundles. If the platform upgrades its framework independently, it means that bundles that haven’t been upgraded will no longer work, which is unacceptable. I suggest decoupling the bundles from the framework and avoiding linking during compilation. This way, as long as the framework upgrade maintains interface compatibility, the platform upgrade will not affect the use of older versions of the bundles.

PengZheng commented 2 months ago

This 3.0.0 is all about interface incompatible changes, some of which are listed here: https://github.com/apache/celix/issues/509

If necessary, we can extend support/2.4 to support/2.x, which accepts feature backports from the trunk in addition to planned bug fixes. Then further 2.x releases can be made from this branch.