Closed wunan799 closed 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.
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.
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.
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.