首页
/ Material UI 2020 年度开发者调查结果全解析:1488 份样本背后的社区画像与路线图信号

Material UI 2020 年度开发者调查结果全解析:1488 份样本背后的社区画像与路线图信号

2026-09-07 21:35:01作者:江焘钦

本文是围绕仓库内历史数据报告 2020-developer-survey-results.md 展开的完整解读。这份 2020 年 6 月发布的年度调查,回收 1488 份有效问卷,是当时 Material UI 团队(现 MUI 团队)量化"开发者满意度、痛点与选型诉求"的核心一手资料,也为后续 v5 的定位与 ROADMAP 更新提供了直接依据。读完本文,你既能完整掌握这份报告的每项统计口径与结论,也能对照当前仓库源码,看清当年被反复提及的诉求(Autocomplete、Slider range、JSS→Emotion、TypeScript 化等)在今天仓库中的落点。

时间坐标提示:该博客属于历史存档,发布时仓库处于 v4 时代(样式引擎为 JSS),而当前仓库 @mui/material 已演进到 9.4.0(见 package.json)。文中"当年结论"与"当前仓库对照"已分开表述,请勿混淆。

一、调查概况:样本量从 734 翻倍到 1488

报告开篇交代了调查的基本盘:继续延续 2019 年的传统,在几个月内开放了年度开发者调查,最终收到 1488 份回复,是上一届 734 份的两倍。调查问卷沿用了上一年的三段式结构:

  • Introduction(导言):了解开发者认为哪些方面做得好、应当坚持,以及哪些领域需要改进;
  • About you(关于你):刻画受访者画像;
  • Your product(你的产品):调研受访者在生产环境中如何使用 Material UI。

在仓库中,这篇报告通过 2020-developer-survey-results.js 页面配合 ?muiMarkdown 加载并渲染,由 TopLayoutBlog 布局承载,属于 docs 站点的博客系统,相关 Markdown 管线位于 markdownmuiMarkdown 解析链路

二、总体反馈(Introduction):满意度、推荐度与改进诉求

这一节回答"Material UI 目前做得如何、下一步该往哪里去"。

1. 如果再也无法使用 Material UI,你会作何感受?

结果饼图(alt 数据:73.3% 非常失望、21.3% 有些失望、5.4% 不失望):

饼图:73.3% 非常失望,21.3% 有些失望,5.4% 不失望

结论与上一年高度一致:超过 94% 的受访者(73.3% + 21.3% = 94.6%)会因无法继续使用 Material UI 而感到失望。"完全不失望"的比例从上一年的 6.5% 下降到 5.4%,官方将其解读为约 17% 的"相对改善"。同时报告也坦承:对于"能用其他方案替代"的用户群体仍缺乏理解,计划在下一届调查中加入追问问题。

2. 你向朋友或同事推荐 Material UI 的可能性有多大?

配合评分分布柱状图 2a.png 与示意饼图 2b.png,评分 0–10 分布如下:0 分占 0.20%、1 分 0%、2 分 0.20%、3 分 0.20%、4 分 1.02%、5 分 1.97%、6 分 8.71%、7 分 22.52%、8 分 20.88%、9 分 20.88%、10 分高达 44.29%

柱状图:推荐分 0-10 分布,10 分占 44.29%,9 分 20.88%,8 分 22.52%,7 分 8.71%,其余为低分段

基于"推荐者减贬损者"口径再次计算 Net Promoter Score(NPS),2020 年结果为 61.54。NPS 的取值范围在 -100 到 +100 之间:正值即算"良好",超过 50 属于"优秀"(excellent),70 以上才被视为"世界级"(world class)。61.54 意味着社区整体处于相当健康的推荐水平,但距离"世界级"仍有空间,这也被团队视作持续投入的动力。

3. 谁最应该从 Material UI 中受益?

词云图显示:"Developers(开发者)"再次处于中心位置,其次是 "people" 与 "teams"。报告认为这与第 8 题中多数受访者的职业角色(全栈/前端开发者为主)直接相关,并承诺未来一年持续优化开发者体验。

4. 你从 Material UI 获得的最大收益是什么?

