Year in Open Source
Today I realised it had been exactly one year since my first Open Source contribution. I decided to write this post as a reflection on my Open Source and dev journey. From a total beginner, to my first PR, to maintaining 3 Open Source projects.
Beginning
I was 9 years old at the end of 2018 when I created a Scratch account and made a couple of simple games. I’ve always loved everything that involved logic and I’ve had an interest in making my own games. This was the first time I got to create some games and I liked it a lot.
Python
Around April 2022, when I was 13, I started learning and playing around with Python. This was the first time I wrote some actual code, even if it was very simple. At the beginning I was mostly doing simple scripts and solving learning tasks and problems. A couple of months later, in June, I made my first Telegram bot. After that I started writing more interesting programs.
Infinite Craft and JavaScript
Somewhere in February 2024 I discovered Infinite Craft, a game made by Neal Agarwal. It is an addictive browser game where you combine elements to create new ones. I had a lot of fun with it. I really like how Neal makes simple but clever games. His style had a big impact on me and still inspires me to create things myself.
Later that summer I joined the Infinite Craft Discord after seeing it on the subreddit. Through that community I quickly found What Beats Rock, a fun rock-paper-scissors game, where AI decides whether you win or lose. I was super active in both communities for the next couple of weeks, trying to find clever strategies to beat the AI, sharing discoveries, and writing some Python scripts to play What Beats Rock for me. It was exciting to be around people who were as into these games as I was. The competition and collaboration made it very interesting and fun for me.
wildwest.gg
Early in September, right after returning from summer holidays, I discovered that the What Beats Rock team had released wildwest.gg. It was a platform where you could create HTML games by prompting AI. I tried it immediately and had a lot of fun creating several simple games there. This was the first time I touched JavaScript and the web.
GitHub
In mid-October I started using GitHub, mostly as a backup to keep my wildwest.gg games safe. Around the same time, my uncle Jerome shared his own game with me for me to play and give feedback.
After that I started writing more small scripts and experimenting with JavaScript. In the middle of November I decided to build a Discord bot. I had to figure out how to install Node.js and all the related tools.
Everything at that time was incredibly frustrating and confusing for me. I remember complaining to a friend:
Why do I have to install
nvmto installnpmto installwranglerto only then do something? Why is it so complicated?
It took me about two weeks of frustration but I finally got it working.
By the end of November I published my first static website, and at the end of December I figured out how to make PRs on GitHub.
Developer communities
Mid-January I randomly stumbled across Theo’s video on YouTube. I found his videos about JavaScript and the web ecosystem very interesting, so I started watching them more and more, almost every day. In early March, while working on my JavaScript projects, I decided to explore TypeScript after I learnt about it from Theo’s videos. I struggled a lot with trying to get TypeScript compilation to work. I’ve decided to install Bun to make it much easier for me.
Around the same time, while going through my old Python projects, I came back to updating my old Telegram bots. On my 16th birthday I got a Raspberry Pi. I wanted something that could run my Telegram bots 24/7 without keeping my laptop on all the time.
By the end of April I was feeling noticeably more confident using GitHub and working with TypeScript.
Open Source
In the beginning of May, while working on my Telegram bots, I noticed that a function I used had a broken type annotation. I decided to fix it and opened my first PR to an Open Source project that I used. When it got merged, it made me feel very excited. Something about this purple color of a merged PR is very addictive. Encouraged by this PR, during the rest of May I’ve made PRs to other Open Source projects, fixing similar small issues that I could find.
In the beginning of June, I finally decided to buy a domain for my website. At that point I’ve been thinking about this decision for over 2 months and I finally decided to do it. As you can see, I still use my rman.dev domain to this day.
Soon after, I created and published my first npm package. It was a small utility function I had been using in several of my own projects, so I decided it is a good idea to turn it into a shared npm package. Figuring out how to publish it turned out to be surprisingly simple.
Around the same time I discovered Astro and SolidJS. I moved my website from plain HTML to Astro and at the end of June I joined both Astro and SolidJS Discord servers.
In early July, I made my first PR to the Jerome’s game to get familiar with the codebase and get ready for more contributions. The same and next day I opened two more PRs to that repo.
In the middle of September, I made my first PR to Astro to update a dependency. The maintainers were very welcoming and the whole experience was positive. For the rest of autumn I continued to contribute to Open Source projects, fixing issues that I encountered while building my own projects.
e18e and npmx
In early December I discovered e18e, after James (the lead of e18e) commented something on one of my PRs in the Vite repository. I quickly found the e18e Discord server and decided to join it. From there I quickly discovered tools like clack and knip, and started making small PRs to fix bugs I found.
In the middle of January, @patak reached out to me on Bluesky. He invited me to the brand new npmx Discord server. I joined immediately and really liked what the project was doing.
A few weeks later I started contributing heavily to the e18e/module-replacements repository. While using npmx, I found some packages that should have a suggested replacement, such as those that could be replaced with smaller or native alternatives, did not, so I began opening PRs to add them to the module-replacements manifest. I ended up contributing a huge number of replacements in the next 3 weeks.
In the middle of March I decided to donate to e18e. I’ve been planning to do it for a while, but after noticing how overwhelmed and bottlenecked James was by reviewing all of my PRs, I finally decided to do it. It was a way to support all the work he and everyone else who contributes to e18e is doing.
Shortly after, the e18e team recognized me for making significant contributions. It felt amazing.
Becoming a maintainer
In the middle of April, Nate, the Organizer of bombshell, mentioned in the Discord server that they were looking for more maintainers to help with the projects. I wrote that I would be glad to help with anything I could, and he promptly invited and welcomed me to the maintainers team.
There is something special about becoming a maintainer. I had already been helping review PRs before, but getting an official maintainer title is different. It comes with both responsibility, but also a feeling that people trust me.
A couple of weeks later, at the end of April, one of the npmx core team members, @graphieros, messaged me on Discord and asked if I would like to be a maintainer. I accepted right away. I was added to the maintainers team and welcomed by @patak, who thanked me for everything I had been doing across projects.
There is definitely more responsibility now, but at the same time it feels great that people trust my actions and recognize my contributions.
What next?
Looking back at this past year, it’s crazy how much has changed. From my very first small PR to becoming a maintainer in multiple projects. I’ve learned that communication is key in Open Source, and when people work together openly, incredible things happen.
I’m really excited and proud of how far I’ve come in just one year. Open Source continues to amaze me every day.
I plan to keep maintaining the projects I’m part of, take on more responsibilities, and help make the JavaScript ecosystem even better. There’s still so much I want to learn and build.
I want to say a big thank you to everyone who noticed my potential, supported me, and stayed positive towards my contributions. None of this would have happened without you.
If you want to follow along with my journey, you can find me on Bluesky, x.com, and GitHub.