-
Notifications
You must be signed in to change notification settings - Fork 28
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
Alternative implementations #121
Comments
Hi @andreaTP , While we won't take additional implementations on this main repository, this is to reduce maintenance burden on our team, we'd be more than happy to have a list of alternative implementations either here or on the main kiota repository. And of course, if you see anything wrong with our default implementation, we're more than happy to get issues and pull requests, but you already know that. What do you think? |
Nice!
I completely understand and acknowledge your position here 🙂 and I'm up to publish and maintain alternative implementations of the libraries. Unfortunately, this approach is going to require some additional effort for managing the compatibility matrix (at least on my side):
How do you see this process working if we decide to fully commit to Kiota?
Or anything in between 🙂 |
I'd start to say that this is the "first time" for kiota that an implementer of alternatives reaches out. So we're more than willing to iterate until we find a recipe that works for everyone. Kiota generation & kiota abstractionsOne guarantee from the support policy is that once kiota itself and a given language experience reaches GA, any change that'd mandate a binary breaking change (change in the shape of the fluent API being generated, changes in the interfaces of abstractions, etc...) would mandate a major bump to kiota itself, and the supporting libraries for the given language. While breaking changes might still happen until Kiota + the Java experience reach GA, we're doing our best to get the final ones in as we speak, and to get to GA shortly after. We've also mentioned that as a language moves to a new major version, we wouldn't be providing support for the older version anymore. So the consumers choice becomes: stick with the older version and accumulate technical debt or pay an upgrade cost. We think that's going to help make the ecosystem successful by reducing the number of versions 3rd parties need to support. These aspects should reduce your supportability matrix. And as for the anticipated remaining breaking changes, I think these are the only ones that'd impact implementers in java:
Additional implementationsWe're not expecting you to have to cover the full list of implementations we cover as a 3rd party implementer. It's perfectly fine to say "I'm going to provide an alternative to gson with jackson for json serialization but rely on the Microsoft provided implementation for the form serialization". In facts, we'd rather have you contribute to the "trivial" implementations that do not rely on additional libraries rather than reimplement them. Listing alternativesThis list in the appsettings is a placeholder/default value. We also documented an OpenAPI extension. The idea being the following : API owners are able to "push" different implementations on client applications by adding this extension to their OpenAPI description. The info command will use that as a data source if the -d argument is provided. I'm really curious to know whether that covers your scenarios? Collaboration modelThis is where I think we need to experiment. We're always happy to see contributions (generator, libs, etc...) and we'll do our best to get them merged as they represent a net benefit for everyone. (well I don't need to sell OSS to Red Hat) Thanks for powering through that lengthy answer, I hope that clarifies a lot of things. Don't hesitate to provide feedback/ask additional questions. |
This is really awesome, for sure a step in the right direction. Thanks for mentioning it!
The selling point here is the guarantee that the (OSS) ecosystem is moving at the same speed as the main project (hence fostering it). Thanks a ton for taking the time to dump this detailed answer, highly appreciated 🙏 |
Thanks for the follow up, here is what I suggest at this point:
Does that plan work for you? |
Sounds like a plan 👍 thanks for bearing with me! |
Perfect. Closing for now as there are no follow-ups specific to this repo. Let me know if we need to re-open at any point. |
I started working on a basic dependency-free HTTP client (using the client shipped with JDK 11+) for Kiota here:
https://github.com/andreaTP/kiota-utils/blob/main/http/jdk-http/src/main/java/io/apicurio/kiota/http/JdkHttpRequestAdapter.java
I would like to know if you would consider those additions in this repository or if you prefer to have them as third-party implementations.
I was planning on eventually working on:
The text was updated successfully, but these errors were encountered: