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

rfcs: update the RFC template #60144

Merged
merged 1 commit into from
Feb 21, 2021
Merged

Conversation

knz
Copy link
Contributor

@knz knz commented Feb 9, 2021

Throughout the last year usage of the RFC system decreased, and
surveys revealed that folk find the template too difficult to use.

After analyzing options, @andreimatei and I came to the following:

  • The existence of “guide-level explanation” and “reference-level
    explanation” side by side is confusing. It is unclear what needs to be
    present in one and not the other.

  • Engineers dislike looking at “guide-level explanation” first, since
    the RFCs are (and should be) mostly used to stimulate technical
    discussions, and so the technical aspects should come first.

  • The writing prompts in each section are too vague and do not
    actually do a good job of guiding the writer.

To address this shortcoming, this PR does the following:

  • Move the "Guide-level explanation" to the bottom.

  • Change the writing guides to clear questions, one bullet point and
    one question per topic.

Release note: None

@knz knz requested review from bdarnell, andreimatei and a team February 9, 2021 12:52
@cockroach-teamcity
Copy link
Member

This change is Reviewable

@knz knz force-pushed the 20210209-rfc-update branch 2 times, most recently from b96ac43 to e4ed12a Compare February 9, 2021 12:57
Copy link
Collaborator

@petermattis petermattis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewable status: :shipit: complete! 1 of 0 LGTMs obtained (waiting on @andreimatei, @bdarnell, and @knz)


docs/RFCS/00000000_template.md, line 40 at r1 (raw file):

Some of these prompts may not be relevant to your RFC; in which case
you can spell out “this change does not affect ...” or answer “N/A”
(not applicable) next to the question.

I like that you have prompts for observability and performance below. I think it would be useful to provide prompts regarding stability. For example, "Can this new functionality affect the stability of a node or the entire cluster? Can the new functionality be disabled? Can the new functionality affect clusters which are not explicitly using it? What testing and safe guards are being put in place to protect against unexpected problems?"


docs/RFCS/00000000_template.md, line 61 at r1 (raw file):

  high-level worst case algorithmic complexity? How is resource usage
  affected for “large” loads? For example, what do we expect to happen
  when there are 100.000 ranges? 10.000 users?  1000.000 concurrent

