Skip to content

Commit c32246b

Browse files
[blog] 2020 in review and beyond (mui#24130)
1 parent b01eff5 commit c32246b

File tree

7 files changed

+242
-123
lines changed

7 files changed

+242
-123
lines changed

docs/pages/blog/2020.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import React from 'react';
2+
import TopLayoutBlog from 'docs/src/modules/components/TopLayoutBlog';
3+
import { prepareMarkdown } from 'docs/src/modules/utils/parseMarkdown';
4+
5+
const pageFilename = 'blog/2020';
6+
const requireRaw = require.context('!raw-loader!./', false, /2020\.md$/);
7+
8+
export default function Page({ docs }) {
9+
return <TopLayoutBlog docs={docs} />;
10+
}
11+
12+
Page.getInitialProps = () => {
13+
const { demos, docs } = prepareMarkdown({ pageFilename, requireRaw });
14+
return { demos, docs };
15+
};

docs/pages/blog/2020.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
---
2+
title: 2020 in review and beyond
3+
description: 2020 has been another great year, not only for Material-UI, but also for the ecosystem.
4+
date: 2020-12-31T00:00:00.000Z
5+
authors: ['oliviertassinari', 'mbrookes']
6+
card: true
7+
---
8+
9+
2020 has been another great year, not only for Material-UI, but also for the ecosystem.
10+
We have taken on ambitious challenges and started to scale the project.
11+
12+
## Growth
13+
14+
- 📦 From 3.2M to [6.4M](https://npm-stat.com/charts.html?package=%40material-ui%2Fcore&from=2019-11-30&to=2020-12-31) downloads per month (from 14% to 18% share of the React ecosystem).
15+
- 📈 From 3.1M to 4.6M unique visitors per year on the documentation.
16+
- ⭐️ From 53.3k to 63.8k stars, leave us [yours 🌟](https://github.com/mui-org/material-ui).
17+
- 👨‍👩‍👧‍👦 From 1,581 to [2,052](https://github.com/mui-org/material-ui/graphs/contributors) contributors.
18+
- 💰 Grew financial support by 2.1X in 2020, compared to 2019.
19+
- 🏢 From 3 to 6 full-time equivalent developers, spread among multiple financially supported [core team members](https://material-ui.com/discover-more/team/).
20+
21+
The numbers speak for themselves. We have reproduced the [traction we got in 2019](/blog/2019/).
22+
23+
## In review
24+
25+
When we started 2020, we were celebrating the launch of many new components.
26+
We were busy building features to match feature parity with Ant Design, and more importantly, acting on the top feedback we got doing the [first user survey](/blog/2019-developer-survey-results/).
27+
28+
We have spent the year continuing in the same direction, polishing past components and introducing new ones. We ran a [second user survey](/blog/2020-developer-survey-results/), 15 months after the first one. It was a great opportunity to evaluate the effectiveness of our past efforts. For instance, we were very pleased to see that the slider component was almost a solved problem, and that the TypeScript definitions significantly improved. We also noticed the emergence of trends:
29+
30+
- The more new components we add, the more developers want new ones. For instance, we rarely heard about the need for providing charts in 2019, it's now one of the top requested. In our last survey, we had 10% more requests for new components, even though, we brought new ones. We were surprised, it was counter-intuitive to us.
31+
- The pain around the customization of the components is growing. We also frequently hear that there is a steep learning curve for using `@material-ui/styles`. We are reaching a larger audience used to raw CSS without extensive knowledge of specificity.
32+
- The demand for Material Design is stable, no longer growing. At the same time, the request for new ready-to-use themes is up. Our strategy around providing building blocks to build custom designed UI starts to gain traction.
33+
34+
We have started to leverage these trends as opportunities in the next version of the library: v5.
35+
36+
## Achievements
37+
38+
We have achieved most of what we could have hoped for.
39+
40+
- The most important, we have welcome 3 new members in the company: [Damien](/blog/spotlight-damien-tassone/), [Marija](/blog/marija-najdova-joining/), and [Danail](/blog/danail-hadjiatanasov-joining/).
41+
- We have made significant progress with [v5](https://next.material-ui.com/). We have made half the breaking changes planned. We have migrated our [first component](https://next.material-ui.com/components/slider/) to the new style architecture (emotion by default, adapter for styled-components, and unstyled).
42+
- We have introduced new components (some in the core, some in the lab):
43+
- [Alert](/components/alert/)
44+
- [DataGrid](/components/data-grid/)
45+
- [DatePicker](https://next.material-ui.com/components/date-picker/)
46+
- [LoadingButton](https://next.material-ui.com/components/buttons/#loading-buttons)
47+
- [Timeline](/components/timeline/)
48+
- [TrapFocus](https://next.material-ui.com/components/trap-focus/)
49+
- We have fixed most of the issues with the [Autocomplete](/components/autocomplete/). We have received an overwhelming interest in the component. It was impressive to see.
50+
- We have completed the work for [strict mode](https://reactjs.org/docs/strict-mode.html) support.
51+
- We have increased the adoption of TypeScript in the codebase. We don't plan a dedicated migration but to write new code in TypeScript, as we go.
52+
- We have migrated most of the tests from Enzyme to [Testing Library](https://testing-library.com/).
53+
- We have modernized the system, introducing an [`sx` prop](https://next.material-ui.com/system/basics/) to be used in all the core components.
54+
- We have added support for [Figma](/store/items/figma-react/) and [Adobe XD](/store/items/adobe-xd-react/).
55+
- We have released the first Enterprise component in an alpha version: [XGrid](/components/data-grid/#commercial-version).
56+
57+
## Looking at 2021
58+
59+
2020 was great, 2021 is going to be even more exciting!
60+
We will continue in the same direction, it's still [**day one**](https://www.sec.gov/Archives/edgar/data/1018724/000119312517120198/d373368dex991.htm). Here is a breakdown of our [roadmap](/discover-more/roadmap/).
61+
62+
### Branding
63+
64+
Up until now, we never had a mindful reflection on what the branding of Material-UI should be. We picked a color from the 2014 Material Design palette, and that's it.
65+
The [material-ui.com](https://material-ui.com/) marketing website will soon wear a brand new style! We need to create our own identity, distinct from Material Design.
66+
67+
### Material-UI X
68+
69+
We started to deliver advanced React components in 2020 with the data grid, including a [commercial version](/components/data-grid/#commercial-version) and the beginning of a [date range picker](https://next.material-ui.com/components/date-range-picker/).
70+
We will double down on these existing components as long as necessary to have them find the market.
71+
72+
By the end of 2021, we aim to have released these components as stable, implement all the [features planned](/components/data-grid/getting-started/#feature-comparison), and at least double the size of the team.
73+
74+
### Material-UI v5
75+
76+
We will release the next major iteration of the library. A highlight of the key improvements coming ✨:
77+
78+
- Polish and promote most of the components that were in the lab in v4 to the core.
79+
- A new style engine. Migrate from JSS to emotion (default) and styled-components's `styled` API.
80+
- Improve customizability. Add new powers to the theme with dynamic color & [variant](https://next.material-ui.com/customization/typography/#adding-amp-disabling-variants) support. Add a new [`sx` prop](https://next.material-ui.com/system/basics/) for quick customizations to all the components. Expose global class names. Deprecate the `makeStyles` and `withStyles` API.
81+
- Breaking changes on the API to make it more intuitive.
82+
- Add full support for React strict mode. We recommend to enable it.
83+
- Improve the performance of the system by a x3-x5 [factor](https://github.com/mui-org/material-ui/issues/21657#issuecomment-707140999).
84+
- Reduce bundle size: split IE11 into a different bundle [-6kB](https://github.com/mui-org/material-ui/pull/22814#issuecomment-700995216), migrate to emotion [-5kB](https://github.com/mui-org/material-ui/pull/23308#issuecomment-718748835), Popper.js v2 upgrade [-700B](https://github.com/mui-org/material-ui/pull/21761#issuecomment-657135498).
85+
- Improve the documentation website: search shortcut, page rating, fast material icons copy button, etc.
86+
87+
And [much more](https://github.com/mui-org/material-ui/issues/20012).
88+
89+
### A second theme
90+
91+
While Material Design is a predominant design choice for building rich client-side applications, it's not the only popular design trend. We plan to provide a [second theme](https://github.com/mui-org/material-ui/issues/22485) to expand the range of use cases for Material-UI, striking a balance between:
92+
93+
- alignment with the best-looking design trends of hot startups in the US.
94+
- optimization of its usage for rich client-side applications while keeping it good enough for landing pages.
95+
- simplicity of the design for allowing simpler customizations.
96+
- complementarity with Material Design.
97+
98+
It will be built on top of the unstyled components.
99+
100+
### Unstyled
101+
102+
While the completion of the unstyled components was originally part of the v5 milestone,
103+
we will likely finish this effort independently.
104+
Outside of the requirement to introduce breaking changes on the component customization API, e.g. from `PaperProps` to `componentsProps`, [RFC #20012](https://github.com/mui-org/material-ui/issues/21453), we can work on unstyled at the same time we make progress with the second theme. The two efforts should go hand in hand.
105+
106+
### Scale
107+
108+
If we sustain the current growth rate, we should be able to double the size of the team, from 6 to over 10 members in the company without raising. While we will focus on strengthening all the efforts that we have started, it should start to give us room to take on significantly more ambitious problems guided by the following foundations:
109+
110+
- React dominance in the UI development landscape will increase and stay for a very long time.
111+
- Developers are looking to build faster and more appealing UIs.
112+
- Low-code will progressively become mainstream for professional developers and knowledge workers.
113+
114+
If like us, you are excited about bringing joy to developers and enabling more people to build apps, check our positions, [we are hiring](/company/jobs/)!
115+
116+
See you in 2021 🚀

docs/public/static/blog/2020/card.png

43.4 KB
Loading

docs/public/static/blog/2021/card.png

43.9 KB
Loading

docs/src/modules/components/TopLayoutBlog.js

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ const authors = {
1616
name: 'Olivier Tassinari',
1717
github: 'oliviertassinari',
1818
},
19+
mbrookes: {
20+
name: 'Matt Brookes',
21+
github: 'mbrookes',
22+
},
1923
};
2024

2125
const styles = (theme) => ({
@@ -61,13 +65,17 @@ const styles = (theme) => ({
6165
...theme.typography.body2,
6266
},
6367
avatar: {
64-
marginTop: theme.spacing(-1),
6568
display: 'flex',
66-
alignItems: 'center',
67-
marginBottom: theme.spacing(5),
68-
fontWeight: theme.typography.fontWeightMedium,
69-
'& .MuiAvatar-root': {
70-
marginRight: theme.spacing(1),
69+
gap: theme.spacing(3),
70+
'& > div': {
71+
marginTop: theme.spacing(-1),
72+
display: 'flex',
73+
alignItems: 'center',
74+
marginBottom: theme.spacing(5),
75+
fontWeight: theme.typography.fontWeightMedium,
76+
'& .MuiAvatar-root': {
77+
marginRight: theme.spacing(1),
78+
},
7179
},
7280
},
7381
});
@@ -113,12 +121,14 @@ function TopLayoutBlog(props) {
113121
<MarkdownElement>
114122
<h1>{headers.title}</h1>
115123
</MarkdownElement>
116-
{headers.authors.map((author) => (
117-
<div className={classes.avatar}>
118-
<Avatar src={`https://github.com/${authors[author].github}.png`} />
119-
{authors[author].name}
120-
</div>
121-
))}
124+
<div className={classes.avatar}>
125+
{headers.authors.map((author) => (
126+
<div key={author}>
127+
<Avatar src={`https://github.com/${authors[author].github}.png`} />
128+
{authors[author].name}
129+
</div>
130+
))}
131+
</div>
122132
</React.Fragment>
123133
) : null}
124134
{rendered.map((chunk, index) => {

0 commit comments

Comments
 (0)