How I Got Selected into Google Summer of Code
Tags: opensource, typescript, webdev, career
Published: 2021-06-03 08:55:25

> More than 50,000 students around the world register for GSoC every year and of those who submit a proposal only 1200 are accepted.

Organizations at GSoC work within Operating Systems to Web to Cloud and even applications within Science and Medicine thereby covering almost the entire spectrum of Computer Science.

I got selected by Rocket.Chat.

![GSoC Acceptance Mail](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sag594vzwpfylfeai52d.jpg)

[Rocket.Chat](https://rocket.chat) is the ultimate communication platform for teams — say an open-sourced Slack with a different business model.

It offers web and phone based communication platforms, integrated omnichannel features and even has an [App Store](https://rocket.chat/marketplace/) of its own where you can publish and monetize apps that run on Rocket.Chat!

### What I did before applying to GSoC

**Selecting Organizations**

Around December, I started going through organizations that got selected into GSoC the past year and shortlisting them based on a few **criteria**.

> The last word is super-important here — to set out a criteria before selecting an organization.

My plan was to select 3 organizations and then shortlist one or two out of them further as time progressed. Here is what I set my org criteria to:

```
1. Work related to Web and Javascript.
2. Multiple projects awarded consistently.
3. Org selected every year at GSoC.
4. Repository remains active on GitHub.
5. A bigger org.
```

After about a week, I had shortlisted CircuitVerse, CloudCV and of course Rocket.Chat. Out of these three, Rocket.Chat fitted all of my criteria.

**Open-source Contribution Leaderboard**

Rocket.Chat has this amazing [GSoC contribution leaderboard](https://gsoc.rocket.chat/) (started by a past GSoCer at Rocket.Chat) that counts how many contributions every student is making across all Rocket.Chat repositories. The top-10 contributors get a chance for a one-on-one with Gabriel Engel, the Founder and CEO of Rocket.Chat.

I joined the [#gsoc2021](https://open.rocket.chat/channel/gsoc2021) channel within Rocket.Chat and started making smaller contributions to the Rocket.Chat main repository at first. Communicating with Rocketeers led me to start working on the [GSoC contribution leaderboard](https://github.com/RocketChat/Opensource-Contribution-Leaderboard) repository in a team of four.

![GSoC Contribution Leaderboard. I’m at number 5 :P](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p9e9a9kp455g5ts7i14m.jpg)

I worked on filtering contributors by time, building an inclusion/exclusion list where the admin would be able to select which Rocket.Chat repositories to consider when counting contributions, dockerizing the application and fixing bugs. 

My contributions to this repository can be found [here](https://github.com/search?q=author:RonLek+repo:RocketChat/Opensource-Contribution-Leaderboard&type=issues).

**RC4Community**

After deploying the GSoC Contribution Leaderboard, we started working on a more ambitious project in January — RC4Community!

RC4Community, a project we built from scratch, was set to be a one-stop collaboration platform for teams using Git, in other words, Rocket.Chat’s own Gitter. Our power-team (as we called ourselves :P) worked super-hard for the next 3 months to give life to RC4Community.

![RC4Community in action at [https://community.rocket.chat/](https://community.rocket.chat/)](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m0lvs2a4vuywlc3bdwqg.png)

I worked specifically on the frontend and backend for creating channels and communities on a Rocket.Chat server from the RC4Community client, providing real-time user statistics — that is real-time updation of when users were online or away, repository information for every channel linked to a repository, CRUD operations for custom GitHub webhooks for repositories, embed badges for direct links to RC4Community rooms, dockerizing the application and a demo mode within RC4Community that set the path for what was to come.

My contributions to RC4Community can be found [here](https://github.com/search?q=author:RonLek+repo:RocketChat/RC4Community&type=issues).

**MemeBuddy**

Around the end of March, I started developing an interest within Rocket.Chat Apps. These were Typescript coded (which I was unfamiliar with back then) and worked within the Rocket.Chat ecosystem.

I had an idea that I thought was really cool. What if there was an app bot that could fetch memes from Reddit and post it directly within a Rocket.Chat room? The idea for MemeBuddy was born. It is Discord’s equivalent to DankMemer (installed on 5 million Discord servers) for Rocket.Chat.

![MemeBuddy triggered by /meme serving within Rocket.Chat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rd3e7bsflnr2nnt6pzjy.gif)

I extended MemeBuddy to not only work within the Rocket.Chat team collaboration platform but also within their LiveChat Widget used by millions of users on a daily basis. Find MemeBuddy on the [Rocket.Chat Apps Marketplace](https://rocket.chat/marketplace?category=Social+%26+Fun)!

The repository for MemeBuddy can be found [here](https://github.com/RonLek/Rocket.Chat.MemeBuddy).

If you found this cool. I even wrote a Medium [blog](https://rohanlekhwani.medium.com/making-a-rocket-chat-app-8eaaa0263e39) over how you can make your own Rocket.Chat App.

### What I did while applying to GSoC

Every year Rocket.Chat publishes its [ideas list](https://docs.rocket.chat/contributors/google-summer-of-code/google-summer-of-code-2021) for GSoC. I was particularly interested in the Poll App Mega Extensions project (since I was fascinated with apps) and the Community Collaboration Platform: Improvements project (this is RC4Community in case you’re wondering :P).

I got in touch with mentors of both the projects through Rocket.Chat rooms made specifically for discussion about each individual project idea. Mentors at Rocket.Chat were truly welcoming and made every effort to resolve doubts and confusions regarding ideas.

I made sure to reciprocate mentors’ efforts by building sort of an MVP for a few features within the project ideas and got feedback over it. I followed a similar approach while writing my proposal. I read through the proposals of past GSoCers at Rocket.Chat and gleaned the important stuff I could use in mine. I made sure to get feedback after my first and final drafts from my mentors.

> Getting feedback from mentors is of utmost importance. Make sure you leave enough time for them to review your proposal.

I included Figma designs and code snippets for implementation details. I tried making my proposal as detailed and substance-driven as possible. In the timeline section I made sure to give a week-by-week estimate of what I would do.

By the end of the application period I had submitted two proposals — one for the Poll App (31 pages!) and the other for the RC4Community project (18 pages). I’ll be sure to share links to both of my proposals along with Figma files later in this blog series.

### The Project

My Poll App Mega Extensions proposal got accepted! (good observation if you already saw that coming in the acceptance mail)

The Poll App is the [numero uno](https://rocket.chat/blog/product/top-8-the-most-popular-rocket-chat-apps/) among the most popular Rocket.Chat Apps. My mission during GSoC is to revamp the App to match it with its competitors (Polly.ai, Mentimeter, Kahoot!) by providing a truck-load of features.

I’ll be working with my mentor during the GSoC period to extend the Poll App both through improved visualizations and additional functionalities.

I’ll be writing biweekly blogs about my GSoC journey at Rocket.Chat. Follow my voyage on [Medium](https://rohanlekhwani.medium.com/about). ⭐

---

Like what I do? Help me pull my next all-nighter. Consider [buying me a coffee](https://www.buymeacoffee.com/rohanlekhwani).🥤

Rohan Lekhwani is an open source contributor and enthusiast. You can connect with him on [LinkedIn](https://www.linkedin.com/in/rohanlekhwani/), [GitHub](http://github.com/RonLek), [Twitter](https://twitter.com/Rohanlekhwani), and his [website](https://ronlek.github.io/).