Hi Tison,

Sorry I just missed that. Thanks for your reminder.

Thanks,
Yunze




> On Sep 20, 2022, at 16:35, tison <wander4...@gmail.com> wrote:
> 
> Hi Yunze,
> 
>> Just wondering if there is a way to retain the git history in the
> pulsar-client-cpp directory?
> 
> Matteo's proposal already write:
> 
>> git filter-repo --subdirectory-filter  pulsar-client-cpp
> 
> So you will retain the git history.
> 
> Best,
> tison.
> 
> 
> Yunze Xu <y...@streamnative.io.invalid> 于2022年9月20日周二 16:27写道:
> 
>> LGTM. I also listed the related files outside the pulsar-client-cpp
>> directory recently:
>> 
>> - pulsar-common/src/main/proto/PulsarApi.proto: the Pulsar binary
>>  proto file
>> - src/gen-pulsar-version-macro.py: generate the internal version info
>> - pulsar-client/src/test/proto/*.proto: test the protobuf native
>>  schema feature
>> 
>> It would not be a complicated job for that. Just wondering if there is
>> a way to retain the git history in the pulsar-client-cpp directory?
>> 
>> Thanks,
>> Yunze
>> 
>> 
>> 
>> 
>>> On Sep 20, 2022, at 07:25, 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++`
>> <http://github.com/apache/pulsar-client-c++>
>>> 2. Move the Python client code to a new repository
>>> `github.com/apache/pulsar-client-python`
>> <http://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