Skip to content

Improve RFC template#21

Merged
cart merged 7 commits intobevyengine:mainfrom
colepoirier:rfc-section-update
Apr 29, 2021
Merged

Improve RFC template#21
cart merged 7 commits intobevyengine:mainfrom
colepoirier:rfc-section-update

Conversation

@alice-i-cecile
Copy link
Copy Markdown
Member

RENDERED

I've worked with the RFC process a fair bit now, and while I generally like it, there are a few obvious warts that I'd like to get out of the way sooner than later.

The basic problems I'm trying to solve are:

  1. Guide-level and Reference-level are nonsensical and unclear as section names in the context of Bevy. These have been changed to User-facing Explanation and Implementation Strategy
  2. Implementation Strategy's guidance was vague and fuzzy, and conflicted with Cart's directives for very detailed designs, as given in the README
  3. Work done in RFCs is not easily translated to maintainable bits of Bevy. I've added a dedicated Examples section to discuss what should be in the examples folder, and pushed to make the User-Facing Explanation more portable to the Bevy book.

This means that there's a rough mapping of sections onto durable work:

  1. User-facing explanation: chopped up and moved to the Bevy book or other documentation.
  2. Examples: used to improve the doc examples and the examples folder.
  3. Implementation strategy: useful for making and reviewing the implementation PR.
  4. Future work: moved to tracking issues on the main Bevy repo so valuable ideas aren't lost forever.

Everything else is ephemeral; preserved only to record why we made the decisions we did.

template.md Outdated
- If applicable, explain how this feature compares to similar existing features, and in what situations the user would use each one.

## Reference-level explanation
## \[Optional\] Examples
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm not sure we should encourage RFC developers to come up with complete self-contained examples (on top of the author-selected example snippets provided in the user-facing explanation):

  1. Coming up with a compilable example without an implementation of the feature to run through a compiler is a big ask
  2. Choosing the best holistic example to teach a given feature isn't necessarily the same as picking the best code snippets to introduce a feature in an RFC.
  3. Full examples do take up space and create new logistics problems like requiring collapsible sections.

To me this feels a bit like "additional" work that often can't be efficiently completed without a working impl. I'm pretty cool with just asking RFC implementers to come up with examples (when they are relevant).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I agree with 1 and 2 for sure, and 3 can be a bit tricky. This is why I marked it as Optional; I think it's not a great fit for many RFCs but critical for others.

In particular, this was inspired by the UI work, where complex vertical slices are really important for seeing how everything fits together. I think this applies in a number of other domains too (e.g. physics, subworlds or scheduler APIs) where a lot of the challenge in a good design is in complexity management. The idea was to structure those slices by relating them to work that Bevy itself can use directly so then it doesn't go to waste.

People can always add bonus sections I guess, but I figured a cue and some concrete advice might be helpful for when it applies :)

Regardless on what we decide, I think the advice in this section on "What makes a good Bevy example" is valuable and if it doesn't end up here we should drop it in CONTRIBUTING.md or the like :)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think I'd prefer to just let this line from the "User-facing explanation" section to be open-ended based on the scope of the rfc: "Explaining the feature, ideally through simple examples of solutions to concrete problems."

Something like a UI RFC without UI examples isn't very useful, so we can/should encourage people to provide more examples where relevant.

My preference is to just remove the example section here and add the "what makes a good Bevy example" section to the Contributing section of the Bevy Book. I want to keep the RFC template "lean", and a large section requesting complete compilable / Bevy-example-folder-ready examples feels a bit "heavy", even if it has the optional label.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Done. I think this should be ready to merge now then @cart.

@cart
Copy link
Copy Markdown
Member

cart commented Apr 27, 2021

In general I dig these changes. I'm just a little uncertain about the "examples" section (see my comment above).

@cart cart merged commit 4cdfd91 into bevyengine:main Apr 29, 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.

3 participants