2022: My Open-Source Journey
In March 2022, I wrote a rambling self-introduction to summarize my technical experience before college. If you haven’t read it, go read that one first and then come back.
Now it’s time to talk about my open-source story ramble 😎!
Getting Started 2020, Age 18, Freshman
Back to the timeline in that earlier post — 2020, the first year of the pandemic, and the year I took the college entrance exam. After entering university, life was much freer than in high school. I had more time to explore and tinker with what I really wanted to do.
In September 2020, Vue released the official 3.0 version. The Composition API really clicked with me, and I started paying close attention to the ecosystem around it. I also tried it in my own projects.
Later I used VueUse. It wasn’t very mature at the time, and I found some small issues while using it, so I quickly opened a PR on GitHub. I became interested in the project and eventually submitted six PRs. This was the spark that got me into the open-source community. I also got to know Anthony Fu a bit 😇.
Overall, in 2020 I was just interested in open source, but most of my time still went to maintaining my own projects. I had already gotten pretty used to filing issues and PRs on GitHub when problems came up🤣.
First Attempts 2021, Age 19, Sophomore
A year had passed since Vue 3 was released, but my own projects were still on Vue 2. I wanted to migrate to Vue 3, but migrating from Vue 2 + Element UI to Vue 3 + Element Plus was extremely painful back then, so I had to keep using Vue 2.
Later Anthony Fu tweeted that he made unplugin-vue2-script-setup, which brought <script setup> to Vue 2. With that plugin, Vue 2 finally felt a bit like today’s Vue 2.7. I asked in the replies whether it could support ref sugar take 2 (now called Reactivity Transform), and he said they’d wait until the proposal stabilized (it’s 2023 now, Vue 2.7 is out, and Reactivity Transform still isn’t stable 😅). I felt that proposal was going nowhere (and I was right 🤓), so I submitted a PR to implement it myself. Anthony later tweeted and @-mentioned me; I felt super accomplished.
That was my first time getting recognition in open source 🤩.
Element Plus
That summer, I finally upgraded one of my projects to Vue 3, and naturally moved from Element UI to Element Plus. During the migration I found some issues, opened an issue, and the maintainers encouraged me to fix it myself — so I opened a PR.
With some prior contribution experience, I asked if I could help maintain the library. I got a positive reply and was tricked invited to become a maintainer, officially stepping onto the point-of-no-return open-source path 😆! (In reality, I was just burned out on business code 🤫)
When I joined the Element Plus team, it was still in the 1.x beta stage with bugs and ancient code. While reading the codebase, I aggressively submitted PRs and started a refactoring plan: switched TypeScript to strict mode, rebuilt the build pipeline, and more. Since I had previously maintained projects alone, the community members were super helpful. They walked me through GitHub workflows and how open-source collaboration actually works.
Looking back now, this was my first stop in open source and the first time I discussed projects and code with like-minded people. During this period, I spent almost all my spare time maintaining Element Plus — after class I’d run back to my dorm to review PRs 🤖.
I learned a ton from the open-source community during this time and grew quickly. Because Element Plus is a Vue UI library, I worked with Vue every day and gained a deeper understanding. I also studied many topics I didn’t know well, like Rollup, unplugin, esbuild, and ESM vs. CommonJS.
Many projects were born or discovered while maintaining Element Plus. unplugin-vue is a Rollup plugin I wrote while modifying Element Plus build tools. unplugin-vue-macros was built last year to migrate Element Plus to <script setup>. I also contributed unplugin-vue-components and unplugin-auto-import to the official Element Plus docs.
In short, 2021 was my first year of serious open-source involvement. Over just a few months I submitted 200+ PRs and made small contributions to the Vue ecosystem, including my first PR to Vue 3 😎.
Hitting My Stride 2022, Age 20, Junior
If 2021 was a great start, 2022 was definitely a meaningful year for me.
In February, after the Spring Festival, Vue switched Vue 3 to the default version on the seventh day of the lunar new year, and Element Plus released its first stable version. Behind the scenes, I was helping polish final details and docs during the holiday, and even pushing releases on New Year’s Eve 🤣.
This year I contributed my first PR to Vite. While migrating Element Plus to <script setup>, I submitted my first RFC to Vue. It was a huge honor to be followed by Evan You’s two Twitter accounts.
In March, with help from the Element Plus team, I started GitHub Sponsors and received my first bucket of open-source income 🥳! So far I’ve been supported by 49 sponsors. Thank you all for the recognition and support ❤️.
Back in 2021 I had thought about live-streaming coding on Bilibili, but it was just talk. This year I finally did it. The trigger was Anthony Fu live-streaming; it looked fun. I occasionally stream coding or chatting on Bilibili, and met quite a few friends!
Grinding starts
In the second half of the year, I gradually shifted my focus beyond Element Plus. I hacked on some toy projects and kept maintaining my own libraries — basically fixing things here and there and hopping on PRs 🤪. The personal project I spent the most time on was Vue Macros. Through it, I unlocked some weird ways to use Vue — an experimental Vue edition (not really). With this project I attended Nuxt Nation 2022. Invited by Haoqun Jiang, I also joined Vue Conf China 2022, my first time speaking in the Vue community. Unfortunately, due to well-known reasons, I still haven’t been able to attend any in-person meetups.
I also recorded an episode of the podcast “Open Source Face to Face” (episode link). It was my first time recording a podcast, so I was a bit stiff 🫣 — please forgive me. After the recording, I also built the official website for the show.
The biggest achievement this year was joining the Vue team! I spent a lot of time contributing to the Vue repo, and with Anthony Fu’s nomination, I became a Vue team member. It’s a huge recognition and encouragement. As the youngest member of the Vue team, I’m still quite green 🥬 and have a lot to learn. My understanding of Vue isn’t deep enough yet, so I need to keep learning from senior members 🫡.
Of course, the open-source community isn’t only happy moments — there are also frustrating ones, like unreasonable issues. But after being involved long enough, I’ve built some immunity. I treat those issues as entertainment and post them online for fun. See Twitter #迷惑issue大赏.
In the first half of the year, the community project I participated in the most was Element Plus, which I already covered above. In the second half, it was Elk, a web-based Mastodon client built on the Vue stack. Anthony Fu created the project, and later I got bored for a while and he invited me in. I spent a period communicating frequently with teammates Patak and Daniel Roe, to the point that I was living on European time (GMT+1) 🤣. Through Elk, more people from the Vue community got involved! I learned all kinds of tech stacks: Nuxt, PWA, Tauri, and more.

