-
Notifications
You must be signed in to change notification settings - Fork 897
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 |
@jack-berg, I have question on what is required regarding the SDK implementation specification/design to unblock the stabilization of
From our OTel Go experience, it is better to stabilize the API first and then gather feedback for months before stabilizing anything in the SDK. In OTel Go all our logging bridges use The stabilization of |
I also want to call out that we already have 4 working prototypes of They have slight differences in the accepted parameters and I think this needs to be sorted out. @open-telemetry/cpp-maintainers, @open-telemetry/php-maintainers, @open-telemetry/rust-maintainers, I need your help here. |
Honestly, I've been struggling to keep up with / track all the open issues / PRs related to this. The current state of the operation is that Your OTEP #4290 tries to establish this corresponding SDK behavior. I agree with some of the content in there, and in particular, think that adding
Five - I originally proposed this experimental method with an accompanying java prototype 🙂 |
👍 |
PHP's implementation of When we do catch up, I'll follow the latest spec (although I might wait for this effort to complete first) |
I do not see them as no brainers. I am personally not convinced that these are good proposals. Regarding Regarding I find adding opt-in |
Stabilize Logger.Enabled API
Blockers:
The text was updated successfully, but these errors were encountered: