My First Year in the Open Source World
Today is Aug 19th, 2026. Only three days of my summer break remain before I become a senior high school student.
I can still remember myself at 14 last summer, thinking about what I truly wanted and opening my first pull request on GitHub.
This was my first year in the open source world and the broader JavaScript ecosystem. I made surprising progress, went out of my way to chase my dream, and achieved amazing things. However, the world around me also changed rapidly, and I am still thinking about and learning what kind of person I truly want to be...
The Dream
I was first exposed to the internet and programming at the age of 9, in 2020. At that time, I had to stay at home with a computer because of COVID. I became curious about how computers worked and started teaching myself using online resources. I learned some basic programming. Although I didn't learn anything advanced, this basic knowledge still gave me a good foundation for future learning.
Everything really started during last year's summer vacation. In July 2025, I attended two events in person: VueConf, a conference focused on the Vue and Vite ecosystems, and AdventureX, China's biggest hackathon.
VueConf showed me a truly open and inclusive world. Speakers told us about their own experiences with open source and encouraged all of us to give it a try. Because of my age, I was easily noticed. Some famous people in tech, like Anthony Fu and Evan You, talked to me excitedly and shared their experiences. It was encouraging and made me feel like I belonged.
However, AdventureX was a completely different story. I teamed up with some random college students. The management was messy, tasks were never synced, and no one took responsibility. I still remember the night when I arrived at the hotel and immediately received a call from the project manager, who had been drinking and put pressure on me. I cried alone at the hotel and didn't know what to do.
Meanwhile, I had actually been running a Bilibili account (on a video platform like YouTube in China) for years, which made me a little known. However, during these two events, I realized my skills didn't always match my fame. People recognized my name and face, but when they talked about tech, I couldn't keep up. I understood that I wouldn't be 14 forever and wouldn't always be noticed because of my age.
So I decided to change myself. I wanted to become part of the free, inclusive, open source world. I set myself the goal of becoming an open source developer like Anthony Fu and Kevin Deng.
Beginning
As soon as I came back from AdventureX, I started contributing.
I started with projects that were shown at VueConf. Since I was still not very familiar with the whole JavaScript ecosystem, I didn't choose projects that involved too much low level work or were mature or inactive. Instead, I focused on new projects with UIs and visible pages that any frontend developer could understand.
On July 29th, I submitted my first PR to the Vue ecosystem, to a project called Vue Vine. In August, I focused on Vite Devtools, where all 20 of my pull requests were merged. That strong feeling of accomplishment is truly unforgettable.
In September, I entered Grade 9, which meant there would be a lot of pressure from the high school entrance examination. But I kept going and started exploring more deeply. Through UnoCSS, Slidev, and other projects, I became involved with more and more of the ecosystem, especially Anthony Fu's ecosystem. I solved an old problem in @antfu/ni, which helped me learn more about modern operating systems and process handling.
Personally, open source is not only about technology itself; it is also about communication, language, and more. At that time, my English was still quite poor, so I had to use translators and agents to understand what maintainers were saying. I also knew nothing about how to communicate with open source maintainers, and I kept saying "Thank you so much" or "You are absolutely right!" in every single comment, following an agent's guidance (the worst decision I have ever made 🤣). To connect more with the ecosystem, I started posting actively on X / Twitter and gained attention from more people in tech.
All in all, during this period, both my technical skills and communication abilities improved significantly. These abilities also changed the way I explored this world.
Rustify
After stepping into the open source world, I made some friends. In October, inspired by an idea from suisanka about Vue template syntax, I started vue-note, a side project that allows you to write Vue templates inside JavaScript comments (/* .. */). It was written in JS but used Oxc as its internal parser, and it was my first time learning how compilers and custom syntax work. This experience sparked my interest in Rust, Oxc, and the rustified JavaScript ecosystem.
I began with Oxlint, which Evan You had previously mentioned at VueConf. I found some bugs that made Oxlint panic, so I made some contributions. This was also my first time using an AI tool, Google's free Antigravity, to submit a pull request. Since I knew almost nothing about Rust, I started some personal side projects to practice my Rust skills.
I also tried Oxlint in some of my projects and wanted to make plugins for it to build a product of my own. Surprisingly, it didn't fully support Vue. At that time, Oxfmt was also a formatter for JS only, and its JS plugin system had not yet shipped.
In November, in VueConf's WeChat group, I saw Zhiyuanzmj, a Vue team member, sharing his project, which was intended to support Oxlint's future Vue integration. As a Vue developer, I also took part in this enhancement. I spent a couple of months working on a project called vue-oxlint-toolkit. I got hundreds of reactions and thumbs up on GitHub, making it my first project to receive more than 30 stars. My Rust skills also improved a lot during that time; I even reduced memory allocation in vue-oxlint-toolkit by around 90% by using unsafe Rust.
But unfortunately, because I took the project in the wrong direction and the Oxlint team's internal priorities changed, the Vue support plan is now on hold, and my project will most likely not be adopted. Even so, learning Rust was still one of the most important experiences of my life. For the first time, I learned low level concepts such as memory allocation without taking any computer science classes.
United Toolchain
At VueConf China, I first learned about Vite+, the unified toolchain for JavaScript development. About half a year later, in March 2026, Vite+ became open source at VueConf Amsterdam.
To be honest, I didn't pay much attention to this project at first. I just wanted to give it a quick try and didn't plan to use it as my default in the long term. My thinking was similar to that of most people: I still relied on the fragmented ecosystem, which was mature enough, and installing these dependencies myself wasn't troublesome for me.
I first tried it in my personal side project, a project manager called mo. Since Vite+ was still not mature at that time, I found a few bugs and made some contributions.
The real change started with a simple vp install -g command. Since I had begun using Vite+ to manage my Node.js environment, npm install -g no longer worked, and vp install -g and its related commands took its place.
However, at that time, the whole global installation system was unusable. vp install -g installed packages one by one instead of in parallel. More incredibly, vp update -g simply uninstalled and reinstalled all global packages without any preliminary checks, which annoyed me quite a bit.
Then I opened two issues and started working on them. Essentially, Vite+ bundles all its underlying tools and adds package management and Node.js environment management components. My work crossed the boundary between these two areas, giving me a great opportunity to understand how Vite+ works. I also found and fixed a few other bugs in the Vite+ codebase. Vite+'s core maintainer, MK (fengmk2), is a truly kind person who gave me many opportunities and encouraged me to contribute more.
On June 22nd, the day after I finished my high school entrance examination, something important happened to me: I joined the Vite+ team as a community member.
The story didn't stop there; I continued contributing. I started thinking about some architectural matters on the Vite+ side and caring about every small UX detail like a designer, even though I didn't always make the right decisions or resolve everything. It was also my first time learning what it was like to become a maintainer.
Side Projects
In between my open source contributions, I also started some personal side projects during those months, including some toys and projects that I'm really proud of.
In early September 2025, I was thinking about how to build a personal image that would help others get to know me more easily. One thing I worked on was my GitHub profile, and I made simple-introduce to generate animated SVGs for my GitHub profile.
In 2026, as the number of projects I contributed to grew, I gradually realized that I needed a more effective way to organize them instead of putting them all under ~/code. Just then, I replaced my MacBook, which created a great opportunity to write a project for this purpose. This is how mo was born. It organizes your projects according to the <root>/<owner>/<repo> convention and provides a set of useful commands, such as mo cd and mo edit, to help you manage them conveniently. This is one of my proudest projects, and I still maintain it.
In June 2026, as I was getting into the Vite+ ecosystem, I noticed that there wasn't a popular config preset for Vite+. Inspired by @antfu/eslint-config, I started building my personal @liangmi/vp-config, which includes formatting, linting, packaging, and other components. Now, most of my side projects depend on it, and it keeps improving.
This summer vacation, I found that many projects needed shellrc injection, but maintaining this logic in each project was difficult and unreliable. So I drew on my experience making mo and created free-shellrc, which helps global CLI tools control shellrc scripts easily. This project is still experimental but already usable.
Unlike the projects I used to enjoy building, I now avoid projects that are too large and uncontrollable and keep my projects small and simple. As good ideas become more and more valuable, I'm still thinking about what I can really build.
For now, these are basically my own side projects, and I haven't promoted them much. That said, I still hope my projects can be used more widely, and I believe I can ship more useful libraries and tools in the future.
Age of AI and My Original Dream
Let's look back at my dream.
I want to become part of the free, inclusive, open source world. I want to become an open source developer like Anthony Fu and Kevin Deng.
Did I achieve it? Maybe. I did become a team member of Vite+, I became known by many people in the ecosystem, and most of my programming work is indeed related to open source projects.
However, what if the world itself is also changing?
Everything has changed incredibly rapidly over the past year. AI tools like Claude Code and Codex have become part of our daily workflows. Popular projects and companies like VoidZero and NuxtLab have been acquired by larger companies. There are fewer active independent open source developers, and those who remain are less active. The community no longer seems as lively as it once was.
I remember hearing a veteran programmer lament at VueConf 2026: "The internet era is over." The JavaScript and web development ecosystem is already mature, and the room for improving the toolchain is shrinking. In the early days of web tooling, there were many novel abstractions, APIs, and developer experiences to explore; however, as the field matured, much of the innovation shifted toward implementation-level optimizations. As attention becomes scarce, large open source projects are also gradually becoming commercialized, and competition is becoming increasingly fierce...
AI also changes everything. In the past, you needed to care about UX and APIs because every user was a real human; people would choose tools and search for information. Today, developers delegate tasks to agents and may care less about the underlying technologies. Problems that libraries used to solve could now be solved by agents instead. AI may weaken the relationship between library authors and end users.
I couldn't help but ask: If there are fewer developers in the future, will it still be useful to make tools that serve them? Does the open source world I yearn for still exist? Is the world I live in now the open source world I long for? Should I explore more areas that are unfamiliar to me?
I think these are things I need to think about next.
Credits
I couldn't have become who I am today without the help of many people.
I am grateful to Anthony Fu and Kevin Deng, who fostered a wonderful community, gave me tremendous support, and showed great patience with me early on. Evan You has created tons of fantastic projects that form the foundation of today's ecosystem. I also want to thank Qingchuan Shen and suisanka, who shared many great ideas and inspired me.
Huge thanks to MK (fengmk2), who leads the Vite+ team and treats every contributor with openness and respect. Charles Wang created Vite Task and has shared many ideas with me while continuing to make Vite+ better. Cameron discussed Vue support in Oxlint with me and offered helpful suggestions.
Thanks also to Yunfei He and Shuyuan Wang, whom I met in person and who offered me valuable advice. I also want to thank Boshen Chen, Zhiyuanzmj, and ubugeeei whose work has inspired me and helped me dive deeper into the ecosystem.
Finally, thank you to everyone who has followed me on this journey and everyone who has read this long article. Have a good day!