Thanks for your reply! I'm going to call a vote now for a consensus on the
donating direction.

Then I'll handle the IP clearance process.

For repo organizing strategy, I recognize Zixuan's suggestion that
fine-grained modules can help downstream projects to use and combine them
more flexibly. While the technical works are always "merge auth code,
unifying APIs, separate modules", I suggest we host the code all under the
pulsar-client-go repo first and split them into auth, client, and admin if
there are requirements and volunteers.

Best,
tison.


Enrico Olivelli <eolive...@gmail.com> 于2023年8月1日周二 05:55写道:

> +1
>
> Thanks
> Enrico
>
> Il giorno lun 31 lug 2023 alle ore 17:59 Zixuan Liu
> <node...@gmail.com> ha scritto:
> >
> > This is a good idea for the Pulsar community.
> >
> > > The first one is hosting code in three repos: pulsar-admin-go,
> > pulsar-client-go, pulsar-auth-go. Then factor out the shared auth logics
> > into pulsar-auth-go and let pulsar-admin-go and pulsar-client-go depend
> on
> > it.
> >
> > I prefer this idea. The `go get` depends on the git tag/branch/commit,
> > when three modules are in one repo, this version number can cause
> > confusion.
> >
> > Thanks,
> > Zixuan
> >
> > 太上玄元道君 <dao...@apache.org> 于2023年7月31日周一 17:19写道:
> > >
> > > +1
> > >
> > > Thanks,
> > > Tao Jiuming
> > >
> > > Yunze Xu <x...@apache.org>于2023年7月31日 周一16:26写道:
> > >
> > > > LGTM.
> > > >
> > > > Thanks,
> > > > Yunze
> > > >
> > > > On Wed, Jul 26, 2023 at 5:11 PM tison <wander4...@gmail.com> wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > ## Motivation
> > > > >
> > > > > Pulsar brokers serve two kinds of client-side requests: data panel
> > > > requests
> > > > > (often known as client-api) and control panel requests (often
> known as
> > > > > admin-api).
> > > > >
> > > > > Pulsar has multiple client libraries support among Java, C++,
> Python,
> > > > > Golang, C#, Node.js, etc. While most of them implement the
> client-api,
> > > > > currently, only the Java library implements the admin-api.
> > > > >
> > > > > Nowadays, many Pulsar deployments are in cloud environments, where
> Golang
> > > > > dominates the domain. Thus, there is an increasing requirement to
> make
> > > > > control panel requests with integrations of those Golang libraries.
> > > > >
> > > > > StreamNative invented pulsar-admin-go[1] during its development of
> Pulsar
> > > > > Cloud services. The library is open-sourced months ago[2].
> > > > >
> > > > > Now, we’d propose donating this library to the Apache Pulsar
> project
> > > > cause
> > > > > Apache provides a solid way to release software, and we may find
> some
> > > > > opportunities to deduplicate code between pulsar-admin-go and
> > > > > pulsar-client-go.
> > > > >
> > > > > [1] https://github.com/streamnative/pulsar-admin-go
> > > > > [2] https://github.com/apache/pulsar/discussions/19932
> > > > >
> > > > > ## Features
> > > > >
> > > > > pulsar-admin-go follows all the features that Java’s
> pulsar-client-admin
> > > > > provides. Currently, it supports management over:
> > > > >
> > > > > - BrokerStats
> > > > > - Brokers
> > > > > - Clusters
> > > > > - Functions
> > > > > - FunctionsWorker
> > > > > - Namespaces
> > > > > - NsIsolationPolicy
> > > > > - Packages
> > > > > - ResourceQuotas
> > > > > - Schema
> > > > > - Sinks
> > > > > - Sources
> > > > > - Subscriptions
> > > > > - Tenants
> > > > > - Topics
> > > > >
> > > > > ## Development
> > > > >
> > > > > The open issue for pulsar-admin-go’s development is how we
> organize code
> > > > > into repos for pulsar-admin-go and pulsar-client-go.
> > > > >
> > > > > Java’s pulsar-client-admin depends on pulsar-client. Although
> > > > > pulsar-admin-go doesn’t depend on pulsar-client-go, they share the
> same
> > > > > code implementation of auth logics.
> > > > >
> > > > > Generally, maintaining duplicate code is not a good idea. So we
> have two
> > > > > ways to avoid this situation.
> > > > >
> > > > > The first one is hosting code in three repos: pulsar-admin-go,
> > > > > pulsar-client-go, pulsar-auth-go. Then factor out the shared auth
> logics
> > > > > into pulsar-auth-go and let pulsar-admin-go and pulsar-client-go
> depend
> > > > on
> > > > > it.
> > > > >
> > > > > In this way, although it provides a clear boundary between
> modules, it
> > > > may
> > > > > increase the burden of managing issues and releasing them.
> > > > >
> > > > > Thus, I’d prefer the second approach: hosting pulsar-client-go and
> > > > > pulsar-admin-go code both under the current
> apache/pulsar-client-go repo,
> > > > > and deduplicate auth logics by letting pulsar-admin-go use the
> current
> > > > auth
> > > > > logic provided in pulsar-client-go.
> > > > >
> > > > > In this way, we simplify the process of managing issues and doing
> > > > releases,
> > > > > while we should take more care of how to release these three
> logically
> > > > > separated modules in one repo.
> > > > >
> > > > > If nowadays Golang can compile code in packages, we should be fine
> to
> > > > merge
> > > > > pulsar-admin-go code just into apache/pulsar-client-go in packages.
> > > > > Otherwise, we should refactor the code into three go modules.
> > > > >
> > > > > For version strategy, as Java’s pulsar-client-admin and
> pulsar-client do
> > > > > simultaneous releases, pulsar-client-go and pulsar-admin-go can do
> > > > > simultaneous releases also. I expect that pulsar-admin-go doesn’t
> evolve
> > > > > quite rapidly to require its own release cycle, but almost
> bugfixes along
> > > > > with the evolution of pulsar-client-go.
> > > > >
> > > > > ## Schedule
> > > > >
> > > > > [ ] Consensus on the overall direction
> > > > > [ ] Consensus on the repo organizing strategy
> > > > > [ ] IP clearance
> > > > > [ ] Repo transfer and setup
> > > > >
> > > > > Looking forward to your feedback!
> > > > >
> > > > > Best,
> > > > > tison.
> > > >
>

Reply via email to