词云图给出最常被提及的收益点:组件覆盖范围(range of components)、易用性(ease of use)、文档质量(documentation quality)以及设计(design)。这四项被明确视为"应该继续加码"的方向。

5. 我们应如何为你改进 Material UI?

由于开放式回答差异较大,团队将其归类并统计提及次数(降序)。完整分类如下表,其中加粗行为一级分类及合计次数,缩进行为其子项:

次数 类别 / 子项
306 更多组件(more components)
202 more components - ?
15 more components - data grid
12 more components - carousel
12 more components - charts
10 more components - lab to core
10 more components - upload
9 more components - icons
6 more components - big calendar
5 more components - layout
4 more components - navbar
4 more components - nested menu
2 more components - rich text editor
2 more components - splitter
1 more components - masonry
1 more components - nav bar
1 more components - numberpad
1 more components - onboarding
1 more components - prompt
1 more components - scrollspy
1 more components - swappable tabs
1 more components - timeline
1 more components - video player
1 more components - virtualization
1 more components - drag and drop
1 more components - dropdown
1 more components - image
189 定制化(customization)
85 customization - easier
22 customization - docs
16 customization - dynamic color & variant
15 customization - improve custom themes
13 customization - provide more themes(不限于 Material Design)
11 customization - ?
9 customization - unstyled components
8 customization - support system in all components
8 customization - theme editor(可视化工具)
2 customization - theme gallery(来自社区)
155 文档(docs)
46 docs - ?
45 docs - more examples
33 docs - more templates
16 docs - beginner friendly
8 docs - smaller demos
8 docs - tutorials
3 docs - api integration with components
2 docs - better search
2 docs - spanish
1 docs - chinese
1 docs - translations
1 docs - detailed api
1 docs - easier discoverability of components
1 docs - generated DOM
1 docs - japanese
1 docs - more realistic examples
1 docs - nested props
1 docs - plugins
1 docs - ssr
64 性能(performance)
31 performance - ?
32 performance - bundle size
1 performance - DOM size
56 样式(styles)
19 styles - styled components
7 styles - docs
5 styles - simpler
4 styles - ?
3 styles - CSS syntax
3 styles - better dark/light switch
3 styles - emotion
3 styles - performance
2 styles - agnostic to engine
2 styles - CSS modules
2 styles - utility class names
1 styles - atomic compiled CSS-in-JS
1 styles - keep jss
1 styles - remove JSS
25 TypeScript
19 typescript - ?
3 typescript - docs
3 typescript - faster check
21 改进日期选择器(date picker - improve)
19 React Native
13 表单(form)
13 跟进 Material Design 更新
12 动画(animations)
8 animations - ?
2 animations - docs
1 animations - declarative API
1 animations - SVG
11 测试(test)
4 test - jest
3 test - stable snapshot
1 test - ?
1 test - docs
1 test - styles
1 test - testing library integration
8 更强的框架主张(more opinionated)
8 简化(simplify)
7 类组件支持(class components)
7 移动端(mobile)
7 更少的破坏性变更(fewer breaking changes)
7 设计师支持(designers)
2 designers - bridge design tools and code
2 designers - Adobe XD material
2 designers - Figma material
1 designers - ?
6 免费与付费的平衡(free vs paid balance)
6 改进 Tree view
6 更少抽象的组件(less abstracted components)
5 更抽象的组件(more abstracted components)
4 无障碍(accessibility)
1 accessibility - ?
1 accessibility - auto id
1 accessibility - full audit
1 accessibility - more examples
4 System
1 system - CSS grid
1 system - docs
1 system - performance
1 system - rework breakpoints
3 组件一致性(components consistency)
3 改进 Grid

可以清晰看出当年的三大主诉求是:组件数量(306 次)、定制化体验(189 次)与文档建设(155 次),其次是性能(64 次)与样式系统(56 次)。

与上一年度的对比(pain point 倍数)

报告按"2020 相对 2019 的痛点倍数"逐项列出变化:

