I am Vibhor Gupta, a pre-final year student at Delhi Technological University, pursuing my B.Tech in Electronics and Communication Engineering.
My introduction with Open Source was somewhat cliche, rooting from jumping in the good ol' bandwagon of App/Web Development in the name of 'adding value to profile' while secretly hoping I would bag a hefty salary in placements at the end of four years in college, and life would be smooth. Yes, I know, every university student ever, right?
Nevertheless, bear with me. This narrative is not that shallow.
My First Date with Open Source
I started my journey with a project I was supposed to work on under my seniors of a university technical society that I am a part of. I was introduced to Open Source development and I must admit it took me a while to get a hang of it, but once I did, I was instantly in love with it. This was great, building your own stuff from scratch, writing code, modularising it, addressing things one issue at a time, writing unit tests, integration tests, using APIs, making pull requests and getting them reviewed and finally seeing the code getting merged! I learned a lot of new technologies, tips and tricks, dos and don'ts and what not. It was basically taking everything in from scratch via hands-on implementation. Our mentor was one of the most helpful people I've ever met and I still reach out to him every now and then when I'm in trouble. The project went smoothly and turned out to be everything I had expected it to be, and this is how the idea that 'I am an ace developer' was etched in my mind. After all, I had managed to create this huge beast and it was up and running on a production server with hundreds of people using it, it was a pretty big deal! To all of you still reading this, if you find yourself at this very stage, you have got to read up ahead.
Our First Tussle and How We Got Through
All I had done until now was contribute to a project with 3 other contributors, all beginners, all batch mates, under a mentor who was also my senior. Come winter 2017, I decided to tread into uncharted territory, and start contributing to these huge Open Source Organisations. I thought It'd be a good way to expand my knowledge, and apply whatever I've learnt to a realtime codebase being used in practical use cases. The idea of it was so very exciting. I had it all planned out, even allotting time periods to study the code, understand the issue, code it and get it reviewed and then revel in joy. To absolutely no one's surprise but my own, that bubble of 'I am an ace developer' instantly burst. The first organisation I ever decided to contribute to, had absolutely no code in the frontend technology I had used for my project. The database being used was something else entirely, and the backend was so extensive, it didn't matter that the technology used there was familiar, it was just as gibberish to me as the former two. In short, I was looking at something and I had no idea what it did, pretty much how you feel looking at a French/Sanskrit textbook after 5 years of schooling in English and Hindi. I call it the first rocky phase in this relationship, where I had no idea where we were headed. One week into reading the codebase, it felt like I was right where I started, nothing seemed to make sense and I was pulling my hair looking at my code editor. It was almost as if I knew exactly what to do to resolve the issue, but I just didn't know where to start, my hands froze right above my keyboard. That was probably the only time I considered dropping Open Source, and just be content with a couple of projects that I made.
But I'm really glad that I held on and I still remember that I thought 'How hard can it be? All my friends seem to be getting it just fine!'. Like every relationship ever, this too needed nothing more than a little time and effort, so I did that. Gradually, things started making sense, I was able to comprehend how the code was working and how the technologies that I had no clue about might be working. Slowly but steadily, beginning from small issues and graduating to bigger ones, I started writing code which made sense and solved the problem. However it's not always a 'happily ever after', most of my initial PRs were almost instantly rejected. The key is always to learn from them, taking in the mentor's/maintainer's review and applying it the next time you contribute. This went on for a while, and in some time I was producing decent code which was getting merged, and I was pretty happy to say the least. That was probably the time when Open Source became more than just a profile building exercise for me.
The Good Parts of Open Source
This header can be misleading because one might think there are bad parts to Open Source too, but there isn't one. The only bad part about Open Source is that people don't do it enough. I can't count on my fingers or weigh the importance of good practices that Open Source has taught me. From writing a modular code, to cleaning it up, to properly indenting it, to understanding the importance of doing it, to using version control, to properly addressing the issue, to the importance of well documented code and so much more.
I feel I really grew as a developer (although I'm still at the very novice level, trust me, I self assess) through this activity because suddenly documentations of frameworks, which seemed like gibberish before, started making a lot more sense. I needed StackOverflow to identify the error in my code a LOT less than before, and was actually able to intuitively join the dots and identify the bugs. These are pretty small considerations, but not insignificant at all. Whatever mildly satisfactory code I write today, is all owed to Open Source.
One BOSSy Summer!
BOSS - Bountiful Open Source Summer - is a bounty based Open Source challenge hosted by Coding Blocks, India. It's a one stop shop for Open Source and more. Everything aforementioned about the merits of Open Source, this challenge extrapolates it, utilises it, and makes it into something interesting and competitive at the same time. It's a challenge where each issue is worth some bounty points and the one to solve it at the earliest and in the best possible way, bags the bounty. The contributor with the maximum bounty emerges as the winner.
I stumbled upon BOSS through a facebook post, and decided to give it a try instead of Netflix and Chilling this summer. After wasting a couple of weeks, I finally delved into it. I had minimal experience with Open Source before, so things were fairly complex to understand at first, but again, that went away fairly quickly and I found myself enjoying the process of resolving the issues one after the other. The beauty of the contest is that it teaches you through a competitive environment, which is hands down the best way to learn in my opinion. It not only restricts the time frame in which you would submit your code, in the sense that other contributors might do so before you, but also encourages high quality code. What better way to put those skills to test?
The projects offered at BOSS are amazing. There are a variety of them, each being very different from the others, which means that you are forced to expand your horizons and learn various concepts and technologies in a short span of time and build upon them through the course of resolving issues for those projects. Ranging from their online judge to their own authentication service and an online IDE, it's a honeypot to choose from. The best part is, that whomsoever hopes to give any kind of competition has got to be comfortable with this spectrum of technology stacks, which clearly shows the steep learning curve.
The best part of a competition, qualitatively, is the environment in which it thrives. It is safe to say on this basis that BOSS is one of the best Open Source challenges I have come across. The mentors and project maintainers are extremely learned and equally helpful. They don't shy away from helping you out in any way, be it as trivial as setting up the project on your machine. They are very accommodating and it shows in the interactions you have with these people. They give constructive criticism and actionable feedback should you ask for it, which I think is the single most important thing you can take away from a competition.
The fellow contributors (or competitors, if you will :P) here are some great developers, so the competition is extremely fun. You get to learn a great deal from your fellow developers from their code style, the tricks they use, the hacks they use to make the code efficient, and the basic approach to a problem. You tend to compare your code with theirs and instantly realise the beauty of theirs and the drawbacks of yours and this is how you learn to write good code from that moment on. Contributing in this kind of an environment breeds code quality and compels you to actually improve your coding techniques rather than just redoing what you were doing an year ago for that society project you participated in.
Some of the most significant things I took away from BOSS and Open Source in general was definitely a great deal of qualitative improvement in my coding style. I am more conscious about how legible and simple my code is now. I have definitely learnt a great deal in these 3 months of BOSS, more than I can iterate in this article I'm writing. To strengthen my claim, I have written some of my best pieces of contributed code in this while and more importantly, written them to be good enough to be merged. I remember spending a couple of days on reading about and then finally implementing auth tokens and refresh tokens and their role in authentication services. Similarly, I had zilch idea about what the hell a Docker image was before BOSS. Owing to their online judge project, I had to go ahead and learn Docker, set it up on my machine and finally get comfortable enough with it to start contributing. These are just some instances on the top of my mind how BOSS helped me hone my skills. BOSS is definitely a huge recommend-to from my side to all those aspiring developers who are just entering into the Open Source space.
I'm writing this article before the conclusion of the challenge, so I don't know who'll finally win it, but I'm pretty sure anyone who made an honest attempt to take part in this challenge has already won. That being said, may the odds be ever in the favour of the best contributor!
Concluding my ranting-cum-article, I'll just say that it's been a BOSSy Summer, with a lot of code, caffeine, Open Source and a steep learning curve.
Cheers to all the contributors and team BOSS!