Re: [DISCUSS] Make the API compatibility guarantee clear

2023-07-18 Thread Zike Yang
> we can allow adding new "public" methods as you mentioned, but only if this doesn't change the semantics of an interface. However, I think we should not allow introducing a new method to the interface that is possibly used by the user to the patch release. For instance, If a user is using a new

Re: [DISCUSS] Make the API compatibility guarantee clear

2023-07-16 Thread PengHui Li
Hi Yunze, Thanks for raising the discussion. IMO, The major issue is we don't have a clear API definition for the pulsar-broker module like pulsar-client-api and pulsar-client-admin-api modules. We have a clear Interface Taxonomy[0] for pulsar-client-api and pulsar-client-admin-api modules. I don

Re: [DISCUSS] Make the API compatibility guarantee clear

2023-07-14 Thread Yunze Xu
Hi Enrico, > Also adding it to all the existing classes is a big task. Yes. I don't support adding it to existing classes as well. But we need to apply the annotation for new code. > because basically we wouldn't be able to commit change if we prevent > adding/removing methods that are marked

Re: [DISCUSS] Make the API compatibility guarantee clear

2023-07-14 Thread Lari Hotari
Commenting on bringing up the example of PR https://github.com/apache/pulsar/pull/20733 . It isn't a good example of breaking compatibility at all. The WebSocketPingPongServlet and PingPongHandler never made any sense. The issue eclipse/jetty.project#4880 [1] explains that Websocket Pong is provid

Re: [DISCUSS] Make the API compatibility guarantee clear

2023-07-14 Thread Enrico Olivelli
Yunze, I agree overall with the proposal, I added some comments inline below Enrico Il giorno ven 14 lug 2023 alle ore 13:25 Yunze Xu ha scritto: > > Good suggestion. We can try that. > > Thanks, > Yunze > > On Fri, Jul 14, 2023 at 7:03 PM Lari Hotari wrote: > > > > Makes sense. We should use t

Re: [DISCUSS] Make the API compatibility guarantee clear

2023-07-14 Thread Yunze Xu
Good suggestion. We can try that. Thanks, Yunze On Fri, Jul 14, 2023 at 7:03 PM Lari Hotari wrote: > > Makes sense. We should use tooling in CI to enforce binary > compatibility of the modules that shouldn't break. > There's japicmp [1] that can be used to do this. japicmp comes with a > maven p

Re: [DISCUSS] Make the API compatibility guarantee clear

2023-07-14 Thread Yunze Xu
In addition to the rule of the patch releases, it's acceptable to have new public methods for bug fixes, though we should pay enough effort to avoid it. If so, we should not remove or change any public method. I just checked a few recent PRs in branch-3.0 and added some examples here. https://git

Re: [DISCUSS] Make the API compatibility guarantee clear

2023-07-14 Thread Lari Hotari
Makes sense. We should use tooling in CI to enforce binary compatibility of the modules that shouldn't break. There's japicmp [1] that can be used to do this. japicmp comes with a maven plugin [2] that needs to be configured with the rules to be used. -Lari 1 - https://siom79.github.io/japicmp/ 2

[DISCUSS] Make the API compatibility guarantee clear

2023-07-14 Thread Yunze Xu
Hi all, As the Pulsar community is growing, the core project could be depended on by many ecosystem projects, including protocol handlers and connectors. However, there is no clear API compatibility guarantee at the moment. For now, PIP is required when public APIs change [1]. However, I think th