[x-license] Introduce usage telemetry
Goals
- More visibility into MUI X feature usage
- Better prioritization
- Collecting more feedback from users
Background
MUI X was released almost 4 years ago, and the library has grown considerably in these 4 years, from new features to better defaults for all users. The way that we've been approaching this improvement process has been very much a manual one.
We're at MUI using the advanced components in some of our applications and plan to extend its usage across our codebases to dogfood MUI X internally more and make improvements based on our experiences.
On top of that, we actively engage with the community to gather feedback. For example, which components or features do you use mostly, ways to customise components, and more. This feedback is extremely valuable in steering feature development for MUI X.
However, there is a problem with this approach, which is that we can only collect feedback from a subset of users. This subset may have different needs and use-cases than you.
For this reason, we're currently exploring a more automated approach to collecting these points of feedback so that we can improve MUI X even more in the near future.
Furthermore, this will allow us to verify if improvements made to the components are improving the baseline of all applications.
Proposal
We're planning to add anonymized telemetry to the MUI X during the development process (excluding NODE_ENV=production). We'll provide an optional opt-out through an environment variable or CLI command. For the start, it will be disabled by default for all users with the ability to opt-in so we would be able to test it.
When enabled the CLI will collect telemetry at development and build time, when telemetry is collected we'll show a message explaining that telemetry is being collected with a link to documentation.
When telemetry is collected it'll be possible to add a flag to see the exact values being sent. These values, as said before, will be completely anonymized.
Its focus is on complete anonymity, and allows users to opt-in to send anonymous data (by default, it's disabled now).
Once the initial implementation has landed, we can investigate exposing the results to the community through public dashboards.
How we would push it
- Publish the first version with only the opt-in mechanism (disabled by default, you should take action to start sending data)
- Try this with our docs/projects/etc., polishing the core things, understanding what and how we would collect.
Demo preview
- DataGrid Demo https://codesandbox.io/p/devbox/mui-x-telemetry-demo-522zyz
There's quite a few open source projects that take a similar approach, most notably:
Preview: https://deploy-preview-13530--material-ui-x.netlify.app/x/react-data-grid/
Deploy preview: https://deploy-preview-13530--material-ui-x.netlify.app/
Updated pages:
Generated by :no_entry_sign: dangerJS against a53d92b8961950da46bd6f4fd443f6fb7f5a23d0
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
Actually, we likely want to add a Math.random() to only sense events for 1-10% of the sessions to get started.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
High level, this looks right 👍
There are new console warnings we need to fix when running pnpm docs:dev: