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:
org.apiguardian:apiguardian-api:
@API(status = Status.STABLE)
@API(status = Status.EXPERIMENTAL)
@API(status = Status.INTERNAL)
@API(status = Status.MAINTAINED)
@API(status = Status.DEPRECATED)
- 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)
In order to better communicate - in terms of semver - which our APIs are considered public we should introduce
@PublicAPIannotation, and mark appropriate classes / methods etc.Note that there are libraries that provide such annotations like:
org.apiguardian:apiguardian-api:For reference, Flink's own
@Public/@PublicEvolving/@Experimental/@Internalin 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
@Experimentalannotation.