In March 2022, I wrote a self-introduction journal article summarizing my technical experiences before university. If you haven't read it yet, go read the previous article before continuing!
Now it's time to talk about my story with open source journal 😎!
New Arrival 2020, 18 years old, Freshman#
Back to the timeline mentioned in the previous article—2020, the year of the pandemic, which was also the year I took the college entrance examination. After entering university, I felt much freer compared to high school. I had more time to explore and tinker with what I really wanted to do.
In September 2020, Vue released version 3.0. The Composition API of Vue really resonated with me, and I became very interested in the ecosystem related to the Vue Composition API. While working on my own projects, I also tried to use it.
Later, I used the VueUse library. However, VueUse was not particularly mature at that time, and I encountered some minor issues while using it, so I immediately went to GitHub and submitted a PR. I became quite interested in the VueUse project and subsequently submitted 6 PRs. This event marked the beginning of my interest in the open source community. I also became somewhat familiar with Anthony Fu 😇.
Overall, in 2020, I only had some interest in open source, but most of the time I continued to maintain my own projects. I became quite skilled at submitting issues and PRs on GitHub when encountering problems in my projects 🤣.
A Small Trial 2021, 19 years old, Sophomore#
A year had passed since the official release of Vue 3, yet my own projects were still using Vue 2, and I had always wanted to migrate to Vue 3. However, migrating from Vue 2 + Element UI to Vue 3 + Element Plus was really cumbersome, so I had no choice but to continue using Vue 2.
Later, Anthony Fu tweeted that he created unplugin-vue2-script-setup to use <script setup>
syntax in Vue 2. With this plugin, it finally resembled Vue 2.7. I asked in the tweet if it could support ref sugar take 2 (which is now the Reactivity Transform), and the reply was that it would be done once the proposal stabilized (but now it's 2023, Vue 2.7 has been released, and the Reactivity Transform is still not stable 😅). I felt that this proposal was far from being realized (and indeed 🤓), so I submitted a PR to implement this feature myself. Later, Anthony tweeted at me, and I felt a great sense of accomplishment at that time.
This was my first recognition in open source 🤩.
Element Plus#
During the summer of that year, I finally upgraded one of my projects to Vue 3. Naturally, I also upgraded Element UI to Element Plus. While migrating to Element Plus, I discovered some minor issues and submitted an issue. At that time, the maintainers of Element Plus encouraged me to try fixing it myself, so I submitted a PR to fix it.
Due to my previous experience contributing to open source, I was also interested in asking the maintainers if I could participate in maintaining this library. After receiving a positive response, I was tricked invited to become a maintainer, officially embarking on the irreversible path of open source 😆! (Actually, I was just tired of writing business code 🤫)
When I joined the Element Plus team, it was still in the 1.x beta version, and there were some bugs and ancient code. While reading the code, I also crazily submitted PRs—initiating a refactoring plan. I changed TypeScript to strict mode, restructured the build process, and so on. Since I had previously maintained projects by myself, after joining the Element Plus team, the community members were very enthusiastic and guided me through understanding GitHub workflows and collaboration in open source projects.
From today's perspective, looking back at this experience, this was my first stop in open source, my first time discussing projects and code with a group of like-minded partners. During this time, I spent almost all my spare time maintaining Element Plus, rushing back to my dormitory to check PRs right after class 🤖.
During this time, I learned a lot in the open source community, which was a period of rapid growth for me. Since Element Plus is a UI library for Vue, I dealt with Vue all day long and gained a deeper understanding of it. In addition, I researched many things I didn't understand, such as Rollup, unplugin, esbuild, ESM, and Common JS.
Many projects were also born and recognized during my time maintaining Element Plus. unplugin-vue was written as a Rollup plugin when modifying the build tool for Element Plus. unplugin-vue-macros was a tool I created last year for migrating the <script setup>
syntax for Element Plus. I also included unplugin-vue-components and unplugin-auto-import in the official documentation of Element Plus.
In summary, 2021 was my first official year participating in open source. During the more than four months, I submitted over 200 PRs and made some small contributions to the ecosystem around Vue, during which I also submitted my first PR for Vue 3 😎.
Getting into the Groove 2022, 20 years old, Junior#
If 2021 was a good start, then 2022 was definitely a significant year for me.
In February of this year, after the Spring Festival, Vue switched to version 3 as the default version on the seventh day of the Lunar New Year, and Element Plus also released its first official version. However, behind the scenes, during the Spring Festival, I was helping to finalize some last details and documentation, and I was still busy releasing on New Year's Eve 🤣.
This year, I contributed my first PR to Vite. While migrating Element Plus to <script setup>
syntax, I submitted my first RFC for Vue. I was very honored to receive attention from both of Evan You's Twitter accounts.
In March, with the help of my friends from Element Plus, I opened GitHub Sponsor. I received my first bucket of gold from the open source community 🥳! I have currently received support from 49 partners! I am very grateful for everyone's help and recognition ❤️.
In 2021, I actually thought about live streaming coding on Bilibili, but it was just talk. But this year, I finally took action. The opportunity came when Anthony Fu live-streamed, and I thought it was quite fun. Occasionally, I live stream coding or chatting on Bilibili, and I have met quite a few friends!
It's getting exciting
In the second half of the year, I gradually shifted my focus to projects outside of Element Plus, tinkering with some toys while also maintaining some of my own libraries, just fixing and patching PRs everywhere 🤪. The personal project I spent the most time on this year was Vue Macros. Through this project, I unlocked some strange ways of using Vue—Vue Exploration Edition (not). Through this project, I participated in Nuxt Nation 2022. At the invitation of Haoqun Jiang, I also participated in Vue Conf China 2022, which was my first time participating in a Vue community talk. However, unfortunately, due to well-known reasons, I have not yet participated in any offline gatherings.
This year, I also recorded a podcast episode for "Open Source Face to Face," which was my first time participating in recording a podcast. Since it was my first time, I might have been a bit nervous 🫣, so please forgive me. After the recording was completed, I also created a website for "Open Source Face to Face."
The biggest achievement this year was joining the Vue team! I spent a lot of energy on the Vue repository for a while, and after making several contributions to Vue, I became a member of the Vue team at the recommendation of Anthony Fu. This was a great recognition and encouragement for me. As the youngest member of the Vue team, I am still quite inexperienced 🥬, and there is still a lot for me to learn. My understanding of Vue may not be very deep, so I need to continue learning from my seniors 🫡.
Of course, in the open source community, there are happy things, but there are also frustrating things—some incomprehensible issues. Fortunately, I have been participating in the open source community for a while, so I have developed immunity. When encountering such issues, I treat them purely as entertainment and share them online for a laugh. See Twitter for more details #ConfusingIssueAwards.
In the first half of this year, the community project I participated in the most was Element Plus, which I have already introduced, so I won't elaborate further. In the second half, it was Elk Lu Ming, a web version of a Mastodon client developed based on the Vue tech stack. Initially, this project was founded by Anthony Fu, and later, I felt bored for a while, so I was invited to join. After that, I often communicated with the team members Patak and Daniel Roe, to the point where I was living on GMT+1 🤣. Through Elk Lu Ming, more friends from the Vue community got involved! I learned various tech stacks: Nuxt, PWA, Tauri, etc.
Acknowledgments Riding the wave#
However, the biggest gain this year was meeting many friends from the open source community—Anthony Fu, ShenQingchuan, webfansplz, Haoqun Jiang, Patak, Daniel Roe, Johnson Chu, LittleSound, and many others! It's hard to imagine that the big shots who seemed unreachable in the first two years can now often discuss (chat and laugh! 🤪)
This year, with the help of many friends, I achieved many accomplishments. It was truly a fulfilling year. I would like to thank Evan You, Patak, and my sponsors and friends. Thanks to Patak and Evan You for sponsoring me, I received more sponsorship after their recognition, which is of great significance to me.
👋 The Future, 2023#
🚩 Goals#
-
Blog & Articles
I hope to renovate my long-neglected blog in 2023. Since the blog is too old, I lack the motivation to write articles. I plan to write more summary articles regularly to avoid writing a journal-like year-end summary next year 🥲. Actually, I am not very good at expressing myself, so writing more articles might help improve that.
(May your blog last a lifetime, and when you return, it’s still GitHub Gist 🤣) -
Create a satisfactory open source project
I hope to create a larger and more satisfying open source project 🤔.
-
Offline Conf
Due to well-known reasons, there will be more opportunities to participate in overseas talks in 2023. So I hope to participate in more offline talks. I hope to see everyone at Vue.js Amsterdam 2023 👋.
-
Rinse
Catch Me#
You can follow my daily life through the following websites 💖