merlimat commented on issue #3228: Provide separate module with Pulsar v1 client API wrapper URL: https://github.com/apache/pulsar/pull/3228#issuecomment-449493351 > It raises few questions for the clients who are using V1 api and not ready to move V2 yet but still want to use new features. In every system you need to expect to upgrade and follow newer best practices in order to use new features. That is unrelated to the compatibility of older client library which is out of question. > 1. are we going to maintain this V1 api artifact with the new configuration changes? Anyone interested in adding the new features in the v1 API can still update the 1x wrapper and add them. It will be trivial to do so. > 2. it will enforce client app to change artifact dependency else their existing app will fail. An application is not "forced" to upgrade the artifact dependency. It might want to upgrade to get new bug or security fixes. In that case it will have to update the Maven dependency (the version, at least). If the application is using the v1 API, it will have to switch to use `pulsar-client-1x` instead of `pulsar-client`. This will be clearly documented. To summarize: 1. The upgrade is not required 2. If you want to upgrade version, also change artifact id. > So, instead can't we keep this api into the same pulsar-client artifact because anyway it doesn't have many classes and it will be easy to maintain if we have everything under one location. The purpose of marking API methods as "Deprecated" is to give a warning and remove them in the future. The current state of things is very confusing because we have 2 sets of APIs that a user have to chose from. This adds a lot to the knowledge required to get started with the API. There are additional issue in the current state: * Because of shading, we're not able to attach javadoc and source jars to `pulsar-client`. The result is that developers cannot get javadoc in the IDE when using `pulsar-client`. * To achieve that, we need to separate `pulsar-client` and `pulsar-client-api`. `pulsar-client-api` will just contain the interfaces (and not be shaded). Older API has a mix of interfaces and POJO which access concrete classes in other package. That kind of derailed over time and this is a way to fix that, do the cleanup and expose a very clean API surface.
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
