DEV Community

Matheus Richard
Matheus Richard

Posted on • Originally published at on

How I got accepted to GSoC 2019

My background

Ruby is my favorite programming language. I’ve been working with it almost every day since 2016, whether on college projects or at work. I love how it is simple, clear, elegant and beautiful. Take a look at the code snippet bellow:

my_list = []

if my_list.empty?
  puts "It's empty"
## No unnecessary braces, semicolons, etc
Enter fullscreen mode Exit fullscreen mode

Choosing a project

I started web development and quickly discovered Ruby on Rails and eventually ruby became one of my main tools. This was why I chose the Ruby Org when I was looking for projects to contribute before GSoC.

I ran through its ideas list and I found some nice projects. One that catched my eye was to Integrate functionality from gem-web into RubyGems gem CLI. This seemed to be a project for me: kinda on my area, but challenging tho. I wanted to learn more about this project, so I could write a better proposal.

First contributions

I took a look at gem-web’s to see what it looks like and make some contribution. Since there were no issues, I look at its files.

Improving travis is an easy way to get started so this was my first contribution to gem-web. This is very important: don’t be afraid of open source projects. This contribution was so simple! Take a look, just one line:

To get used to the codebase I thought that would be nice to add some tests, so I added Simplecov first, and after I would write tests where gem-web was lacking.

I had to study a bit of the test structure of gem-web (which were written in Rspec), and the code of rubygems (especially the Command class) and gem-web itself. This was my path to my third contribution.

My proposal

With the knowlegde adquired from my contribuitons I was able to write a proposal. Ruby provided an application template for students, so I answered the questions, and wrote a Roadmap of my development process. I followed an advice from an ex-GSoCer to add time to get feedback from the community (particularly from non-linux users), so I add these “Feedback Moments”. I added a contingency time too, because as software developers we know: “Sh!t Happens”. Here’s my proposal draft.

With the proposal finished I sent it to the mentors, and waited for feedback (actually they said that my proposal was good, so there are no changes between the draft and the final PDF).

Project #5260793296191488

Well, as you know (the title has spoiled you), I got accepted into GSoC ;) Here’s the nice email that I’ve received:

Final thoughts

Yes, I am very happy to be part of this program. I feel great about myself, because sometimes we feel like we can’t do certain things, and I prove myself wrong. Well, I got accepted on my first try, so I’m not the most experieced about GSoC, but here some tips that may help you:

My tips:

  • Pick an org/project/language you like.
    • You won’t want to work on something you don’t have any bonds with.
  • Start Early!
  • Know your project!
    • You’ll write a proposal, so knowing your project will help you to convince the organization that you are the right person for it. Contributions are welcome here!
  • Interact with the mentors and the community
    • Get in touch with them on IRC channels, Slack,, Telegram groups or even email! No one is better than them to help you on your first steps.
  • Use Grammarly!
    • As english is not my first language, I’ve been using Grammarly to help me write better texts. Give it a try!
  • Got turned down?
    • There are soooo many people that got turned down on GSoC multiple times before getting accepted! Don’t let this knock you down! It’s time to think about what you could have done better (ask the mentors) and start improving now! Read this guide from Google about being turned down.
    • Just don’t! I know it’s tough, but you’re gonna make it!

Well, that’s it for now. This text is longer than I expected it to be. Next post will be about my first steps on GSoC. Stay tunned and LET’S GO!

Top comments (0)