My not-really-useless opensource contribution

My very first opensource contribution, was just a fix for a spelling mistake 🤦‍♂️. I was amazed when it was accepted. But it made me realize, the opensource community was really friendly. And they didn't consider how much big or small it was. They wanted help. And they happily received them. ❤️❤️

But that contribution, kind of made me a bit sad. As I knew what I did was not that important. Actually I felt like a grammer nazi. After that, all I wanted was to contribute more. So I started searching for a lot of opensource projects.

My every search returned lots of really cool awesome projects. I wanted to learn more about every single one of them. But it was not practical to try them all at once. So, I started to really feel the project. There was many variables, that made me want to contribute. 🤩🤩

The different variables such as:

  • My familiarity of the stack
  • My opportunity to learn about new technologies
  • My opportunity to benefit back
  • The popularity of the project
  • My understanding of the project and it's uses
  • The code of conduct, contribution guidelines, license type
  • My ability to bring in my community interested
  • The capabilities of my system resources and type to help in development
  • The project's Ethics, Long term goals & Roadmap
  • The readme about the project
  • How the project welcommed beginner to contribute
  • Coding styles
  • Architecture of the project
  • Maturity of the project

Even listing them, I realized. There are like too many of such variables, that says this project is better. This race really stressed me out. Everyday, I was looking for the next cool and better project. 😫

Anyway, I kind of backed a little bit. And tried creating my own opensource project. Just to understand what was going on the minds of the creator/maintainer. I again felt a bit of a loser. I really didn't know, what maintaining a fully fledged opensource was like. I read about it. It isn't that same as trying it out yourself.

But then, I tried making my life easier with some opensource projects. I didn't plan to contribute, just want to use a project and to understand it's uses. This blog is one such project. I used Rust's mdbook to create this. It was really cool, minimalistic, and my workflow to share my thoughts were super easy. I didn't have to waste my time, worrying about different colors, designs and styles. I just typed. My focus was better. Then, I wanted more from it. I thought like if I had this feature working, I could get these benefits. And the chase began. I found out that the feature I wanted was said in a previous issue. It was a bit old. I thought, oh no, it won't work, should I leave it. But my love for the project and it's tech stack, made me want to contribute. So, I tried my best to overcome it. 💪

Basically the feature I am talking about was the ability to create a preview on various social media platforms. Currently only the url was shown. So I researched what can be done. I found out that open graph protocol meta tags can be used to create such previews. And it looked really simple. So, I tried adding them. But it was kind of slow. There was no official way to test fast, and I wanted to see the result immediately. My most changes were small. And I have to use not localhost to see the changes on social media platforms. So, I created a github pages to host my book, and then copy paste the link several times on differnt platforms. I also found out that, there was way to test, without actually spamming my follower's feed. By using validators. But there were issues, particularly twitter. Their old way to test the preview was deprecated. And I was not able to find the new way. Anyway, I tried to lower my expectations and to get my feature working on most platforms, not all, most. And now I have a image preview, title and a description. Not much, but looks cool.

Now, as I was closing all those tabs talking about overcoming the issue. I came upon the stackoverflow question and the issue in the original mdbook repository. And I thought, this knowledge of how I made it almost work on most platforms would be beneficial for those are contributing to the project. I'm not able to contribute because, I was just the consumer, I didn't learn about the underlying architecture of the project. So, I post a comment on the issue. On my findings and the various links that helped me through this process. So, that the next person working on this would take less time than me to implement it.

Useless, but the time saved, was not really that useless 😜

Now, my finding can help others such as the contributors, users and maintainers to further grow the project.

In the end, I guess that is what opensource is all about. Helping the next person save time/frustration.