Skip to content

Marking public APIs with @PublicApi annotation #3419

@csviri

Description

@csviri

In order to better communicate - in terms of semver - which our APIs are considered public we should introduce @PublicAPI annotation, and mark appropriate classes / methods etc.

Note that there are libraries that provide such annotations like:

  1. org.apiguardian:apiguardian-api:
@API(status = Status.STABLE)
@API(status = Status.EXPERIMENTAL)
@API(status = Status.INTERNAL)
@API(status = Status.MAINTAINED)
@API(status = Status.DEPRECATED)
  1. audience-annotations in yetus

For reference, Flink's own @Public/@PublicEvolving/@Experimental/@Internal in org.apache.flink.annotation are the same idea, but they're internal to Flink (and shaded), so not meant to be pulled in as a standalone dependency.

Notes

  • we have already @Experimental annotation.
  • this could be done an an inverse way, so marking internal API, butin our case would be probably harder to do (or more code)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions