> You completely misunderstood what I meant.

I don’t get your point, I tried my best to answer/explain each of your 
questions/concerns.

> kyuubi-shaded-hive-service-rpc,
> kyuubi-hive-service-rpc-shaded
> 
> I just wanted to know why these two kinds of naming policies can make
> both end-users and kyuubi developers happy?

Just follow the common practice, I believe I have listed sufficient examples to 
prove that.

>> Personally, I think it’s a quite common practice, especially in Apache 
>> projects, thus it’s obvious to me, for example:
>> 
>> - 
>> https://mvnrepository.com/artifact/org.apache.hbase.thirdparty/hbase-shaded-netty
>> - 
>> https://mvnrepository.com/artifact/org.apache.hadoop.thirdparty/hadoop-shaded-guava
>> - https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-jackson
>> - https://mvnrepository.com/artifact/org.apache.iceberg/iceberg-bundled-guava

>> Also, I just follow the most popular name pattern 
>> `<project_name>-shaded-<thrid_party_name>` to name Kyuubi shaded artifacts.


====================================================================================================

> Is it said that if an end-users use kyuubi-hive-jdbc-shaded as a JDBC
> Driver, he/she could not use kyuubi-shaded-hive-service-rpc as
> as a thrift client?


We encourage users to use `kyuubi-hive-jdbc-shaded` and do not recommend users 
to use `kyuubi-shaded-hive-service-rpc`, `kyuubi-shaded-hive-service-rpc` is 
designed for Kyuubi project internal usage, we should not expose those shaded 
classes to public API. But as I said before

> Technically, we can not stop the user from using such shaded API directly.

Thanks,
Cheng Pan