痛点下降:

  • x0(Slider):零请求。需求基本被满足,尤其得益于 range 特性的引入。对照当前源码,Slider.js 中确实通过 Array.isArray(props.value || props.defaultValue) 判断 range 模式并渲染双滑块轨道逻辑,验证了该结论的落地。
  • x0.1(Strict mode):修复了大量 Strict mode 兼容问题;但由于 Create React App 将其设为默认,相关诉求仍不断出现。
  • x0.1(Autocomplete):作为新组件推出并修复了大量 issue,计划 v5 中从 lab 迁入 core。对照当前仓库,Autocomplete 已成为核心组件,源码位于 packages/mui-material/src/Autocomplete,并配套完整文档目录 docs/data/material/components/autocomplete
  • x0.2(更少的破坏性变更):在 v4 下仅发 minor 版本帮助巨大,但仍需谨慎处理 CSS 变更。
  • x0.3(无障碍):借助 a11y 专家(多来自大规模使用 Material UI 的大公司)提交的 GitHub issue 显著改善。
  • x0.4(Material Design 跟进):投入有限,团队开始意识到自己与"构建自定义设计系统"的开发者共振更强。
  • x0.4(TypeScript):全部 demo 迁往 TypeScript、所有 props 接入 IntelliSense 的努力开始见效。
  • x0.5(日期选择器):当年投入大,但预判仍需要 range 能力并迁入主仓库保持一致性。
  • x0.7(性能):无实质投入,推测与开发者借助虚拟化、更新裁剪等更有效地使用 React 有关。

痛点上升:

  • ∞(Forms,新出现条目):团队应至少与 react-hook-form、formik、react-final-form 更紧密协作。
  • ∞(Charts,新出现条目):Material Design 规范本身也设有"数据可视化"专题页。
  • x5(自定义主题)x5(更简单的定制化):当年通过引入全局类名(global class names)、降低部分选择器 CSS 特异性提升了可定制性,但显然正在触达一批新受众,仍需做得更好。
  • x1.5(动画)
  • x1.2(React Native):报告明确"暂无计划",认为该市场在当时规模不足以支撑其商业模式。
  • x1.1(更多组件):给出越多、开发者要得越多;报告透露将通过企业版(enterprise version)解决高级组件的可持续开发,并把收入反哺开源组件——"首个 early access 将于今年落地"。

6. 选择 UI 库时,你的关键标准是什么?

柱状图(本题限选 3 项)显示:The design, look & feel(21.99%)Documentation quality(21.64%) 并列第一梯队,其后依次是 Customizability(16.38%)TypeScript integration(8.42%)Comprehensiveness(6.89%)Enterprise ready(5.35%)Popularity(4.92%)Bundle size(4.68%)Accessibility(4.45%)、Offered support & help(1.88%)、Performance(0.12%)与其他(0.67%)。设计与文档压倒性地成为 UI 库选型的第一、第二考量,这也印证了上述"docs(155 次)"改进诉求的合理性。

三、关于你(About you):2020 年的社区画像

7. 你是如何知道 Material UI 的?

搜索引擎(Search,50.65%)是第一触达渠道,其后是口碑(Word of mouth,26.18%)、社交媒体(10.76%)、博客(5.10%)与其他(7.31%)。

8. 以下哪项最符合你当前的工作角色?

全栈开发者(52.18%)前端开发者(27.11%) 占绝对主体,其后是全能创业者(11.65%)、网页开发初学者(3.47%)、后端(1.23%)、UX 设计师(1.16%)、学生(0.34%)、CTO(0.20%)与其他(2.66%)。

9. 你的组织规模有多大?

呈现明显的中小团队特征:2–5 人(35.60%)、自雇/自由职业(13.40%)、爱好/副项目(12.30%)、6–10 人(16.10%)、11–20 人(10.30%)、21–50 人(5.10%)、51–100 人(2.50%)、100+ 人(4.60%)。报告据此承诺在保持组件易用性的同时,支持设计师将其按组织品牌定制。

10. 你使用 JavaScript 开发多久了?

近似正态分布:刚开始(3.60%)、6 个月以上(7.40%)、1 年以上(20.80%)、3 年以上(27.80%)、5 年以上(24.30%)、10 年以上(9.80%)、15 年以上(4.10%)、20 年以上(2.30%)。主力人群集中于 1–5 年经验区间。

11. 你使用 React 开发多久了?

刚开始(10.70%)、6 个月以上(15.60%)、1 年以上(24.60%)、2 年以上(21.40%)、3 年以上(23.10%)、"Bleeding edge" 5 年以上(4.60%)。

12. 你使用 Material UI 开发多久了?

刚上手(20.50%)、6 个月以上(24.90%)、1 年以上(28%)、2 年以上(17.40%)、3 年以上(7.50%)、自称"先驱者"的 4 年以上用户(1.70%)。超过一半受访者使用不足一年,说明当时正处于高速吸纳新用户的扩张期。

13. 在 Material UI 之前你主要使用什么?

Bootstrap(47.08%) 断层第一,其次为自研系统(16.04%)、"直接以 Material UI 起步"(13.68%)、Angular Material(6.67%)、Semantic-UI(4.44%)、Ant Design(3.19%)与其他(8.89%)。结论与上年一致:大量用户从 Bootstrap 与自研方案迁移而来。

14. 你用 Material UI 构建过多少个项目?

0 个(刚入门,11.50%)、1 个(23%)、2–5 个(54.80%)、6–10 个(7.80%)、10 个以上(2.90%)。过半受访者已用它交付过 2 到 5 个项目,属于活跃的重复使用者。

四、你的产品(Your product):生产环境中的真实用法

15. 你在构建什么?

企业应用(23.43%)Dashboard 后台(20.31%) 高居榜首,其后依次为设计系统(7.40%)、UI 组件库(7.40%)、技术尝鲜(7.37%)、原型(7.34%)、落地页(6.40%)、电商站点(5.41%)、CMS(4.80%)、个人作品集(3.59%)、博客(1.88%)与其他(4.69%)。报告借此呼吁:如果你在构建可分享的内部/展示型系统,可通过 PR 加入 showcase 页面 的案例墙;若在开发 UI 组件,也可在 related-projects 页面 获得展示位。

16. 你采用哪种"交付机制"?

单页应用(Create React App 等,68.37%) 占绝对多数,其后是服务端渲染网站(Next.js、Gatsby 等,18.24%)、桌面应用(Electron 等,6.22%)、原生移动端(Cordova 等,4.65%)、React Native(0.10%)与其他(2.40%)。SPA 与 SSR 合计近九成,印证了其后官方对 Next.js、Gatsby 等 SSR 生态与文档的持续投入。

17. 你在为谁构建?

为所在公司(55.17%)、为外部客户(22.86%)、个人副项目(16.94%)、多种兼有(5.03%)。

18. 你使用哪个 JavaScript 框架(如有)?

Create React App(57.34%) 一枝独秀,其后为自定义 webpack(16.40%)、Next.js(12.35%)、Gatsby(5.40%)与其他(8.51%)。

19. 你使用哪种样式系统?

Material UI styles(JSS)(53.84%) 超过半数,其次为 styled-components(20.41%)、原生 CSS(13.01%)、CSS Modules(8.31%)、Emotion(1.96%)、scss(0.59%)、sass(0.59%)、less(0.09%)与其他(1.19%)。报告指出该分布与上年类似,并承诺"为 styled-components 提供更好的支持"。

对照当前仓库可以清晰看到这条演进的终点:@mui/material v5 起已将样式引擎切换到 Emotionpackage.json 中直接声明了 @emotion/react ^11.5.0@emotion/styled ^11.3.0 依赖(同文件 peerDependencies 亦同步收窄)。也就是说,表格里"styles - styled components(19 次)、styles - emotion(3 次)、styles - remove JSS(1 次)"这些诉求在后续大版本中通过引擎替换得到了结构性回应;仓库内另有 @mui/styled-engine@mui/styled-engine-sc 两个适配包(见 packages)承载可插拔的样式引擎抽象。

20. 你的组织是否为 UI 组件付费过?

否(89.90%)是(10.10%)。不足一成的付费比例,正是上文"free vs paid balance(6 次)"与"enterprise ready"议题的现实背景——Material UI 的核心免费而高级/企业级能力另设产品线,正是为了在开源免费与可持续研发之间取得平衡。

21. 你使用什么类型系统?

未使用(54.08%)、TypeScript 3.8(30.87%)、TypeScript 3.7(7.31%)、Flow(1.90%)、TypeScript 3.6(1.55%)、TypeScript 3.5(0.98%)与其他(3.31%)。报告据此预言:"几乎一半社区已在使用 TypeScript,明年甚至可能超过 JavaScript。"对照当前仓库,这一预判已成事实——packages/mui-material/src 下绝大多数实现以 .ts/.tsx 编写(见 包源码),文档 demo 同样以 .tsx 为主(见 docs/data/material 下大量 *.tsx 示例文件)。

五、选型标准横评与调研方法论小结

把第 6 题的选型标准与第 5 题的改进诉求放在一起看,能还原出当时的核心矛盾:用户最看重设计、文档与可定制性,而最被高频抱怨的恰好也是"组件不够多、定制不够简单、文档不够全"——即用户已经认可基础能力,转而要求更高的覆盖度与更顺滑的进阶体验。这种"按社区共鸣度排序、以问卷反馈驱动路线图"的协作方式,也被官方文档固化为长期机制:如今的 roadmap 文档 中仍明确写着"我们会开展年度开发者调查,调查结果是 Material UI 路线图的关键输入"。当年的 vote.mp4 视频也继续保留在文末,用于引导社区通过 GitHub 点赞影响优先级。

六、结论与行动清单:官方当时承诺做什么

报告以"这份数据对我们的团队价值无可估量"作结,并基于第 5 题数据列出了四条后续行动方向:

  1. 提升组件灵活性,提供无样式(unstyled)组件(纯 hooks 形态)。从仓库演进看,"更多组件"诉求的高频子项最终在 @mui/lab(见 mui-lab 源码目录,内含 TreeView、TreeItem、Timeline、Masonry、DateRangePicker、LoadingButton 等"待转正"组件)与更底层产品线中逐步得到承接;docs 站点的 about-the-lab 页面 正是对这套"先进组件先入 lab、成熟后并入 core"流程的官方说明。
  2. 让定制化更简单、可用 Material UI 实现自定义主题,甚至提供主题构建器。docs 的 customization 章节 正是围绕 theme、global class names、降低 CSS 特异性等手段沉淀出的使用指南。
  3. 提供第二套主题、让组件更贴合 Material Design 规范,并补充更简单的组件与更好 DX(报告点名了 dropzone、carousel 等,以及可借鉴自其他 UI 库的好点子),目标落在 v5。
  4. 改进付费的高级组件版本(如复杂 Data Grid、日期区间选择器、Tree view 拖拽、虚拟化等),以企业级收入反哺开源。

官方同步声明:"我们将在接下来几天内更新 ROADMAP",并会在下一年再次开展类似调查以追踪进展。

七、如何用这份报告做决策与持续追踪

对技术决策者而言,这份报告的迁移价值在于三点方法论:

  • 量化迁移理由:Q13/Q14 显示大量用户从 Bootstrap 与自研系统迁入、且重复建项比例高,可作为团队论证"组件库选型 ROI"的历史基线数据;
  • 建立反馈闭环:Q5 的 306/189/155/64/56 次分类体系,示范了如何把开放式吐槽转化为可排序、可逐年对比的需求池——这也是仓库 roadmap 文档至今沿用的"社区驱动优先级"机制的雏形;
  • 追踪实现证据:将当年痛点与今天的源码一一对应(Slider range 见 Slider.js,Autocomplete 落位于 core,样式引擎切换为 Emotion,TypeScript 成为主流),即可形成一份从"用户之声"到"代码落地"的完整证据链。

如需查阅更多历史同类数据,可对比 2019 届报告 2019-developer-survey-results.md 与 2021 届报告 2021-developer-survey-results.md,三份报告同仓存放、互为时间序列,能更完整地还原 Material UI 社区需求的连续演化轨迹。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
897
5.8 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
594
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
916
1.83 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.58 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.01 K
516
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
547
388