operator-framework / operator-framework/java-operator-sdk

Marking public APIs with `@Public` annotation

Open
#3,419 0 comments 0 reactions 1 assignee View on GitHub

@csviri is already working on this.

Since Jun 18, 2026.

  • #3428 by @csviri — closed without merging
Dominant language
Java
Stars
944
Forks
242
Avg merge
1d 4h
Merged PRs (30d)
43

Description

In order to better communicate - in terms of semver - which our APIs are considered public we should introduce @Public annotation, and mark appropriate classes / methods etc. Note this is source level compatibility, not binary.

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)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.