> On Nov 30, 2023, at 14:34, Kent Yao <y...@apache.org> wrote:
> 
> Hi Pan,
> 
> You completely misunderstood what I meant.
> 
> kyuubi-shaded-hive-service-rpc,
> kyuubi-hive-service-rpc-shaded
> 
> I just wanted to know why these two kinds of naming policies can make
> both end-users and kyuubi developers happy?
> 
> Why is even this necessary?
> 
> Is it said that if an end-users use kyuubi-hive-jdbc-shaded as a JDBC
> Driver, he/she could not use kyuubi-shaded-hive-service-rpc as
> as a thrift client?
> 
> Cheng Pan <pan3...@gmail.com> 于2023年11月30日周四 11:25写道:
>> 
>> 
>>>> The artifacts end with “-shaded” are for end users.
>>> 
>>> This looks like an explanation for mistakes we've already made.
>> 
>> I don’t think they're mistakes, only facts. In practice, there are various 
>> ways to name this type of jar, we just picked one of them.
>> 
>> There are some examples:
>> 
>> - https://mvnrepository.com/artifact/com.datastax.oss/java-driver-core-shaded
>> - 
>> https://mvnrepository.com/artifact/org.apache.zeppelin/zeppelin-interpreter-shaded
>> - 
>> https://mvnrepository.com/artifact/org.apache.iceberg/iceberg-spark-runtime-3.3
>> - https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client-api
>> - https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client-runtime
>> - 
>> https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kinesis-asl-assembly
>> 
>> Currently, Kyuubi has two such modules
>> 
>> - kyuubi-hive-jdbc-shaded
>> - kyuubi-spark-authz-shaded
>> 
>> The main purpose of this kind of artifact is to assemble all transitive 
>> dependencies into one jar, usually with proper third-party class relocation 
>> but WITHOUT changing any public API, e.g. for the JDBC driver, the public 
>> API is JDBC API, it also means that the user can migrate from `A` to 
>> `A-shaded` smoothly if only public API is consumed.
>> 
>>> I've never been heard of such policy being discussed, documented.
>> 
>> There hasn't been any specific topic of discussion about name policy before. 
>> It's impossible to discuss everything in detail. If someone thinks something 
>> matters, then we should discuss it.
>> 
>>> Furthermore, since we've already posted them publicly in the maven 
>>> repository,
>>> how can we decide that they won't be used by end-users?
>> 
>> Technically, we can not stop the user from using such shaded API directly. 
>> Personally, I think it’s a quite common practice, especially in Apache 
>> projects, thus it’s obvious to me, for example:
>> 
>> - 
>> https://mvnrepository.com/artifact/org.apache.hbase.thirdparty/hbase-shaded-netty
>> - 
>> https://mvnrepository.com/artifact/org.apache.hadoop.thirdparty/hadoop-shaded-guava
>> - https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-jackson
>> - https://mvnrepository.com/artifact/org.apache.iceberg/iceberg-bundled-guava
>> 
>> Also, I just follow the most popular name pattern 
>> `<project_name>-shaded-<thrid_party_name>` to name Kyuubi shaded artifacts.
>> 
>>> Did we explicitly remove the public APIs from the original artifact?
>> 
>> 
>> No, in most cases, just simple relocation and repackaging of the original 
>> jar, with class overwriting if necessary.
>> 
>> Thanks,
>> Cheng Pan
>> 
>> 
>>> On Nov 29, 2023, at 11:13, Kent Yao <y...@apache.org> wrote:
>>> 
>>>> The artifacts end with “-shaded” are for end users.
>>> 
>>> This looks like an explanation for mistakes we've already made.
>>> 
>>> I've never been heard of such policy being discussed, documented.
>>> 
>>> Furthermore, since we've already posted them publicly in the maven 
>>> repository,
>>> how can we decide that they won't be used by end-users? Did we explicitly 
>>> remove
>>> the public APIs from the original artifact?
>>> 
>>> Kent
>>> 
>>> Cheng Pan <pan3...@gmail.com> 于2023年11月29日周三 10:25写道:
>>>> 
>>>> Kent
>>>> 
>>>> They are for different purposes.
>>>> 
>>>> The artifacts start with "kyuubi-shaded” is for the Kyuubi project's 
>>>> internal usage, see [1] and [2]
>>>> 
>>>> The artifacts end with “-shaded” are for end users.
>>>> 
>>>> [1] https://github.com/apache/kyuubi-shaded
>>>> [2] 
>>>> https://mvnrepository.com/artifact/org.apache.kyuubi/kyuubi-shaded-zookeeper-34
>>>> 
>>>> Thanks,
>>>> Cheng Pan
>>>> 
>>>> 
>>>>> On Nov 28, 2023, at 18:36, Kent Yao <y...@apache.org> wrote:
>>>>> 
>>>>> -1 for the arbitrary naming
>>>>> 
>>>>> 
>>>>> FYI, 
>>>>> https://mvnrepository.com/artifact/org.apache.kyuubi/kyuubi-hive-jdbc-shaded
>>>>> 
>>>>> XiDuo You <ulyssesyo...@gmail.com> 于2023年11月28日周二 18:03写道:
>>>>>> 
>>>>>> +1, looks fine to me
>>>>>> 
>>>>>> Zhen Wang <wangz...@apache.org> 于2023年11月28日周二 12:53写道:
>>>>>>> 
>>>>>>> +1, I like this idea, it avoids the possibility of engine thrift class
>>>>>>> conflicts in different environments.
>>>>>>> 
>>>>>>> 
>>>>>>> Kind Regards,
>>>>>>> Zhen Wang
>>>>>>> 
>>>>>>> Cheng Pan <pan3...@gmail.com> 于2023年11月28日周二 01:00写道:
>>>>>>>> 
>>>>>>>> Hi Kyuubi developers,
>>>>>>>> 
>>>>>>>> Recently, I've been looking at the code of the Hive engine, one of my
>>>>>>>> goals id to make it support multiple versions of Hive runtime,
>>>>>>>> including
>>>>>>>> - 3.1.3, which is the latest stable version of Apache Hive, already 
>>>>>>>> supported
>>>>>>>> - 2.3.9, which is the latest stable version of Apache Hive 2.x, is
>>>>>>>> adopted widely, including Apache Spark, Apache Flink
>>>>>>>> - 2.1.1-cdh6.3.2, the latest free version of CDH, has lots of users
>>>>>>>> 
>>>>>>>> When I tried to run the Hive engine built against Hive 3.x with Hive
>>>>>>>> 2.3.9/2.1.1-cdh6.3.2 runtime, I encountered some thrift class conflict
>>>>>>>> issues which were hard to resolve, thus I propose to create a
>>>>>>>> pre-shaded hive-service-rpc to tackles such issue.
>>>>>>>> 
>>>>>>>> I have created two PRs[1][2] to demonstrate and verify my idea, it
>>>>>>>> also introduces additional benefits, e.g. speed up the engine
>>>>>>>> packaging by reducing relocation classes.
>>>>>>>> 
>>>>>>>> Looking forward to the community feedback and PR reviews.
>>>>>>>> 
>>>>>>>> Once the idea is accepted, and [1] gets merged, I will start the
>>>>>>>> kyuubi-shaded release voting.
>>>>>>>> 
>>>>>>>> [1] https://github.com/apache/kyuubi-shaded/pull/20
>>>>>>>> [2] https://github.com/apache/kyuubi/pull/5783
>>>>>>>> 
>>>>>>>> Thanks,
>>>>>>>> Cheng Pan
>>>> 
>> 

Reply via email to