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

Refresh the provider development guide #2528

Closed
negz opened this issue Aug 25, 2021 · 16 comments
Closed

Refresh the provider development guide #2528

negz opened this issue Aug 25, 2021 · 16 comments
Labels
docs enhancement New feature or request stale

Comments

@negz
Copy link
Member

negz commented Aug 25, 2021

What problem are you facing?

We've tried to make contributing a managed resource to a Crossplane provider easier than writing an arbitrary Kubernetes controller from scratch, but it's still a fairly complex task. In Crossplane implementing a managed resource typically boils down to defining the API type (using kubebuilder and controller-tools) then implementing an ExternalClient. During code review we find folks often have trouble with the following areas:

  • 'Interpreting' external APIs - i.e. representing them as Kubernetes CRs. Some external APIs are more imperative than declarative, and don't map cleanly.
  • Writing idiomatic API types - things like optional fields being pointers, what goes in spec and status, etc.
  • Implementing IsUpToDate checks that determine whether an external resource needs updating.

We do already have several resources to help with this, e.g.:

Unfortunately these documents don't form a particularly cohesive guide, and are in some cases (particularly the developer guide) somewhat out of date.

How could Crossplane help solve your problem?

I think it would be worth someone taking a pass over these documents and 'refreshing' them. I'm not exactly sure how this would look, but I have a hunch that making sure the provider development has no outdated or misleading information would go a long way. I'd also consider trying to roll some of the information from the managed resource API design document into the guide so that folks had the majority of the information they needed in one place.

@negz negz added enhancement New feature or request docs labels Aug 25, 2021
@negz
Copy link
Member Author

negz commented Aug 25, 2021

Cross-linking #2258.

@Feggah
Copy link
Member

Feggah commented Aug 26, 2021

Here at @stone-payments we created an internal wrapped up documentation for the company about developing managed resources. We saw that the needed information to do it was spread across multiple crossplane docs (TBS videos, official crossplane docs, etc) so we decided to create one wrapping up it all.

The real "problem" is that this docs are in Portuguese, so we would need to translate it to give it to the community. Do you think that this can help Crossplane?

@negz
Copy link
Member Author

negz commented Aug 26, 2021

@Feggah! I do - I could imagine even the original Portuguese version being useful to us though to be fair we have no experience maintaining documentation in languages other than English at this stage.

@Feggah
Copy link
Member

Feggah commented Aug 27, 2021

Nice @negz! So I'll arrange things internally and try to spend some time in this translation. I think it is one of the firsts documentations in Portuguese about Crossplane, but we are by no means crossplane-experts, so I'm thinking that the best we can do here is translate the docs, get reviews on it, improve/fix things that aren't correct, and give it to the community.

We can fix the Portuguese version with the same fixes that we will need to apply in the English one, so both docs will be up to date and correct. If you want to have the Portuguese version as well in Crossplane docs, I help you with maintaining it.

@negz
Copy link
Member Author

negz commented Sep 2, 2021

Adding a note that per @chlunde's suggestion, when we put this together we may also want to consider whether there is any help we could condense for folks reviewing new managed resource contributions.

@erikgb
Copy link
Contributor

erikgb commented Sep 2, 2021

I could take a look on refreshing the existing Provider Development Guide document? I don't think I have the bandwidth to do that much, but at least some minor fixes. We just started on our first provider, and as crossplane noobs, we found the PDG. And it is outdated, oh yes. 😅

@negz Which provider is considered the "golden" provider, doing just about everything according to best practices, these days? 😉 I would expect provider-template to come pretty close - but it shows limited stuff (for obvious reasons).

@chlunde
Copy link
Contributor

chlunde commented Sep 2, 2021

For new resources:

  • Working examples (that fit together with the other examples, for example named references)
  • Tests/coverage, what kind of tests do we require? What's nice to have?
  • Manual testing, test not only create and delete but also modifications

For reviews/changes:

  • alpha vs. beta API changes
  • release note procedure?
  • alpha vs beta requirements

for reviewers:

  • Review process - you review the code, tests and examples, obviously. But what more is expected for an alpha resource? Should the reviewer fully understand the service and look for non-obvious issues? Should you run the code end-to-end and verify the example? Test modifications? What more?

for maintainers:

  • Who merges, when? Especially when multiple maintainers have discussed the issue at some point but not left a formal review. Probably not really an issue when the above questions are answered 😄

@negz
Copy link
Member Author

negz commented Sep 2, 2021

I don't think I have the bandwidth to do that much, but at least some minor fixes.

Minor fixes are more than welcome!

Which provider is considered the "golden" provider, doing just about everything according to best practices, these days?

As you mention, provider-template is typically the best but it is a little basic. Apart from that it's really hard to say. The AWS provider is the most extensive and mature, but because much of it is generated code it's not the best reference for folks building their own providers by hand.

@stale
Copy link

stale bot commented Aug 14, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Aug 14, 2022
@muvaf muvaf removed the stale label Aug 17, 2022
@github-actions
Copy link

Crossplane does not currently have enough maintainers to address every issue and pull request. This issue has been automatically marked as stale because it has had no activity in the last 90 days. It will be closed in 7 days if no further activity occurs. Leaving a comment starting with /fresh will mark this issue as not stale.

@github-actions
Copy link

Crossplane does not currently have enough maintainers to address every issue and pull request. This issue has been automatically marked as stale because it has had no activity in the last 90 days. It will be closed in 7 days if no further activity occurs. Leaving a comment starting with /fresh will mark this issue as not stale.

@github-actions github-actions bot added the stale label Feb 23, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Mar 2, 2023
@jeanduplessis
Copy link
Contributor

@plumbis does it make sense to transfer this issue to crossplane/docs or is it already actioned/covered by another open issue there?

@jeanduplessis jeanduplessis reopened this Mar 2, 2023
@plumbis
Copy link
Contributor

plumbis commented Mar 2, 2023

There was an explicit ask by c/c maintainers to keep development related content solely inside the c/c repository and not to put development/contributing docs in the docs repo.

@github-actions github-actions bot removed the stale label Mar 3, 2023
@github-actions
Copy link

github-actions bot commented Jun 2, 2023

Crossplane does not currently have enough maintainers to address every issue and pull request. This issue has been automatically marked as stale because it has had no activity in the last 90 days. It will be closed in 14 days if no further activity occurs. Leaving a comment starting with /fresh will mark this issue as not stale.

@github-actions github-actions bot added the stale label Jun 2, 2023
@jbw976
Copy link
Member

jbw976 commented Jun 2, 2023

/fresh

@github-actions github-actions bot removed the stale label Jun 2, 2023
@github-actions
Copy link

github-actions bot commented Sep 1, 2023

Crossplane does not currently have enough maintainers to address every issue and pull request. This issue has been automatically marked as stale because it has had no activity in the last 90 days. It will be closed in 14 days if no further activity occurs. Leaving a comment starting with /fresh will mark this issue as not stale.

@github-actions github-actions bot added the stale label Sep 1, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Sep 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs enhancement New feature or request stale
Projects
None yet
Development

No branches or pull requests

8 participants