-
Notifications
You must be signed in to change notification settings - Fork 303
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
Discussion Request: Beta APIs discussion #2593
Comments
scheduled for 3/24 |
@JonathanGiles @johanste Python has the concept of "provisional API" in the stdlib that we could use FYI: |
Yep. Or rather, provisional packages. Which may be sufficient for our needs, but may not be quite granular enough. |
For our .Net (Cosmos DB) SDK where we ship preview feature in preview nuget-packages we have received feedback loud and clear even from internal customers like Microsoft Teams that for them it is unacceptable to consume a preview-package - because of the uncertain support story. Using a Beta/Evolving/Experimental annotation on new APIs like we currently do in our Java SDK has a much lower entry barrier for customers because it is clear that any non-annotated API is fully supported. |
Recording[MS INTERNAL ONLY] |
Real world use cases for Beta APIs in Cosmos world: Service-side preview features.
Client-side preview features.
|
@kushagraThapar, would it be possible for you to provide some prototype APIs these features would add? The list as-is is a bit too abstract. If we had examples of APIs you'd like to add, we could have a more concrete discussion about how this APIs could be added in an out-of-band fashion, e.g. as extension methods/libraries. |
@KrzysztofCwalina @kushagraThapar - Here is an example of breaking beta change which java have to do for encryption |
@simplynaveen20, the .NET change could be done the following way:
|
We have different package directory for encryption in Java so internal ctor of Cosmos wont be visible. |
That's why I say "using internals visible", i.e. https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.internalsvisibletoattribute?view=net-5.0 |
I think this wont be supported in Java |
Yeah, I commented on .NET solution, i.e. "the .NET change could be done the following way:" |
Challenges that we're trying to address with Beta APIs:
Things the Azure SDK should investigate (across all languages):
The plan for existing Beta APIs in Java in the meantime:
|
Recording[MS INTERNAL ONLY] |
Regarding the GA/Preview version support request, there is a .NET-specific solution that the dotnet team uses which we could adopt (details here). The Azure SDK engineering system does not require changes to support this today. However, this only solves for .NET. I'm not sure there are similar patterns available for Java, Python, or JS. I heard @JonathanGiles was researching Java-specific options in the meeting. |
@kurtzeborn, doesn't this violate what our requirements are? Or are you just linking to the details to show how it can be implemented, not to define the support agreement around the preview features? |
Unsure what requirements are violated (is it go-live license) @johanste? For cosmos: go-live license is targeted (closely collaborated) for few selected CX only. For all others all features in preview package doesn't have any guarantees. The impact radius of these feature are very limited to those CX only and they are well aware of them. |
@kirankumarkolli from a customers perspective, what can they expect from a pre-GA library which is released with a go-live license (what does it guarantee?). for example:
The reason I ask is that I'm curious about the rationale behind releasing If we can't guarantee no breaking API changes, or breaking behavioral changes then I would think that we've got no business marking it as an RC/go-live because it probably don't meet the customers expectations of a stable API which when the GA is released can just be used by recompiling/redeploying their solution. |
Hi @JonathanGiles, we deeply appreciate your input into this project. Regrettably, this issue has remained inactive for over 2 years, leading us to the decision to close it. We've implemented this policy to maintain the relevance of our issue queue and facilitate easier navigation for new contributors. If you still believe this topic requires attention, please feel free to create a new issue, referencing this one. Thank you for your understanding and ongoing support. |
This discussion is a free-form discussion on the topic of beta APIs and the wider issue of breaking changes. For the sake of this discussion, a beta API is an API that has shipped in a GA release but is annotated in some language appropriate manner to indicate it is not a final API. This discussion therefore involves the following:
@Beta
-annotated method calls).The text was updated successfully, but these errors were encountered: