Fortnight with coala — RGSoC’17
‘Bear’ hugs from team 200OK
What is Rails Girls Summer of Code?
Earlier this year, I heard about this ‘Summer of code’ program called RGSoC sponsored by the Rails Foundation. What was different and interesting about it was that they sponsored ‘teams’ instead of individual students. The motive of the program was to help promote women in tech by creating a network of supportive learning through your code-pair, coaches, mentors and team buddy (or, supervisor). Whoa, that is a lot of people! Needless to say, I was intrigued and ended up applying with a friend and fellow developer, Ipshita.
The Selection Process
Each year during the application period, the RGSoC organizing team releases the list of open source projects that they have received applications from and they think will be suitable for students to work on during the summer. Students are then supposed to interact with the project mentors, community and contribute to them while filling out the application proposal. The proposal had a very diverse set of questions ranging from community outreach to code samples in the language of your project.
After looking at different projects, we decided that we wanted to apply for coala. Unlike Google Summer of Code, RGSoC only allows you to apply for only two projects and since we had our exams going on, we weren’t able to interact with any other project. We planned a timeline of tasks for the summer with our mentor and sent it with our application.
Around 6 weeks after the applications closed, we received a call for interview with the RGSoC organizing team. More than a formal interview, it was a discussion about our goals and aspirations from the program (and discussions about the stipend :D ). We were also asked about our choice of project and what is it about coala that interested us.
The community bonding period
Our organization, coala requires any contributor to complete a set of tasks before they can be upgraded to developer. Amid those are getting merged two Pull Requests of ‘difficulty/newcomer’ and ‘difficulty/low’ type and reviewing two Pull Requests. Doing this not only helped us know the people who were working on different projects (corobo, coala-quickstart, coala-bears) but also helped us understand the guidelines that coala suggests that you follow when contributing (Regarding commits, code styling et al)
Fast Forward to July
In our first week, we met with our supervisor (or team buddy), Mayar who was herself an RGSoC fellow last year.
Fun fact: We are from India, our supervisor is from Egypt, and two of our coaches will be based in London and Amsterdam by September. Talk about bringing international flavor (and the pain of co-ordinating across timezones, Just kidding it is fun) to the summer.
We also started working on our timeline in all earnest. In our first week, we began by solving some issues to get a hang of not just writing quality code but also write corresponding test suites. It also helped us get familiar with the code base (I, for one, had to refer a lot to the existing codebase to get it right). Oh, and the feeling of seeing green builds was pure bliss!
Our project, coala is a code analysis tool. So, developers at coala write bears to help you check for bad coding practices, styles etc. in different languages.
Bear writing can be basically of types:
— Native Bears
— Linter Bears
In our second week, we started writing our first bears which have been linter bears. A lot of programming languages already have linters implemented, so if a project uses a language that does not already have a linter bear we do not need to implement it on our own. Linter bears are python wrappers (since coala is in python) around existing code linting tools available in other languages.
So far we have sent PRs for two linter bears:
1. RubyFlogBear which gives as output “most tortured code in an easy to read pain report. The higher the score, the more pain the code is in.”
2. HAMLLintBear which wraps around a tool haml-lint that helps keep HAML files clean and readable. In addition to HAML-specific style and lint checks, it integrates with RuboCop to bring its powerful static analysis tools to your HAML documents.
One of the hurdles that we faced was finalizing the implementation details, we weren’t sure how many of the flags should be included and in what way. (Code linting tools have a LOT of options). Also, coala has a very robust CI pipeline, so even if one of the builds (Appveyor, CircleCI or Travis) were red, we’d become disappointed. And then we’d figure out hours fixing absolutely nothing before realizing that coala-bears was broken and the builds weren’t failing for any fault of ours. Haha.
Oh, and something that we have experienced for the first time at an open source org — at coala, the more code reviews you do — the faster your code gets reviewed by the community (they have a lot of developers and so a lot of PRs!) So, we have been steadily performing code reviews too :D
So far, our experience during RGSoC has been filled with a lot of learning. We plan to work on a few more linter bears for now, and then progress onto more challenging issues.
The organizing community will also be providing us tickets to some conferences that we can attend (and give lightning talks at) so super excited for that!
Keep up with us
If you want to follow our progress, we write daily logs and I’d also be writing a fortnightly blog about our summer (hopefully). And of course, you can always tweet to us. We promise we’d get back to you.