Nit: use commas for large numbers, not periods (yes, this is US centric, but I'm pretty sure that is what we do elsewhere).

Copy link
Contributor Author

@knz knz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: :shipit: complete! 1 of 0 LGTMs obtained (waiting on @andreimatei, @bdarnell, and @petermattis)


docs/RFCS/00000000_template.md, line 40 at r1 (raw file):

Previously, petermattis (Peter Mattis) wrote…

I like that you have prompts for observability and performance below. I think it would be useful to provide prompts regarding stability. For example, "Can this new functionality affect the stability of a node or the entire cluster? Can the new functionality be disabled? Can the new functionality affect clusters which are not explicitly using it? What testing and safe guards are being put in place to protect against unexpected problems?"

Done.


docs/RFCS/00000000_template.md, line 61 at r1 (raw file):

Previously, petermattis (Peter Mattis) wrote…

Nit: use commas for large numbers, not periods (yes, this is US centric, but I'm pretty sure that is what we do elsewhere).

Done.

@knz knz force-pushed the 20210209-rfc-update branch 2 times, most recently from bae04be to 2bfd8b9 Compare February 9, 2021 13:43
@angelapwen
Copy link

No specific comments but just want to say that this format of having 1 clear bullet point/question per topic makes the RFC process much more approachable to me ✨ thanks for reworking this @knz and @andreimatei

Copy link
Contributor

@bdarnell bdarnell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewable status: :shipit: complete! 1 of 0 LGTMs obtained (and 1 stale) (waiting on @andreimatei)

Copy link
Contributor

@irfansharif irfansharif left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rafa, Andrei, thanks for spending the time you did here. I think it's a marked
improvement over what we had previously. I have a mild opinion I'll share here
that I think will further encourage usage of github-based at CRL.

I'm coming at this from the perspective as someone who really likes starting
with an empty page and just writing things out free-form first, to think.
It's only afterwards that I come back to make sure that I've dotted the i's and
crossed the t's.

The "template" then that I want to start off with is preferably empty, with
just the fewest guardrails to inform my overall structure (and no more). It's
only afterwards that I (and my reviewers!) should want to refer to a
check list of things to make sure we've covered all the relevant bases.

For that reason I think that most of the prompts here are better placed in the
README instead, or a separate (linked) "design considerations" doc.
I don't think this is minor, it's a quality of life improvement. I partially
attribute the blank-slated-ness of gdocs to it's increased usage over our
existing RFC process. I'll contrast this to the starting point being a long
checklist, where it's easier for me then to just start elsewhere (and taking
the discussions there with me).

The "UX" of the template itself informs how the design process takes place, so
the fewer questions/bullet points to answer at the outset, the better.
Entrusting the RFC author (and the reviewers) to walk through the prompts
placed elsewhere seems fine to me.

Instead of "reference-level explanation", how about "technical design"?
Instead of "guide-level explanation", how about "explain it to someone else"?

The smallest set of guardrails, in my view, are: summary, motivation or
background, technical design (incl. drawbacks and alternatives), unresolved
questions, and explaining it to someone else. I'd vastly prefer a template with
at most a paragraph per subheading explaining roughly what should go in there,
and linking to a separate doc for more details.

Copy link
Contributor Author

@knz knz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of "reference-level explanation", how about "technical design"? Instead of "guide-level explanation", how about "explain it to someone else"?

Done.

I'd vastly prefer a template with at most a paragraph per subheading explaining roughly what should go in there, and linking to a separate doc for more details.

Ok done, PTAL.

Reviewable status: :shipit: complete! 1 of 0 LGTMs obtained (and 1 stale) (waiting on @andreimatei)

@knz knz force-pushed the 20210209-rfc-update branch from 2bfd8b9 to 8096c5c Compare February 11, 2021 11:53
@blathers-crl blathers-crl bot requested a review from irfansharif February 11, 2021 11:53
Copy link
Contributor

@irfansharif irfansharif left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Rafa!

Copy link
Contributor

@andreimatei andreimatei left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: :shipit: complete! 0 of 0 LGTMs obtained (and 2 stale) (waiting on @knz)


docs/RFCS/00000000_template.md, line 40 at r2 (raw file):

...

# Explain it to someone else

when I saw this section in your recent RFC, it struck me. The way in which you've chosen to fill it I think suggests its usefulness :)
I think we should just get rid of it.

Copy link
Collaborator

@ajstorm ajstorm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: :shipit: complete! 0 of 0 LGTMs obtained (and 2 stale) (waiting on @knz)


docs/RFCS/GUIDE.md, line 8 at r2 (raw file):

Suggested contents:
- What is being proposed
- Why (short reason)

Nit: To match the order below, we should move "Why" up to the top in this list.


docs/RFCS/GUIDE.md, line 35 at r2 (raw file):

- Questions about the change:

  - What components in CockroachDB need to change? How do they change?

Nit: These prompts are great, and could benefit from additional cues to ensure that people are thinking of all aspects of the system. For example, are there security implications to this change? Will this require changes to work properly in CC, or multi-tenant serverless environments? We discuss migration in the "teaching" section below, but we might also want to prompt for it up here, as there could be technical challenges there too.


docs/RFCS/GUIDE.md, line 62 at r2 (raw file):

- Questions about performance:

  - Does the change impact performance? How?

Nit: We might also want to add a question here about testing of performance, if there's an anticipated impact. We call out testing below, but people might not clue into the need for performance testing.

@knz knz force-pushed the 20210209-rfc-update branch 2 times, most recently from fd967bd to ec5736d Compare February 17, 2021 21:32
Copy link
Contributor Author

@knz knz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: :shipit: complete! 0 of 0 LGTMs obtained (and 2 stale) (waiting on @ajstorm, @andreimatei, and @knz)


docs/RFCS/00000000_template.md, line 40 at r2 (raw file):

Previously, andreimatei (Andrei Matei) wrote…

when I saw this section in your recent RFC, it struck me. The way in which you've chosen to fill it I think suggests its usefulness :)
I think we should just get rid of it.

That other RFC is actually not complete. I made a mistake showing it to you in that state. The section is still as useful as ever, even if you personally don't like it.


docs/RFCS/GUIDE.md, line 8 at r2 (raw file):

Previously, ajstorm (Adam Storm) wrote…

Nit: To match the order below, we should move "Why" up to the top in this list.

I disagree, I think every RFC should start with its punchline. At least as long as the majority of the readers are from the US. US folk are not able to process a text where the first sentence is not also the conclusion.


docs/RFCS/GUIDE.md, line 35 at r2 (raw file):

For example, are there security implications to this change? Will this require changes to work properly in CC, or multi-tenant serverless environments?

Good points. Added.

We discuss migration in the "teaching" section below, but we might also want to prompt for it up here, as there could be technical challenges there too.

I don't understand this. Can you tell more?

Copy link
Collaborator

@ajstorm ajstorm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: :shipit: complete! 0 of 0 LGTMs obtained (and 2 stale) (waiting on @ajstorm, @andreimatei, and @knz)


docs/RFCS/GUIDE.md, line 35 at r2 (raw file):

Previously, knz (kena) wrote…

For example, are there security implications to this change? Will this require changes to work properly in CC, or multi-tenant serverless environments?

Good points. Added.

We discuss migration in the "teaching" section below, but we might also want to prompt for it up here, as there could be technical challenges there too.

I don't understand this. Can you tell more?

Maybe it's nothing, but I'd think that running in mixed version clusters could present issues for at least some RFCs. People would have to consider the need to either block a feature from running in that mode, or ensure that it runs there correctly.

Throughout the last year usage of the RFC system decreased, and
surveys revealed that folk find the template too difficult to use.

After analyzing options, @andreimatei and I came to the following:

- The existence of “guide-level explanation” and “reference-level
  explanation” side by side is confusing. It is unclear what needs to be
  present in one and not the other.

- Engineers dislike looking at “guide-level explanation” first, since
  the RFCs are (and should be) mostly used to stimulate technical
  discussions, and so the technical aspects should come first.

- The writing prompts in each section are too vague and do not
  actually do a good job of guiding the writer.

To address this shortcoming, this PR does the following:

- Move the "Guide-level explanation" to the bottom.

- Change the writing guides to clear questions, one bullet point and
  one question per topic.

Release note: None
Copy link
Contributor Author

@knz knz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: :shipit: complete! 0 of 0 LGTMs obtained (and 2 stale) (waiting on @ajstorm and @andreimatei)


docs/RFCS/00000000_template.md, line 40 at r2 (raw file):

Previously, knz (kena) wrote…

That other RFC is actually not complete. I made a mistake showing it to you in that state. The section is still as useful as ever, even if you personally don't like it.

I added the missing text to that section in the other RFC :)


