Sent from my iPhone

> On Sep 19, 2022, at 7:29 PM, Baodi Shi <baodi....@icloud.com.invalid> wrote:
> 
> Hi, @merlimat. Looks good to me. 
> 
>> Both C++ and Python clients will continue with their own individual 
>> versioning.
>> 
>> In order to not break anything or cause more confusion, we would need to use
>> a new version that is bigger than the current version (2.11.x).
>> 
>> The suggestion is to start the new releases for both C++ and Python from 
>> 3.0.0.
> 
> In the future, Can we need to maintain a compatibility list? For the user, 
> how should he choose the appropriate client version to match the broker?

I think that this a question for maintaining documentation for clients 
including these Apache Pulsar provided clients.

- Java
- C++
- Python
- Node JS
- Go
- Spring Reactive

There could be a yaml schema defining the main Java client and each client 
could cover the portion that they cover. A matrix could be built in the 
pulsar-site build.

Maybe swagger files make more sense … again I see a parallel PIP.

Regards,
Dave
> 
>> 
>> #### Existing branches
>> 
>> Existing branches of Pulsar, where the C++ client will still be in the same 
>> main
>> the repository and will be receiving bug fixes in their current location.
>> 
>> The different location of the new C++ code will make the cherry-picking 
>> process
>> slightly more painful in the short term, though it will even out in long 
>> term.
> 
> The current existing issue, is need to move to the new repository?
> 
> Thanks,
> Baodi Shi
> 
>> On Sep 20, 2022, at 07:2520, Matteo Merli <mme...@apache.org> wrote:
>> 
>> https://github.com/apache/pulsar/issues/17724
>> 
>> 
>> 
>> ## Motivation
>> 
>> Pulsar C++ code base is in the same main repository for the Pulsar project.
>> 
>> While the decision was the right one at the time, there is a
>> considerable overhead
>> in keeping the C++ client in its current position.
>> 
>> ### Issues with the current approach
>> 
>> The Pulsar repository has grown a lot in size and number of active 
>> developers.
>> 
>> 1. The frequency of changes in various parts of the codebase has increased 
>> to a
>>   point where the amount of resources dedicated to CI is very significant.
>> 
>>   Every change in Java code will trigger the CI jobs for the C++
>> client and every
>>   change in the C++ client will do the same.
>> 
>>   During a CI job we are building the C++ client multiple times:
>>    1. For C++ and Python client tests
>>    2. To build Python wheels to be included in the pulsar Docker
>> images (for supporting
>>       Pulsar functions)
>> 
>> 2. The release process for Pulsar has become very complex and
>> requires building a
>>   large number of binaries for C++ and Python clients. This has
>> become too much
>>   of a burden during the course of a Pulsar release.
>> 
>> 
>> ## Goal
>> 
>> Decouple the development of C++ and Python client libraries from the 
>> development
>> of the core components of Pulsar in Java.
>> 
>> 
>> ## Changes
>> 
>> ### Repositories
>> 
>> 1. Move the C++ client code to a new repository
>> `github.com/apache/pulsar-client-c++`
>> 2. Move the Python client code to a new repository
>> `github.com/apache/pulsar-client-python`
>> 
>> The change will be done without losing any history, extracting a
>> sub-directory into
>> a new Git repository.
>> 
>> ```
>> git filter-repo --subdirectory-filter  pulsar-client-cpp
>> ```
>> 
>> ### Release process
>> 
>> The release process will be split in multiple parts:
>> 
>> 1. the main Pulsar release will only contain the Java parts (server
>> distribution
>>   and Java client library)
>> 2. The C++ client will have its own release schedule and versioning
>> 3. The Python client will have its own release schedule and versioning
>> 
>> #### Versioning
>> 
>> Both C++ and Python clients will continue with their own individual 
>> versioning.
>> 
>> In order to not break anything or cause more confusion, we would need to use
>> a new version that is bigger than the current version (2.11.x).
>> 
>> The suggestion is to start the new releases for both C++ and Python from 
>> 3.0.0.
>> 
>> 
>> #### Existing branches
>> 
>> Existing branches of Pulsar, where the C++ client will still be in the same 
>> main
>> the repository and will be receiving bug fixes in their current location.
>> 
>> The different location of the new C++ code will make the cherry-picking 
>> process
>> slightly more painful in the short term, though it will even out in long 
>> term.
>> 
>> 
>> ### Projects dependencies
>> 
>> #### C++/Python --> Pulsar
>> 
>> Both C++ and Python unit/integration tests are designed to run against
>> a standalone
>> instance of Pulsar broker. In the current form, they're using the `master` 
>> code
>> that is built to run the tests.
>> 
>> After the split, the unit tests will use a Docker image of Pulsar. We
>> can use a few
>> different images to test for compatibility
>> 1. Latest stable (eg: 2.10.1)
>> 2. Nightly (Pulsar Docker image published every day from master branch)
>> 
>> #### Pulsar --> Python
>> 
>> To create a Pulsar image, we are now building the Python client wheel
>> file and then
>> installing it at build time.
>> 
>> Instead, we are going to include a wheel file for a version of the Python 
>> client
>> that has been already released.
>> 
>> #### Python --> C++
>> 
>> The Python client library is just a wrapper on top of the C++ client.
>> Today these
>> are built together, with Python wrapper code residing in a
>> sub-directory of C++ client
>> code, and compiled using the same CMake build script.
>> 
>> By separating the Python client into a different repository, we are going to
>> depend on an already released version of the C++ client.
>> 
>> 
>> #### Automated documentation in the website
>> 
>> On the Pulsar website we are auto-generating C++ documentation with the 
>> Doxygen
>> tool and the Python one with Pdoc.
>> 
>> Instead of just fetching the main repo code, the website build job should be
>> also fetching the new repos to run the tooling.
>> 
>> 
>> 
>> 
>> 
>> 
>> --
>> Matteo Merli
>> <mme...@apache.org>
> 

Reply via email to