-
Notifications
You must be signed in to change notification settings - Fork 895
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
Interface stability for implementers and new methods in the spec #1457
Comments
IMO the policy should clearly differentiate:
|
Which would be all API interfaces defined in the spec, I think?
I think that is what the spec calls "Constructors" at https://github.com/open-telemetry/opentelemetry-specification/blob/v1.0.1/specification/versioning-and-stability.md#sdk-stability
I'm not sure there is such a thing. Can you give an example?
These have the name "Plugin Interface" in the versioning spec. |
Yes, I think so.
I think you are right. I thought we had something like -- The names "Contrsuctors" and "Plugin interface" are not self-explanatory, so I think it is best to clearly articulate the distinction in the PR that addresses this issue. |
We don't have the name "TracerProviderSdk", but we do have specification on the SDK's TracerProvider implementation. But this falls under
as it has methods like Shutdown and ForceFlush. |
We need to define our policy for adding new methods to existing interfaces in the specification, especially considering APIs that are intended to be implemented by users, namely "plugin interfaces" (Exporter, Sampler) and API implementation interfaces (Span, TracerProvider, ...). It is clear and already specified that at least for plugin interfaces we must stay ABI-compabible. However, there are several ways to achieve this (other than just never specifying new methods) in different languages (Java default interface implementations, C++ non-pure virtual methods, deriving a new interface in most languages come to mind).
Recently there were some discussions on adding
ForceFlush
to the SdkTracerProvider class (#1451, #1452) and the Exporter interface (#1454). While it was agreed that the former is unproblematic (SdkTracerProvider being a class), the Exporter is what our versioning spec calls a plugin interface:(I think this is more or less what @tigrannajaryan stated in #1452 (comment))
In #1454 I remarked about adding
ForceFlush
to the existingExporter
interface:and @bogdandrutu remarked in response:
There however the question if old APIs need to be supported by (API-compatible with) newer SDKs. I think the only thing the spec says about this is the following:
The text was updated successfully, but these errors were encountered: