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

Reply via email to