Hi Tison & Matteo, I noticed a comment here: https://github.com/apache/pulsar/pull/17733#discussion_r975552686
Currently the Python Functions relies on the Python client. I see there are still some Python Function examples in pulsar-functions/python-examples directory. How should we deal with these examples? And should we still Include the Python Functions in the Docker images? Thanks, Yunze > On Sep 20, 2022, at 23:40, tison <wander4...@gmail.com> wrote: > > One more thing to mention here: > > Currently, Pulsar Docker Image bundles C++ client and Python client, and > from my perspective, the image is mainly used as a server, perhaps we can > remove these clients from bundling. > > Best, > tison. > > > Yunze Xu <y...@streamnative.io.invalid> 于2022年9月20日周二 16:50写道: > >> 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++> >>>> <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> >>>> <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>