rsnext/contributing/core/adding-features.md
Balázs Orbán 16a0e5af32
chore: improve repo templates (#46629)
## What?

- Rendering `next info` output as code in the bug template
- Removed the "Feature Request" issue template, in favor of a more
granular discussion template
- Added a minimal template for Help discussions

## Why?

The main part of this PR is the new Feature Request template.

Anyone can propose a change to Next.js. However adding new features
often requires community discussions - whether to align expectations,
understand the consequences (eg.: backward compatibility/lifetime of a
feature), to look at and understand historical reasons for the current
behavior or lack of the feature -, which [GitHub
discussions](https://github.com/vercel/next.js/discussions) is more
suited for than issues.

## How?

- Utilizing the new discussion templates
https://docs.github.com/en/discussions/managing-discussions-for-your-community/creating-discussion-category-forms
- Adding a link to the [new
issue](https://github.com/vercel/next.js/issues/new/choose) view to make
it easier to discover

[Slack
thread](https://vercel.slack.com/archives/C04DUD7EB1B/p1670874727319809)

Closes NEXT-742

---------
2023-03-01 09:25:51 -08:00

1.6 KiB

Adding a new feature

Anyone can propose a change to Next.js. However, adding new features often requires community discussions before proceeding with the implementation.

Therefore, before opening a PR, you should use the Feature Request discussion template and collect feedback.

Why use a discussion?

The discussion's goal is to achieve the following:

  1. Verify the validity of the feature request: The community can upvote discussions. Highly upvoted feature requests are more likely to be considered.
  2. Understanding the consequences: Any feature added to Next.js is likely to be around for a while and has to be maintained. This means that a new feature has to cover many use cases, needs to consider how it affects the ecosystem, and so on.
  3. Looking at and understanding historical reasons for the current behavior or lack of the feature: There might be a reason why a feature does not exist, or why the current implementation is in a certain way. There must be solid reasoning to change this, as the feature needs to be maintained even after it is added. (See 2.). Next.js has a strong policy on not breaking features, so any new feature has to be added in a way that makes it possible to incrementally adopt it.

Examples

The Next.js team uses RFCs (Request For Comment), which you can find in this discussion category. Reading through these, you can get a better understanding of what is expected to be included in a good feature request.