My take on the world of open-source

Photo by Ethan Dow on Unsplash

My take on the world of open-source

And what motivated me to contribute

This article is going to be a bit on the personal side. I've been working on open-source for a while now and I have been a huge fan of open-source for years. I want to share my experience and my thoughts on open-source.

My journey

My first-ever package was a CLI for generating React components called React Igniter, it was a simple open-source project published on Node which generated folders with tests, index.ts export files and components with you just providing the name.

I was super proud of it even though in reality it flopped, it had a few hundred downloads over the years averaging around 5-20 weekly downloads on npm. Even though this was the case I was never sad about it because I wrote it out of a desire to give back to the React community and to help speed up my personal development work and I also wanted to learn how to build CLI which I have accomplished thoroughly.

After that venture, I switched jobs a couple of times and started working on a Remix project and I fell in love with the framework. I was hesitant at first but after a while when everything started falling into place and I understood how it worked everything clicked in my head and I was hooked!

After about half a year of working on the project I finally decided to share my form-handling solution I thought was great. I took up what I've learned from react-igniter and created a new repository with Vite and their "lib mode", moved my form handling utilities and made them generic, wrote tests, wrote the readme and "remix-hook-form" was born!

This was my first successful project, at the time of writing it is averaging around 7-8k weekly downloads on npm and I couldn't be more proud!

I published my new open-source project into Remix.run discord channel and the amount of support I got was out of this world, at least for me! Lots of people gave me ideas on how to improve it, and kind and supportive messages and this was the moment I realized I made something people liked, and this inspired me to make even more!

After that, I made Remix Forge, a VS-code extension that allows you to auto-generate route files, update your Remix version, initialize things like prisma in your project and more. This got even more support than remix-hook-form and I was starting to realize something:

Giving back to the community through open source is one of the most gratifying feelings one can have, and from that point on, I was hooked!

Im Hooked GIFs | Tenor

After this, I developed something that was the biggest challenge out of all of them, Remix Development Tools, and I loved every moment of it! It felt so good to tackle complex problems with 0 documentation, to dig into framework internals and figure out solutions for problems others have, to discover approaches both new and old that you haven't really thought about and at the end of the day, to make someone's life easier!

What I've learned

As I developed all of this, a natural side effect was strengthening my understanding of how things worked, I learned how VS-code extensions work under the hood. I learned of many ways to parse, augment and update files. I created my very own parsers, communication channels, scripts and many more things, I learned how to package my code and distribute it, and I learned how painful that is with npm and javascript in general, I learned a lot of things, but the most important thing I learned is how fun that journey is!

When you work for a job, in most cases you're working on problems that are already well documented and there are certain patterns and ways of solving them. You can use stack overflow to find the answers easily and at the end of the day you solve the problems you are working on, but that sense of accomplishment is just not there. You've solved the problem, but it's not like you've solved something that hasn't been solved before so you don't feel like you've done something exciting, you just feel like you re-organized some lines of code to fit your use case.

Well, this is the best part of open source, it's most if not all, uncharted, undiscovered territory for you to explore! You feel like a sailor sailing into the Atlantic, in hopes of finding a way to reach India, you have no idea how you will get there, and you have no idea if it's even possible, but that doesn't matter, because you want to get there and you're determined, that is what working on open source is, a never-ending adventure into the unknown!

There might be a ship to help you sail out, and there might be a crew to help you on your journey, but at the end of the day, whatever you are solving, it is an adventure for you to tackle on your own!

https://unsplash.com/photos/nhFcSmJtAeo

This is what got me hooked, every problem I solve for other people is a challenge and a hurdle I have to overcome, but when I do, I know that there will be someone out there who will be grateful for my contribution, I learn a lot in the process, I make myself a better developer, and get to interact with other people, you get to hear use cases and ideas you haven't thought about and you act upon them to help those same supporters out to have an even better time with your solution.

Downsides

A few days ago I watched a video by The Primeagen on how a person who developed an open-source package introduced a potential supply-chain attack through his open-source package in hopes of getting funding for further development.

You can probably guess what the downsides are going to be from the above statement, monetization.

No Money Broke GIF - No Money Broke GIFs

Open-source software does take a lot of time, energy, goodwill and motivation, what do you get in return? Mostly good ol' street cred' and the satisfaction of knowing your package is being used by others and helping their everyday coding experience, or as the cool kids call it, DX.

If this is not enough for you and you expect to get compensated for your time investment then open-source really isn't something you should consider, but rather build products that will improve people's lives and charge for them instead. Or if you're intent on open-source you can still try creating a service on top of your open-source that is paid!

One does not monetize open source software One sells something else  adjacent to it. - One Does Not Simply | Make a Meme

Open-source in my eyes is for people who want to give back to their fellow developers, and in return, they get to feel the joy of helping others.

Monetization might be a side-effect of your work if it becomes big enough and sponsored by big companies but this is not something you should expect as an outcome but a mere best-case scenario!

Final thoughts

This was a longer article that I used to get my thoughts out there and hopefully hear other people's thoughts on this topic. As a final note, I just want to say why someone should consider open-source and why I considered it:

Remember that kid when you started in software thinking:

"Man, I wish there was an easier way of doing this!"

or something like:

"I wish there was a package to help me out to do this"

Stitch Sad GIF - Stitch Sad GIFs

Well, you're giving back to that kid, you're giving back to others, it might not be you in this very moment, but every day new people come in and they might fall in love with development the same way you did, by experiencing it in an easier and better way than you did!

You build others up through open source, and in turn, they will build others up, and we will all have a better time in the end. You're doing this not because you expect something in return, you're doing this to give back to others, and to give back to yourself.

There is no greater joy in life than helping others!

Thank you!

If you've reached the end you're a champ! I hope you liked my article.

If you wish to support me follow me on Twitter here:

https://twitter.com/AlemTuzlak59192

or if you want to follow my work you can do so on GitHub:

https://github.com/AlemTuzlak

And you can also sign up for the newsletter to get notified whenever I publish something new!