Skip to content

Instantly share code, notes, and snippets.

@alanbsmith
Created August 5, 2020 19:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alanbsmith/3d3c60671df103443cc75c36e2a67b2c to your computer and use it in GitHub Desktop.
Save alanbsmith/3d3c60671df103443cc75c36e2a67b2c to your computer and use it in GitHub Desktop.
RFC Template (a wip)
  • Start Date: (fill me in with today's date, YYYY-MM-DD)
  • RFC PR: (leave this empty)
  • Canvas Kit Issue: (leave this empty)

Summary

Brief explanation of the feature.

Basic example

If the proposal involves a new or changed API, include a basic code example. Omit this section if it's not applicable.

Motivation

Why are we doing this? What use cases does it support? What is the expected outcome?

Please focus on explaining the motivation so that if this RFC is not accepted, the motivation could be used to develop alternative solutions. In other words, enumerate the constraints you are trying to solve without coupling them too closely to the solution you have in mind.

Detailed design

This is the bulk of the RFC. Explain the design in enough detail for somebody familiar with Canvas Kit to understand, and for somebody familiar with the implementation to implement. This should get into specifics and corner-cases, and include examples of how the feature is used. Any new terminology should be defined here.

Drawbacks

Why should we not do this? Please consider:

  • implementation cost, both in term of code size and complexity
  • whether the proposed feature can be implemented in user space
  • the impact on teaching people new patterns
  • integration of this feature with other existing and planned features
  • cost of migrating existing Canvas Kit applications (is it a breaking change?)

There are tradeoffs to choosing any path. Attempt to identify them here.

Alternatives

What other designs have been considered? What is the impact of not doing this?

Adoption strategy

If we implement this proposal, how will existing Canvas Kit developers adopt it? Is this a breaking change? Can we write a codemod or migration script? Should we coordinate with other projects or libraries?

How we teach this

What names and terminology work best for these concepts and why? How is this idea best presented? As a continuation of existing Canvas Kit patterns?

Would the acceptance of this proposal mean the Canvas Kit documentation must be re-organized or altered? Does it change how Canvas Kit is taught to or consumed by new developers at any level?

How should this feature be taught to existing Canvas Kit users or contributors?

Unresolved questions

Optional, but suggested for first drafts. What parts of the design are still TBD?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment