I agree that we need to work on a more comprehensive documentation-building process. Perhaps let's start with removing old code https://github.com/apache/pulsar-site/pull/215. I'd say it needs a code bash to sort current logic - it's somewhat brittle depending on relative path, coupled shell scripts, etc. And yes, it's better for a separate proposal.
Best, tison. tison <wander4...@gmail.com> 于2022年9月20日周二 16:35写道: > 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> >> >>