Thanks riding the hype
The biggest gain this year was meeting many friends in the open-source community — Anthony Fu, ShenQingchuan, webfansplz, Haoqun Jiang, Patak, Daniel Roe, Johnson Chu, LittleSound, and more! It’s hard to imagine that the big names I looked up to in the past two years are now people I can chat with regularly (talking and laughing! 🤪)
With the help of many friends, I achieved a lot this year — it was a year full of accomplishment. I’d like to thank my sponsors and friends like Evan You and Patak. Thanks to their support, I received even more sponsorship, which means a lot to me.
👋 Looking Ahead to 2023
🚩 Goals
-
Blog & writing
I hope to renovate my long-neglected, weed-covered blog in 2023. Since it’s so old, I haven’t been motivated to write posts. I want to write more summary-style articles regularly to avoid another rambling year-end recap next year 🥲. I’m not great at expressing myself, so writing more might help.
(May your blog wander for half a life and return to being a GitHub Gist 🤣) -
Build an open-source project I’m proud of
I hope to build a larger open-source project that I’m truly satisfied with 🤔.
-
In-person conferences
With the situation improving, there should be more chances to speak overseas in 2023. I hope to attend more in-person talks and conferences, and see you at Vue.js Amsterdam 2023 👋.
-
Relocate
Find Me
For more of my daily life, you can follow me on: