Fluttered and became a Flutter Contributor

Viren Khatri
4 min readApr 24, 2021

Why Flutter?

In the month of February 2021, hearing a lot about open source contribution and the prestigious Google Summer of Code, I set out in search for an open source organization or repository I could contribute to. I went through MIT App Inventor, AnitaB.org, KDE, and more, trying to understand the code base and open issues, in search for a good fit to solve an issue.

But I couldn’t…

Then I realized, I have been practicing Flutter since more than a year. I could contribute to the software I am most used to as of now.

Getting Started

I started, as all CS students start a new project, Google - contribute to flutter. I came across this awesome medium blog by the Flutter Community, written by Ayush Bherwani. It covers literally everything you’ll need to know. I would highly recommend going through each and every line of that blog. Another important doc is the CONTRIBUTING.md which covers all technicalities of contribution and its future.

How I found my match!

There are more than 5k open issues on the flutter framework repository. It took me a while to understand the importance of Labels which is to make it easy to summarize the issue from a contributor’s perspective. I judged issues based on the title, description, and labels so as to see if I could fix it. After searching for days, stumbling over issues I didn’t understand or relate or know how to fix, I found an issue I was comfortable with, #75609.

Fixing the issue

I commented on the issue asking the maintainer to assign it to me. And soon after that, started understanding the underlying code.

Understanding the framework code base could be challenging in the beginning, but with time, a bit of brainstorming, and the awesome flutter community makes it easy. As suggested by the contribution guide, I made a design document (using this template), which isn’t necessary, but is an important step in the field of software engineering. I made mine by just following the instructions given in the template, and referring some other design documents from here.

While I was doing all this, the issue was still unassigned, maybe due to maintainers being busy or not getting notified of my comment. I could have requested for an assignment on discord, but instead I just raised a Pull Request.

Mistakes I made

After a few days of dedicated work on my Pull Request (PR), adding tests and design doc, I felt proud of it.

But my PR was far from perfect.

A few lessons that I learned after making mistakes are as follows:

  1. Indentation followed by the flutter framework is different from dart code formatter. Don’t reformat code when working on it.
  2. Documentation comments should be short, simple, complete and should use correct grammar. Refer other widgets’ doc comments for reference and try to replicate them.
  3. Write good variable names, whether its argumentative, public or private.
  4. Always test locally before pushing the code.

All this, but don’t worry too much about being wrong. You are here to learn and are bound to make mistakes. The team and maintainers are nothing but supportive. If you have any doubts, search on the internet, ask out on the PR, or on discord without hesitation.

The Final hurdle

Getting the PR approved requires one more important task: making sure all the checks pass.

In my PR, one of the checks was failing. Upon further digging, I found the stack trace, which you can do by clicking on details in front of the check, then View more details on flutter-dashboard, and then stdout (which means standard output). Scroll down to see where the error has occurred or test has failed.

Also, remember that flutter-build is a check for the current version in the master branch, and has nothing to do with your current PR. It reflects if the current build is broken. It’s a check to prevent merging a PR into a broken build, unless the PR fixes it.

Certificate of Completion

And one month later, my work had finally paid off! This is when I realized:
I’m FINALLY a contributor to Flutter.
PS: LGTM means Looks Good To Me, and SGTM means Sounds Good To Me.

--

--