-
Notifications
You must be signed in to change notification settings - Fork 11
Ensure that only "standard" or "experimental" APIs are exposed as dependencies. #135
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
Ensure that only "standard" or "experimental" APIs are exposed as dependencies. #135
Conversation
Thanks @dawid-nowak, appreciate you taking the time on this! 🙇 Looking it over, there's a nuance that I think is important here: This is change is focused on the presentation and convenience of giving you whichever release channel you require with a consistent import path. One problem that we've found with Gateway API over the years is that some implementations will just use the What are your thoughts on this: Instead of swapping in experimental vs standard, we just bring the standard APIs upfront always because 99% of the time that's what people should/will be using. And then for experimental, they are simply not present unless you flag into the feature, and then you do have to import them specifically, and deliberately? Let me know your thoughts? 🤔 |
From the longer-term perspective, I would expect that eventually "experimental" would be merged into the "standard" and it should disappear. And if as you said projects just stick with "experimental" set to apis then potentially just exposing one set shouldn't make a difference (other than having to update the source code). The biggest problem we would have is when projects mix "standard" and "experimental" APIs in one codebase... I think the options are :
I am equally happy with options 2 and 3 and slightly less happy with option 1 😄 .. but it is yours to decide. |
Thanks for your thoughts! Option 2 looks right as it clearly indicates the APIs are experimental and makes it obvious in the usage. It also brings the standard APIs "up", which I think is good (though I prefer keeping them isolated with |
Also the DCO is failing, check here. |
a8864f9
to
b1dd048
Compare
Signed-off-by: Dawid Nowak <[email protected]>
…e flag Signed-off-by: Dawid Nowak <[email protected]>
At some point we added `default-features = false` for the kube dependency, but that's not actually the desired behavior, and it was getting overridden by the workspace dependency anyway, so this just removes that erroneous config. Signed-off-by: Shane Utt <[email protected]> Signed-off-by: Dawid Nowak <[email protected]>
Signed-off-by: Shane Utt <[email protected]> Signed-off-by: Dawid Nowak <[email protected]>
Signed-off-by: Shane Utt <[email protected]> Signed-off-by: Dawid Nowak <[email protected]>
17fc24b
to
5c47b7b
Compare
Change is made so only one set of APIs is available as dependencies.
This avoids the situation where the application can import and use objectts from standard and experimental sets:
Instead the code should look like :
The user can switch between "standard" and "experimental" sets by setting feature "experimental" in their Cargo.