React Native

How I made open-source a habit in 6 steps

Contributing to open-source is wonderful, something all developers aspire to. Maybe you tried it once or twice and realised how awesome it was to contribute to something bigger than just your project.

If you tried it, did you manage to make it a habit? I know at least for me it’s been my struggle for the past 2 years. In this article, I’m going to share with you everything I’ve done to incorporate open-source more into my daily routine.

THE STRUGGLE TO INCORPORATE OPEN-SOURCE INTO MY DAILY ROUTINE

A couple years ago, I wanted to try open-source and started off with a library I worked with Callstack's React Native Testing Library (we’ll call it RNTL for short). The beginning was rather easy as the library is pretty small and the code is clear. I won’t lie, my motivation wasn’t entirely pure. Sure I wanted to contribute to something bigger but it was also something my company had kind of given me as a goal.

At the time, I worked as a Tech Lead on a project and found it difficult to contribute during my work time, although BAM would have been fine with it, I split my open-source work on my personal time and my work time. After contributing a few pull requests and reaching the goal I had set for myself, I took a break and stopped contributing. Even though I loved it, it was hard to prioritise time for it wether it was during my work time or personal time.

After taking a break from contributing for a few month, I came up with a few resolutions to stay on track. First, I want to make contributions on a regular basis: ideally I would like to dedicate one hour per week to it. My second resolution is to contribute during my work time. I have others personal projects and already know I won’t prioritise open-source over them.

Tips for contributing regularly

Step 1: Stick to one library to contribute to

This is the most obvious one but it has been key for me and other developers at BAM to contribute more. Since the start, I have put all my focus on RNTL and that enabled me to gain a deep knowledge on the code. Getting to know a codebase enough to contribute to is always hard and a long process. Doing it as little as possible and capitalizing on one library is the easiest way to go in my opinion to get started.

Step 2: Setting up recurring slots in my calendar

My first action was to set up a recurrent block of time in my calendar to do open-source. It worked well as long as I did not have too much work to do and all my projects were doing well. However, as soon as I encountered some difficulties in my projects, a solo block of time did not work, I deprioritized it very quickly. Indeed when I did not do it, it had no visible impact, nobody came looking for me.

Step 3: I needed to surround myself

I needed partners, accountability partners! Another dev scheduled an open-source lunch every friday where we met among open-source contributers and discussed what we were working on, it’s great to keep everyone motivated!

Step 4: Share your contributions with your team and encourage each other

To get more people to do open-source and to continue boosting motivation, every month in front of the whole company, we also promote the contributions that were made. That’s how we shared that some people were contributing to React Native, the Appcenter cli or even new tools like Flashlight, a lighthouse like for mobile apps made by Alexandre Moureau!

Step 5: Getting to know the team of maintainers

The thing that worked the best for me though was getting to know more the team of maintainers of RNTL (which is the only repository I have contributed to). By contributing more and responding to issues, discussing technical solutions in depth, I felt like a member of the group working on the library and in the end got invited as a part of the external maintainers of the lib.

It feels great to truly feel like a part of something bigger. What’s also great about it is that responding to issues, helping review pull requests, discussing technical solutions does not take the same energy, focus and time as writing code. So I contribute more regularly now, but not always in the form of lines of code.

Step 6: Reflect on what I have learnt

At some point, I took a step back from coding and reflected on everything I had gained thanks to my contributions. I realised I learned many things that I would never have seen otherwise because developing a library is soooo different from developing a mobile application.

The key things I learned after 2 years of open-source

  • I learnt how to properly document an external API, how to be concise but clear at the same time
  • I learnt how to better design an API, that should fit the need of the users, be generic but not make everything possible
  • It enables me to stay up to date with new RN features and the ecosystem in general
  • I learned new ways to provide feedback in a pull request, focusing on what matters most while still pointing out minor flaws. (thanks Maciej for that)
  • I gained experience building more maintainable architectures while keeping performance and evolution in mind

Conclusion

If you feel you don’t have the qualitifications yet to start doing open-source, well you’re wrong!

The very first thing you can dois complete a documentation you found unclear for example, no technical skills required, just explaining what you had a hard time understanding as Oscar did here.

Implementing new habits in one’s schedule is never easy. It requires a lot of self-discipline, but it also requires support from a team. People to help you, give you feedback or thank you for your work. It all makes the journey more enjoyable. If you want to dig deeper into creating new habits, I highly recommend you to read Atomic Habits and check out the Hook Model.

Développeur mobile ?

Rejoins nos équipes