Thoughts on a month spent with Open Source Evangelists.

One of the things we have in common at Callstack is love for open source, especially projects related to JavaScript and React ecosystem. We enjoy creating, sharing and learning in public, so anyone can benefit from our efforts.

Until recently we didn’t have any official way of expressing how important contributing to open source is to us. So we took the opportunity and assembled a team! An Open Source Evangelists team.

Special Forces Programme

To give you some background — last month we started a new initiative at Callstack to help us grow as developers the way we like. We used to have personal growth plans which worked OK, but we felt we could make it better with cooperation and teamwork. Thus the idea of Special Forces Programme was born. We switched from personal growth plans to four focused teams, each paving their own path and setting goals for themselves. As a Callstack developer you’re free to apply to any of the groups, stay there for three months and move on to another if you feel like it.

The team

Back to the topic. Who are Open Source Evangelists actually? Do they preach about open source or what? That’s a great question! We are just a bunch of open source software enthusiasts who want to contribute back to the projects we care about. And inspire others to do the same thing.

Meet our members: Satyajit SahooPaweł TrysłaJakub BenešKrzysztof SrokaŁukasz CzyszczonikDawid Urbaniak and me.

Every week we meet to discuss plans for next days, examine problems, track progress and re-evaluate our ideas and findings. As the week goes, we communicate about our efforts mostly through a Slack channel.

We’re also responsible for organizing general open source meetings twice a month to track status of all of Callstack’s OSS projects (we have a couple of them, each having their teams, taking care of maintenance).

Our progress so far

At the very beginning of the group, we aimed for changing the projects on a weekly basis. Haul, Jest, Babel and React Navigation were the first ones we wanted to lay our hands on.

I’m really happy to say that our first two weeks were quite productive. Mostly because a bunch of us were already familiar with the projects.

First week we contributed to Haul, our homegrown React Native packager. We migrated it to Webpack 4, helped with a rewrite of the server to make use of node workers (PR #366), started efforts to overhaul configuration to be more flexible and cleaned the issue tracker a bit.

Upgrading Haul to Webpack 4: https://github.com/callstack/haul/pull/366

During the second week we contributed to Jest. We had the biggest wins here by far. Everybody was excited to work on bugs and triaging issues, because it’s such an amazing project we all love (thank you Christoph Nakazawa). The team could also use a bit of my experience maintaining Jest. At the time I had a longer break between my daily work tasks, which helped a lot! Collectively we’ve resolved 20+ issues and sent 8 PRs fixing bugs and improving documentation (all merged!).

Good week at Jest 🙂

The third week was where we faced a giant — Babel monorepo. As we soon found out, it was way harder to contribute something here, even with the help from project maintainers (thanks Sven Sauleau and Mateusz Burzyński!) and a number of “Good first issue” labels. The tasks we took turned out pretty time consuming or too hard to be taken care of in just couple of hours a week. I, for example, wanted to contribute a feature to Babel Bot, just to find out that it’s not actively maintained anymore and waiting to be completely rewritten — too much work unfortunately (also took me a while to realize that).

A couple of our team members were on a vacation then or very busy with their projects, which wasn’t helpful to the cause either. All in all we managed to send 2 PRs and help to triage and close 2 issues, but I felt a bit disappointed after the success we got with the earlier projects. I mean, it’s still great we managed to do something! It just made me realize that contributing is often harder than expected, even when you’re well prepared and willing to work.

We’ve actually changed the default babel-cli behavior: https://github.com/babel/babel/pull/7439

Lessons learned: 
Ask maintainers upfront for the tasks we can work on straight away.
It’s usually better to start with triaging issues.

Next one on the plate was React Navigation. We have a core contributor onboard (Satyajit Sahoo), so we immediately felt better about it. We sent a hello message to the maintainers and were quickly given something to work on. The project is in really good shape now making it easier to approach, mainly thanks to Brent, so huge thanks for that!

A warm welcome from React Navigation

With Babel and React Navigation it quickly turned out that it’s far more challenging to do something meaningful in just one week 😅. Especially when a part of the team is on vacation or is deeply involved in more pressuring activities or none of us was ever involved in the project before. So, we’ve decided to extend the period to two weeks by default — everybody was super happy about that.

Thanks to extending the time, we were able to do more on the navigation and connected libraries, like react-native-tab-view or newly created react-navigation-tabs by Satya, which will soon replace TabNavigators.

Managing time for open source

You may be curious about how do we actually find time for contributions — that’s another great question! We’re fortunate enough to be given time for self development during our regular work. It’s not any fixed amount though, because we usually learn a lot while doing projects for our clients.

Not too much time for open source 🙁

By our best efforts, the group members aim to devote around 1/8th of our work time to OSS, but life is not always sunshine and rainbows. It all depends on how involved we are in projects we develop. Nevertheless, it happens that we finish our tasks earlier than expected or just have some breaks, so after we chill out a bit, we do open source. To maximize time spent on it and keep the team spirit, we try to organize sessions of collective coding as often as possible.

I’m proud and thankful to lead the efforts of the team and I really hope we can make a difference not only in the community, but also in the way other companies treat investing their developers’ time in open source.

🍻 To the next month of adventures with OSS! Stay tuned.

P.S. Feel free to contact us at [email protected]. Who knows, maybe your awesome project will be the next for us to work on? 😉

Thanks to Raúl Gómez Acuña and Krzysztof Sroka.