[ 
https://issues.apache.org/jira/browse/CALCITE-3871?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17068545#comment-17068545
 ] 

Vladimir Sitnikov commented on CALCITE-3871:
--------------------------------------------

Oh, that was fast.

{quote}Stamatis: With this change every Calcite module that needs to annotate 
its APIs needs to include a dependency in linq4j{quote}
+1
Having a dependency on a single-annotation thing is way better than having a 
dependency on {{linq4j}} (or even calcite-core) which contains lots items.

Note: if someone does not want {{apiguardian-api}}, they can exclude the 
dependency when consuming Calcite artifact (s).

{quote} Julian: Using a publicly accepted set of annotations is far preferable 
to having our own copy{quote}

+1 to Julian as well.

{quote}I don’t know if the apiguardian is a publicly accepted API or not. 
{quote}

[~danny0405],
For instance, bndtools has integration with apiguardian: 
https://bnd.bndtools.org/instructions/export-apiguardian.html

Moving to the same looking but "our own" annotation defeats the integration.

{quote} bnd is the engine behind a number of popular software development tools 
that support OSGi.{quote}

{quote} Most of the popular Apache projects have their own annotations{quote}

Having a consistent way to annotate public/internal interfaces is vital for 
users. They need to know if the method is public for internal purposes or if it 
can be used.

Having different annotations in different projects does not really help. It is 
like using different code styles for each and every file.

[~danny0405], Would you please revert the change?

----

{quote}The argument that we only use it in two places is not valid. We should 
be using it in more places. As a project we have not done a great job of 
calling out our public API.{quote}

I've been using apiguardian annotations for Apache JMeter as well, and I'm 
quite happy with it so far.
For instance: 
https://github.com/apache/jmeter/pull/572/files#diff-21c0afdebc6f2c164f9e6257664e0c88R80

And, yes, I do tend to add {{@API}} to every non-private method.

> Remove dependency of org.apiguardian:apiguardian-api
> ----------------------------------------------------
>
>                 Key: CALCITE-3871
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3871
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core, linq4j
>    Affects Versions: 1.22.0
>            Reporter: Danny Chen
>            Assignee: Danny Chen
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.23.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> The org.apiguardian:apiguardian-api is introduced in CALCITE-3652 in order to 
> mark the new introduced API status.
> Remove the dependency and copy the class into Calcite because the 
> org.apiguardian:apiguardian-api jar has only a single API.java class and it 
> is not necessary to add a dependency for that(All the downstream projects 
> that have calcite-core as a dependency would see this jar which is annoying).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to