-
Notifications
You must be signed in to change notification settings - Fork 889
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stabilize Logger.Enabled #4208
Comments
Question to @open-telemetry/technical-committee: Do we want to stabilize the Logger.Enabled API sooner than we stabilize the spec defining how SDK implements it? Or do we want to stabilize Enabled for API and SDK at the same time? |
Same for Metrics too: https://github.com/open-telemetry/opentelemetry-specification/pull/4219/files#r1767789558 |
The lack of stabilization of From OTel Go perspective, the SDK support can be experimental. See: https://pkg.go.dev/go.opentelemetry.io/otel/sdk/log/internal/x. This is currently the only known blocker for stabilizing the OTel Go Logs. |
@open-telemetry/technical-committee, are you able to revalidate if the issues listed as blockers are still seen as blockers or if they can be addressed after stabilization of Logger.Enabled in Logs Bridge API? Personally, I think the main blocker is to have at least 3 prototypes of the API in different languages. |
To clarify the process: we expect 3 prototypes in 3 different languages that can be used by the end users, so that they can try the feature, provide feedback, submit bugs and issues about it. This is a necessary process before the spec section is marked "Stable". From this perspective a PR does not counts as a prototype since it is not easily usable by the end users. A PR is fine for proposing new experimental features and demonstrating how they would work, but it is not enough for stabilizing the spec.
@pellared you either need to find a way to have unstable APIs in Go or wait until other languages implement the prototypes. Either way the ability to have unstable APIs is very valuable and this is likely to come up again as Otel evolves and we keep adding new experimental APIs to existing signals. -- As a side note: I encourage using maturity levels between "Development" and "Stable" to signal increasing level of confidence in the capability (both in the spec and the SDK). For example if we have 1-2 prototypes then we can move the maturity level of the feature from "Development" to "Alpha" or "Beta" to signal it is moving closer to the "Stable" state. |
OK. See we need 3 different languages to have it released as experimental API. Here is how the experimental Logger.Enabled API is currently defined in a 3 languages:
I will do my best to work on this with others to move this forward (as we have inconsistencies).
All major log bridges need it so it does not even make sense to stabilize the rest as the Logs API would not be usable in Go ecosystem. From #3917:
We then need to wait for other languages to add it.
I am not sure if we can use Footnotes |
We can bring as many levels from OTEP 0232 to the spec as we will believe is useful. I started with 3 but we can bring more if we feel there is value. I personally think it can be valuable to have more granularity between Development (the most immature) and Stable (the most mature). It is an important signal and having just a binary value for it I think is not nuanced enough. Stabilization is a process, often a long one at Otel. As you move along that process it is important to indicate the progress by updating the level labels. |
FWIW this is a change in policy. Many features have been stabilized that relied on "Go implementations" which were just PRs. I'm not sure it is fair to make this change in policy in such an ad hoc manner. |
@MrAlias my post is a result of a discussion by a few TCs while triaging this issue, so it is not an official policy change yet. I tried finding the current policy but couldn't. This document does not seem to have an opinion about what criteria must be met before spec stabilization. If anyone is aware of where do we state how many prototypes are needed please post the link. If the policy does not exist in written form or we need to modify it I will create an issue so that we can discuss and formalize it. Let's keep this issue open for now so that we can apply consistent rules after we clarify what the rules are. |
I am gonna move this back to TC inbox. |
Removed from TC inbox. The prototype requirement is being separately tracked, and there are other blockers preventing stability. |
Labeling with follow-up, as I understand we need the 3 implementations before this can be declared stable. |
removing |
Stabilize Logger.Enabled API
Blockers:
The text was updated successfully, but these errors were encountered: