Hi all, We have the next LTS release, Pulsar 4.0, scheduled for October. The current master branch will most likely become the 4.0 release branch in September.
Since 4.0 will be the next LTS release, we aim to complete larger changes in the codebase before the release. I'm particularly interested in cleaning up the Managed Ledger interface. The cleanup of the Managed Ledger interface involves changing the Pulsar core to depend on the interface, not on the implementation details. Currently, this is not the case. A lot of Pulsar core code specifically depends on implementation classes such as ManagedLedgerImpl, ManagedCursorImpl and PositionImpl. In addition to decoupling the core of Pulsar from the implementation details of Managed Ledger, I'm also planning to rename the base package of the Pulsar Managed Ledger module from org.apache.bookkeeper.mledger to org.apache.pulsar.mledger. There are historical reasons why the package prefix is org.apache.bookkeeper. I suppose there was a plan a long time ago to move the module as part of the Bookkeeper project. That goal no longer exists. The consequence of the org.apache.bookkeeper.mledger package is that Managed Ledger log messages contain the org.apache.bookkeeper.mledger prefix, which often confuses Pulsar users and developers about the component's origin. This will finally be addressed during this work. I plan to make changes gradually in the master branch without breaking external Pulsar end-user interfaces. Therefore, these changes can be considered as internal cleanup and refactoring, which don't necessarily require a PIP decision before proceeding. I do plan to create a PIP document later to collect some of the design decisions once they are made. However, at this moment, there are no significant up-front design decisions that need to be made by the community. In Apache projects, decisions are made on the mailing list and this thread is one form of making decisions. Unless there are objections to what is presented here, I will proceed with the work as planned. Individual work items will be reviewed in PRs as usual. One detail to solve and document is how Pulsar code maintenance will be handled once the master branch has diverged significantly from the maintenance branches. It seems that Pulsar 4.0 will be the first branch where there will be significant differences between the previous maintenance branches. This challenge will be addressed in the PIP document when it becomes timely. It will also require documenting changes to contribution guidelines so that contributors know how to contribute to the maintenance branches. Currently we primarily target the master branch in PRs. Decoupling Pulsar core from Managed Ledger implementations will open up ways to add new Managed Ledger implementations in the future and make it pluggable. This will help Apache Pulsar stay relevant in the future. I believe other Pulsar contributors share and support this goal too. Please review the first PR for cleaning up Managed Ledger interfaces: "Replace dependencies on PositionImpl with Position interface" https://github.com/apache/pulsar/pull/22891 Since this is a prerequisite for the next work items in Managed Ledger interface cleanup, I hope that we can complete the review of this PR asap. We don't have much time to waste before the 4.0 release freeze in September. Looking forward to your feedback and contributions in this area, -Lari