Skip to content
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

docs: Add first easy workable API implementation in dev guide. #3503

Open
jgao1025 opened this issue Dec 15, 2024 · 3 comments
Open

docs: Add first easy workable API implementation in dev guide. #3503

jgao1025 opened this issue Dec 15, 2024 · 3 comments
Labels
kind/documentation Categorizes issue or PR as related to documentation.

Comments

@jgao1025
Copy link
Contributor

jgao1025 commented Dec 15, 2024

What would you like to be added:

I suggest including detailed examples on how to install and run a Gateway API implementation after deploying the code. Specifically, this could expand on the "deploy the code" section in the Gateway API Developer Guide.

For a practical demonstration, I think the Cafe Example could be utilized to provide a hands-on tutorial. This example could walk users through key concepts such as CRDs (Custom Resource Definitions), identifying the GatewayClass, and defining HTTPRoute objects.

BTW, I think it might also be valuable to offer a vendor-agnostic example. By doing so, the Gateway API could showcase its capabilities independently of specific infrastructure providers, allowing users to better understand its core functionality and what it aims to represent.

Why this is needed:

Providing a clear, functional, and easy-to-follow example would significantly enhance the onboarding experience for users and developers. This helps reduce frustration during the initial setup phase, minimizing the risk of users abandoning the project due to early roadblocks.

For instance, when I first attempted to follow the "Deploying a Simple Gateway" guide (https://gateway-api.sigs.k8s.io/guides/simple-gateway/), I saved the example Gateway YAML file locally and ran kubectl apply -f example.yaml. However, it didn’t work. It was only after reading further that I realized this was a "hypothetical example GatewayClass." When I followed the link to Gateway Implementations, I was presented with a list of 29 implementations but couldn’t find a straightforward way to get started.

I believe including a functional and self-contained example would make it much easier for users to run commands and experiment with the Gateway API, fostering a more seamless learning experience.

@jgao1025 jgao1025 added the kind/documentation Categorizes issue or PR as related to documentation. label Dec 15, 2024
@jgao1025
Copy link
Contributor Author

btw I can work on this if this change can be accepted.

@youngnick
Copy link
Contributor

I think that this is excellent feedback, and an amazing idea.

But, we also have to keep in mind our "no reference implementation" rule, where we don't want to privilege a winner or end up declaring a default reference implementation.

So, I think that, were we to go ahead with a "Getting Started" style page that included install instructions, it would have to be open to any conformant implementation that supported the relevant feature set.

Ideally, we'd end up with tooling that we could run a few weeks after release (that is, about when the blog post for the release goes out, to give implementations time to be conformant to the latest release) that would automatically generate the Getting Started page, with a tabbed section for implementations, sorted alphabetically.

To my mind, this would need:

  • implementations to include a GETTINGSTARTED.md file or similar with their conformance report, with the content to be included in their tab
  • Tooling that, for a configured release, would retrieve conformant implementations, then include the GETTINGSTARTED.md file from each conformant implementation that supported the relevant features into the Getting Started page for that release.

This would mean that:

  • users benefit from having a straightforward place to get started
  • implementations benefit from being listed on the page
  • the Gateway API project benefits from having more implementations be conformant

@jgao1025
Copy link
Contributor Author

I think that this is excellent feedback, and an amazing idea.

But, we also have to keep in mind our "no reference implementation" rule, where we don't want to privilege a winner or end up declaring a default reference implementation.

So, I think that, were we to go ahead with a "Getting Started" style page that included install instructions, it would have to be open to any conformant implementation that supported the relevant feature set.

Ideally, we'd end up with tooling that we could run a few weeks after release (that is, about when the blog post for the release goes out, to give implementations time to be conformant to the latest release) that would automatically generate the Getting Started page, with a tabbed section for implementations, sorted alphabetically.

To my mind, this would need:

  • implementations to include a GETTINGSTARTED.md file or similar with their conformance report, with the content to be included in their tab
  • Tooling that, for a configured release, would retrieve conformant implementations, then include the GETTINGSTARTED.md file from each conformant implementation that supported the relevant features into the Getting Started page for that release.

This would mean that:

  • users benefit from having a straightforward place to get started
  • implementations benefit from being listed on the page
  • the Gateway API project benefits from having more implementations be conformant

Thanks @youngnick , this sounds a good idea. If implementations can include such a file in their conformance report, I would be happy to explore ways to automate the 'Getting Started' page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/documentation Categorizes issue or PR as related to documentation.
Projects
None yet
Development

No branches or pull requests

2 participants