I found the original discussion for this guideline[1], and I respect
that the Incubator did such pioneer works to provide a base to discuss
and evolve.

The proposal here is to improve the expression on NPM / PyPI for the
package name to be either:

1. apache-projectname
2. projectname

or loosely a combination of "apache" and "projectname" (think of
@apachedubbo/dubbo above).

The main purpose for these sentences IMO is to emphasize the Apache
branding. We can advice podlings to populate/update metadata with ASF
branding that doesn't break current usage (pip install xxx; npm
install xxx).

If the verified organization is significant, we should push forward
work like [2] or other methods (NPM's @apache scope, Crates.io add
@apache/project-committers as owner) according to the platform's
flavor.

Best,
tison.

[1] https://lists.apache.org/thread/jl2y439207vvzlrnlpvtq89lqmyp2ry0
[2] https://issues.apache.org/jira/browse/INFRA-24678

tison <wander4...@gmail.com> 于2023年12月27日周三 19:31写道:
>
> Hi,
>
> The Distribution Guidelines[1] in ASF Incubator website wrote:
>
> * Artifacts show up on https://www.npmjs.com/package/apache-<project>;
> version page.
> * Artifacts need to be placed in
> https://pypi.org/project/apache-<project>;. To comply with ASF release
> and distributions please ensure the following:
>
> Both require an "apache-" prefix, perhaps due to emphasize the Apache
> branding. But it may introduce a longy artifact name that goes against
> a conventional artifact name on that platform.
>
> I will start a discussion on these three topics:
>
> 1. A brief introduction for the frequent platforms ASF podlings and
> TLPs release to.
> 2. How do current podlings and TLPs do?
> 3. From a branding perspective, how do we protect the Apache brand?
>
> ## Platforms
>
> 1.1 DockerHub - We have the apache org; some project like Pulsar
> registers the apachepulsar org.
> 1.2 Maven - We host the org.apache domain name and have a nexus
> repository for releasing.
> 1.3 GitHub - We have the apache org.
> 1.4 NPM - We don't have an official account and this platform support
> org scope[2].
> 1.5 Pypi - We don't have an official account and this platform uses a
> flattened view for packages.
> 1.6 Crates.io - We don't have an official account and this platform
> uses a flattened view for packages. The Rust/Cargo community discusses
> about the flavor [3].
> 1.7 NuGet - We don't have an official account and this platform
> support org account[4].
>
> ## Let's go into point 2 with these platforms in details.
>
> For 1.1~1.3, since the ASF has official place to hold distributions,
> there is few issue.
>
> For 1.4, below are some examples:
>
> * https://www.npmjs.com/package/apache-arrow
> * https://www.npmjs.com/package/apache-dubbo
> * https://www.npmjs.com/package/echarts
> * https://www.npmjs.com/package/openwhisk
> * https://www.npmjs.com/package/@apachedubbo/dubbo
> * https://www.npmjs.com/package/@apachedubbo/dubbo-node
> * https://www.npmjs.com/package/thrift
> * https://www.npmjs.com/package/opendal
> * https://www.npmjs.com/package/skywalking-client-js
> * https://www.npmjs.com/package/skywalking-backend-js
>
> Notably, these packages with "apache-" prefix and seems related are 
> unofficial:
>
> * https://www.npmjs.com/package/apache-spark-node
> * https://www.npmjs.com/package/apache-log2
>
> For 1.5, below are some examples:
>
> * https://pypi.org/project/apache-flink/
> * https://pypi.org/project/apache-airflow-providers-apache-flink/
> * https://pypi.org/project/apache-beam/
> * https://pypi.org/project/apache-libcloud/
> * https://pypi.org/project/apache-skywalking/
> * https://pypi.org/project/apache-tvm/
> * https://pypi.org/project/avro/
> * https://pypi.org/project/datafusion/
> * https://pypi.org/project/pyarrow/
> * https://pypi.org/project/pyspark/
>
> Notably, these packages with "apache-" prefix and seems related are 
> unofficial:
>
> * https://pypi.org/project/apache-analyser/
> * https://pypi.org/project/apache-manager/
> * https://pypi.org/project/apache-server/
>
> For 1.6, below are some examples:
>
> * https://crates.io/crates/apache-avro
> * https://crates.io/crates/arrow
> * https://crates.io/crates/parquet
> * https://crates.io/crates/skywalking
> * https://crates.io/crates/opendal
>
> Notably, these packages with "apache-" prefix and seems related are 
> unofficial:
>
> * https://crates.io/crates/apache-rs
> * https://crates.io/crates/apache_age
> * https://crates.io/crates/apache-nimble-sys
>
> For 1.7, below are some examples:
>
> * https://www.nuget.org/packages/ApacheThrift
> * https://www.nuget.org/packages/Apache.Avro
> * https://www.nuget.org/packages/Apache.NMS
> * https://www.nuget.org/packages/Apache.Arrow
> * https://www.nuget.org/packages/Apache.Ignite
> * https://www.nuget.org/packages/Lucene.Net
> * https://www.nuget.org/packages/DotPulsar/
>
> Notably, these packages with "Apache" prefix and seems related are unofficial:
>
> * https://www.nuget.org/packages/Apache.Thrift
>
> ## Now, for point 3,
>
> For 1.1~1.3, it's well-known and even can be verified with the
> platform that only ASF project member with permission can upload
> artifacts.
>
> For 1.4 and 1.7, if we have an official account and make it
> well-known, perhaps we can get the result as 1.1~1.3.
>
> For 1.5 and 1.6, the platforms are against categorizing packages with
> org, while for 1.6 (Crates.io), it supports add a GitHub team as a
> crate owner that can be "@apache/foo-committers".
>
> For 1.4~1.7, there are projects with "apache" prefix but not endorsed
> by an ASF project (P)PMC, the platform doesn't provide method to
> forbit them. And multiple projects were published without Apache in
> artifact name but have Apache brand in the metadata and README.
>
> Take a project Foo released to pypi as an example. Before donated to
> the ASF, by no reason it would include "apache" in name or even it's a
> brand occupancy issue itself.
>
> Now, the SGA is signed, so legally the name Foo is donated to the ASF.
> As time goes on, the truth that Foo is an ASF project spread.
>
> Back to the technical part, if the PMC now tells its user that the
> widely used name must be renamed to apache-foo, it's an extra burden
> to suffer. Given that the foo brand is transferred to the ASF with
> SGA, there is even no conflict to avoid.
>
> ## Proposal
>
> So, I propose to change the sentences referred above in Distribution
> Guidelines[1] from a requirement tongue into a recommendation tongue.
> Specificly,
>
> * Artifacts show up on https://www.npmjs.com/package/apache-<project>;
> version page.
> * Artifacts need to be placed in
> https://pypi.org/project/apache-<project>;. To comply with ASF release
> and distributions please ensure the following:
>
> Other sentences remain the same. Modifying metadata and README is cheap.
>
> Of course, the fact that they are "guidelines" already shows their
> recommendation property. But we run the Incubator and even the ASF by
> consensus. So here is the discussion for sharing thoughts.
>
> For 1.4 (NPM) and 1.7 (NuGet), if we later have an official
> scope/account with INFRA's help, we can encourage existing projects to
> migrate and gradually advocate its formality - why Maven releases
> don't have such friction for its audience? Because
> <group>org.apache.foo</group> is well-known and a self-claimed ASF
> project outside such group is doubtable. If we do care about the
> organization category, we should provide the necessary INFRA support
> first.
>
> For 1.5 (Pypi) and 1.6 (Crates.io), their culture is anti-organization
> and from some extra metadata and the README, it's not hard to figure
> out if the artifacts is an ASF product.
>
> Looking forward to your feedback.
>
> Best,
> tison.
>
> [1] https://incubator.apache.org/guides/distribution.html
> [2] https://docs.npmjs.com/creating-and-publishing-scoped-public-packages
> [3] https://github.com/rust-lang/cargo/issues/975
> [4] 
> https://learn.microsoft.com/en-us/nuget/nuget-org/organizations-on-nuget-org

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
For additional commands, e-mail: general-h...@incubator.apache.org

Reply via email to