Skip to content

TC39 short survey results #38

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

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
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
134 changes: 134 additions & 0 deletions mdn-short-surveys/2025-04-16-tc39-proposals/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# TC39 proposals Short Survey

## Date

The survey ran between 2025-04-07 - 2025-04-15 and was shown to all users of MDN JavaScript pages.

## Questions

1. Please rank these proposals in order of preference for inclusion in JavaScript:

_Respondents were asked to drag and drop the following proposals into a ranked list. Not all proposals had to be ranked and respondents could rank as few or as many proposals as they wanted._

_Respondents were also presented with a link to [a document which described the proposals](https://docs.google.com/document/d/1DMPXS4Po5Nd-l0mIEYj78H1S_R5FrB7CkHbluhqQPVo/edit)._

_The proposals were presented in a random order for each respondent._

* Decorators
* ESM phase imports
* Deferred module evaluation
* JSON.parse source text access
* Source phase imports
* Joint iteration
* Iterator sequence

2. Please tell us more about how your top ranking option would help you as a developer

_Free-form text_

## Results

The survey received **2220** responses.

[Results in csv format](results.csv)

## Interpretation

The following interpretations are proposed by [Patrick Brosset](https://github.com/captainbrosset), PM at Microsoft Edge.

### Final ranking of proposals

Here is the final ranking of the proposals:

| Proposal | Overall rank | Score | No. of rankings |
| --- | --- | --- | --- |
| Decorators | 1 | 8769 | 1736 |
| ESM phase imports | 2 | 7029 | 1675 |
| Deferred module evaluation | 3 | 6963 | 1677 |
| JSON.parse source text access | 4 | 6903 | 1646 |
| Source phase imports | 5 | 6852 | 1675 |
| Joint iteration | 6 | 5856 | 1604 |
| Iterator sequence | 7 | 5821 | 1609 |

![Chart showing the final ranking of the proposals. The order is Decorators, Iterator sequence, Joint iteration, Deferred module evaluation, JSON.parse source text access, Source phase imports, ESM phase imports.](ranked-proposals.png)

The above data shows that **Decorators** is the most highly ranked proposal.

Here is a chart comparing the scores of the proposals:

![Bar chart showing the final scores of the proposals, as seen in the table above](scores.png)

### Top ranked proposal per-respondent

The following table and chart show how many times each proposal was selected as the top ranked proposal by respondents:

| Proposal | No. of top rankings | Percentage of top rankings |
| --- | --- | --- |
| Decorators | 757 | 40% |
| ESM phase imports | 136 | 7.2% |
| Deferred module evaluation | 238 | 12.6% |
| JSON.parse source text access | 244 | 12.9% |
| Source phase imports | 130 | 6.9% |
| Joint iteration | 214 | 11.3% |
| Iterator sequence | 172 | 9.1% |

![The above table data as a pie chart, showing that Decorators was picked as the first proposal by 40% of the respondents.](top-ranked.png)

### Decorators

#### Reasons for picking Decorators

Here are the main categories that emerge from the free-form responses from people who ranked Decorators as their top choice:

| Category | Number of comments |
| --- | --- |
| Cleaner, more ergonomic, shorter code (less repetition, better abstraction, more expressive, easier to read, more maintainable, less boilerplate) | 86 |
| Generally useful (either using it already, or would use it but have been waiting for it for years) | 65 |
| Parity with other languages and frameworks (Java, C#, PHP, Rust, Python, Dart, Nest.js, Django) | 32 |
| Parity with Typescript and/or Angular (waiting for the non-standard TS implementation to be standardized) | 24 |
| Useful for web components, custom elements, parity with Lit | 15 |
| Better performance, less dependencies, no need for a build step if implemented natively | 11 |
| Use case: Logging | 11 |
| Useful for libraries | 7 |
| Useful but not essential | 6 |
| Use case: Dependency injection | 6 |
| Use case: Memoization | 6 |
| Use case: Debugging | 4 |
| Use case: Input and data validation | 4 |
| Use case: ORM | 3 |
| Use case: Authentication, authorization, and other middlewares | 2 |
| Use case: Measure function execution time | 2 |
| Use case: Serialization | 2 |
| Use case: Function result caching | 1 |
| Use case: Testing | 1 |
| Use case: Clean-up after function execution (close files, database connections, etc.) | 1 |

#### Overall sentiment about Decorators

Here are the main sentiments and reasons for these sentiments which emerged from free-form responses that mention Decorators, irrespective of the respondent's top choice:

_TODO_

### ESM phase imports

_TODO_

### Deferred module evaluation

_TODO_

### JSON.parse source text access

_TODO_

### Source phase imports

_TODO_

### Joint iteration

_TODO_

### Iterator sequence

_TODO_
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading