That time of my life…(2)

August 24, 2017

So, let’s get started with part-2.
All that I’m going to write in this article is recent, so this article will be a tad bit long.

February 2017
I attended PyCon Pune with two of my friends. I think it is one of the best thing that has happened to me. I attended my first PyCon. I attended my first dev-sprint. I made my first open source contribution while I was there. I met so many people, and it was so awesome!
So we had already attended a 2-day conference, and it was now time for the 2-day dev-sprint. So we reached the Red Hat Pune office. All of us were seated in different rooms along with the developers(who were also speakers at the conf), depending on the project we wanted to contribute. I was familiar with Django, and I thought it would be fun to contribute to it. So we sat in this room, and I started reading Django’s documentation for First Time Contributors, and then I realized that organizations for Round 14 of Outreachy had been announced. So I opened up the site, and went through the list of Organizations. This time again I did the same things, “ctrl+f: python”, and again some organization names popped up. I had completely ignored OpenStack this time! This time I decided to go through every organization carefully. But as lazy as I am, I just skimmed through all the projects listed by these organizations. I then shortlisted 2 organizations whose project I thought were doable.
I first went through Cadasta, the first project that caught my attention was, Additional Login Options(I felt a special connection with this one ❤), second one was Enhacement of User Page.
After that I went through GNOME, and I liked the project idea Documentation Cards for GNOME Builder, I thought I could do it.

Cadasta has a channel on gitter, so I introduced myself there, and people were so good there! I received an instant reply from one of the participants Shruti Singh(she’s pretty 😃). So I then 🔍ed for a 🐞. Cadasta has it’s code-base hosted on github. Cadasta labels every issue, and all I had to do was find an issue labelled as First Contribution Friendly. I don’t know how, but I instantly found a 🐞, and also found a solution, which just worked. It felt like a magical moment, and I’m not kidding, it really did!


Me and my 🐞, My 🐞 and me, we just clicked 😍

So there was no looking anywhere else, although I did mail a person of interest in the GNOME project, and I did receive a reply, telling me what to do next to submit a contribution. But as I told before, “we just clicked!”, so I decided to move ahead with Cadasta, and do my best.
I opened my first PR on Feb 18. I received a response on my PR from one of the developer at Cadasta, Oliver Roick. He told what changes had to be done to my PR.

Okay hold on, let me start from what 🐞 I chose. So I chose this 🐞 Usernames should be case insensitive when checked in password. I was supposed to make sure that while checking if a password contains username, the comparison between password and username must be case insensitive.

if len(email[0]) and email[0].casefold() in password.casefold(): raise ValidationError(_("Passwords cannot contain your email."))

I replaced all lower() to casefold(). Because casefolding is similar to lowercasing, but more aggressive because it is intended to remove all case distinctions in a string, and it is preferable in a case where Unicode-characters might be used.

Oliver asked me to add test cases for case insensitive username and password comparison which at first I thought was not needed, but Oliver explained why it’s important to add test cases. This is what he said,

“Your PR fixes an issue we didn’t know about before. So you should add new test method to verify your code and also to verify that all other use cases don’t break with your changes.
It doesn’t matter how small the change is. It needs a new test method. You can copy the original test method into the same test case, rename the method and add the necessary changes to the copied test method.”

So after some convincing from him, I add test cases. You can read Oliver’s article on Testing code to understand code. He reviewed my PR, and after approving it, he passed on to Eugene Villar for a second review. Eugene asked me to add several other test cases. So I would commit changes and wait for Eugene to review the changes, he would ask for some more changes and I would commit more changes and this process would go on and on. So after 21 messages, 12 commits, and 7 File changes, my PR was finally merged! There, my first contribution was merged on March 17! It felt so good😌
During this time, I made new friends – Rishabh Agrahari & Brijesh Jain, I helped new participants in setting up their development environment and getting them started with their first contribution, and helped fellow people with their problems, wherever I could and ask for their help whenever I was stuck. I even opened a new issue, made my second contribution.
So having done my first contribution(my PR was not merged yet, but opening a PR still counts as a contribution) I started preparing my proposal. I had decided to apply for Additional Login Options projectI had created about 5–7 drafts of my proposal, until I was satisfied with one. I had decided not to copy someone else’s proposal style, because if I did copy, that wouldn’t give me the best output. I wanted to create my own, so I took the proposal template provided by Outreachy and designed the rest of proposal on my own. Although I did take a look at one proposal of a past GSOC applicant, just to check what to include in the proposal and how to make it better. It took me almost a month to prepare my final proposal(I’m just lazy, that’s why it took so long😔) I submitted my final proposal for Outreachy and GSOC on the same day, I think it was on 26th or 27th March.
(It has been a long post with too many grammatical mistakes probably 😐
I have so much to say, but words! Uhhh…😖)

One month time period before the result was announced, was like….uhhh…I don’t know what it was like 🙈! My friends knew that I had applied for Outreachy and GSOC, so they would constantly ask me how it was going, and every time I would answer them with same words, “Chances are very low, because there are 18–20 participants and they’re only going to select 4.” I mean there were many participants who had made 6–7 contributions, and here I was, with just one contribution, so I was not quite sure about me getting selected.
Then one fine day of April 13, I received this mail from Oliver,

Hi Parthvi,
We are in the final stages of reviewing the GSoC applications and before we will make our decision with whom we want to move forward we would like to have a quick chat with you. This won’t be an interview, more like a short informal chat where we want to get to know you a bit better and discuss questions that either side may have.
Would either Thursday (13th April) or Friday (14th April) 2:30pm your time work for you?
Best Oliver.

…and I was like, okay. And then we had a call the next day, along with Adrienne Platner, they both were mentoring this project. It went great. I was like … yay(😃)… relax, it’s probably not that big a deal, they might have also called other participants(🙄)… yay(😃)…relax, it’s probably not that big a deal, they might have also called other participants(🙄)… yay(😃)…

I had asked Rishabh if he received any reviews about his proposal from the mentors, he said, he didn’t. So I was like, okay this is probably a good sign, but I should not think too much about it. Just relax, wait for the results. But now when my friends would ask me about my progress, I would be like, “Chances are low, because there are 18–20 participants and they’re only going to select 4. But let’s see what happens.” I had to control myself every now and then from thinking too much about the results. I did have a plan-B in case I did not get selected for GSOC. I had to control myself from thinking,”What happens if I get in? How will that affect my career? What happens if I don’t get in? How will that affect my career?”, I would then calm myself by thinking, “Relax parthu, It’s okay. It’s not that big a deal(even though it was), If you don’t get in this time, you can apply for it next year, while doing your masters. If you do get in, it’s well and good, you’ll learn so much! You’ll finally work on a real project. It’s a baby step. Relax.” I had this same conversation over and over again with myself so many times, while washing dishes, while driving, while sleeping on bed at night. But I had this tiny hope that I will get selected.

GSOC and Outreachy Results were to be announced on 4th of May. I was pretty sure I wouldn’t get in Outreachy, but I had a little hope for GSOC. And as it turned out the 4th was with me 😁. It was 9:00 PM, and my mom called me for dinner, the results were to be announced at 9:30 PM. I had this weird stomach situation going on. I told her results for my GSOC proposal were going to be announced at 9:30PM, and I would eat dinner after that. At 9:30 PM, I received a call from my over-excited friend- Vatsal Parekh, asking me for party! I was like, “Really? Did I get in? I won’t believe until you send me a screenshot!”. I tried searching myself on the GSOC website, I did find my name with the project that I had applied for, but I was not sure if it meant I got selected. So he sent me a screenshot, I saw, and I was like, “Wow! I did make it😅.” I told my mom I got in, she seemed happy. I then explained her all that I had been doing for past 3 months, I mean she knew I was applying for this internship, but I explained her in detail how it worked, and then I explained the same to my dad. I hadn’t told them the stipend amount yet, in case I didn’t get in 😛. They seemed quite impressed I guess🙄.

Yeah so that’s it for part-2. It’s a pretty big post with uncountable grammatical mistakes, but I had too much on my mind about this post, and I’m out of correct words. Let me know my grammatical mistakes or any other correction required, in the comments.

I’ll write about what I think is important for getting in GSOC or Outreachy in the next article.
You can have a look at my proposal here.
Update: I read the article again, and it was not that badly written😬