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

Adding guidelines for proposals in CONTRIBUTING.md #512

Merged
merged 1 commit into from
Dec 1, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,26 @@ If the fix is trivial you may not need to sign the CLA. If your fix is involved,

Feature requests for future versions of ECMA402 should be made in this repository by creating a new issue. Your goal will be to convince others that your proposal is a useful addition to the language and recruit TC39 members to help turn your request into a proposal and shepherd it into the language.

See also "ECMA-402 Guidelines for Feature Requests and Proposals" below.

### Proposals

We follow the TC39 staging process for proposals. See [ecma262 CONTRIBUTING.md](https://github.com/tc39/ecma262/blob/master/CONTRIBUTING.md#new-feature-proposals) for more information and steps to get started.

See also "ECMA-402 Guidelines for Feature Requests and Proposals" below.

## ECMA-402 Guidelines for Feature Requests and Proposals

The ECMA-402 standard should be as small and generic as possible to supply sufficient internationalization capabilities for JavaScript to lower the barrier to turn JavaScript application for global audience. The ECMA-402 Task Group tries to balance the never-ending stream of additions against the need to remain small, lean and stable for very long (10+ years) timeframe of maintenance.

When the ECMA-402 subcommittee reviews proposals for *new features*, we hold them against the following list of criteria. It is the reponsibility of the proposal champion to provide a compelling case that their feature request meets these criteria.

1. **Prior Art:** Our job is to bring features that i18n experts have already solved to JavaScript developers, not to invent new solutions to those problems. If the feature is not yet available in CLDR, ICU, or Unicode, the champion should start there before coming to ECMA-402.
2. **Difficult to implement in userland:** Features in Intl must bring something to the table that a third-party library wouldn't be able to do with the same level of efficiency and performance. The champion can cite a heavy locale data dependency or a complex algorithm to satisfy this criterion.
3. **Broad appeal:** The champion must demonstrate that their feature request is needed by a large number of smaller web apps or a smaller number of high-profile web apps (Calendar, Travel Booking, etc). As a rule of thumb, the champion should demonstrate that their new feature is at least as useful as an existing feature in ECMA-402. The champion can provide npm module statistics or a list of user requests to satisfy this criterion. Alternatively, the champion can make a case that their feature is critical for a multilingual web, even if it lacks broad appeal.

The ECMA-402 subcommittee will also review proposals to *improve existing features*. We will consider such proposals so long as the champion can demonstrate that their request will not make an ECMA-402 implementation substantially more complex. If the request requires a nontrivial increase in locale data size, the committee will hold the request against the criteria for new features listed above.

## Patent Policy and CLA

There are a number of ways to contribute to ECMA-402. How to actually contribute depends on what you want to accomplish. In many cases, you may be required to execute a CLA with Ecma. See the final section named *Signing the CLA* for more information on this.
Expand Down