docs/RFCS/GUIDE.md, line 35 at r2 (raw file):

Previously, ajstorm (Adam Storm) wrote…

Maybe it's nothing, but I'd think that running in mixed version clusters could present issues for at least some RFCs. People would have to consider the need to either block a feature from running in that mode, or ensure that it runs there correctly.

Oh good point! Added a prompt for this.


docs/RFCS/GUIDE.md, line 62 at r2 (raw file):

Previously, ajstorm (Adam Storm) wrote…

Nit: We might also want to add a question here about testing of performance, if there's an anticipated impact. We call out testing below, but people might not clue into the need for performance testing.

I don't know that this is the role of any RFC to call out performance testing -- in the same way that we do not require other RFCs to spell out the architecture of unit tests.

We do need documentation in wiki.crdb.io about how to design for tests and how to design tests. We do not have such documentation today and I agree it is sorely missing. In that documentation, we should call out performance testing and guide readers towards learning how to do it effectively.

@knz knz force-pushed the 20210209-rfc-update branch from ec5736d to b59bc2a Compare February 20, 2021 15:39
@knz
Copy link
Contributor Author

knz commented Feb 20, 2021

I'm going to merge this now. As usual if we need/want more adjustments we can do so in a followup PR.

bors r=bdarnell,petermattis,ajstorm,andreimatei,irfansharif

@craig
Copy link
Contributor

craig bot commented Feb 20, 2021

Build failed:

@knz
Copy link
Contributor Author

knz commented Feb 20, 2021

Unrelated flake.

bors r=bdarnell,petermattis,ajstorm,andreimatei,irfansharif

@craig
Copy link
Contributor

craig bot commented Feb 20, 2021

Build failed:

@knz
Copy link
Contributor Author

knz commented Feb 21, 2021

gosh, what a nuisance
if this one doesn't go through I'll add a test skip

bors r=bdarnell,petermattis,ajstorm,andreimatei,irfansharif

@craig
Copy link
Contributor

craig bot commented Feb 21, 2021

Build succeeded:

@craig craig bot merged commit d485973 into cockroachdb:master Feb 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants