March 02, 2018 • ☕️☕️ 8 min read
I’m splitting this post up into ~4~ 3 parts.
In some ways this decision may seem out of the blue: everything was going great working on open source at work and suddenly now I’m quitting? Why leave? Open source can definitely be sustained by companies paying their employees to contribute back. It definitely did work for us, but I just wanted to do more. More not just in quantity but quality.
It’s also been a long time coming: I had been seriously considering it ever since I asked my boss to work on open source at work half time. As I recall it, I had been working on Babel in my free time for so long and really enjoying it. In my mind, given that we use it at work, I got to the point that I felt the confidence to ask for time at work. I had suggested the idea of working full time since there was no harm in requesting it. I got a nice surprise when they told me, “Sure, let’s give it a shot. How about half time? And you could have asked earlier!”
They wanted what was best for me and were willing to try that experiment to see how it goes: both for the team and myself. None of us knew if that was what I truly wanted at the time. All I had were dreams and aspirations to do open source full time. It was hard to articulate what that specifically looked like let alone what I even found to be most enjoyable. I read and saw the struggles of burnout and the huge emotional burden that I might face. And maybe that was it. I just didn’t want to have to feel the burden of having to go home and continue the work. By working on Babel at work it would feel up my other time and mental energy to do other things or just relax. But I found myself continually motivated to contribute.
In the end this experience taught me that working on open source entirely is exactly what I’m shooting for. So that lead me to think more deeply about how I might make that happen.
When you find something that consumes your thoughts, do you wonder if it’s an unhealthy obsession or just passion and maybe your calling? Even when I did work on Babel at work, I went back and forth on doing other things after work and just working more on Babel. It wasn’t about the guilt of not working on it to push the project forward or satisfy our “customers”, but just that I enjoyed being a part of something greater. And as I thought about it more I started spending my time differently.
I didn’t just do the regular maintenance work of going through issues and pull requests but spent time on improving the overall workflow of the project, getting contributors, and thinking about the ecosystem as a whole. I realized that being a maintainer could encompass so much more and that even though there was pressure to do what our users complain about I was in the end free to do whatever. Why spend all of our time on short term gains (fixing issues) when the long-term gains are just as relevant (creating a better contributing process, participating in Summer of Code) and more important? All the things I cared about became more about sustainability, project management, and the future rather than making new features. But you keep digging this hole of reaching “issue zero” while you gain more and more users and less maintainers. It became clear that these kinds of tasks aren’t necessarily the kinds of things a company would fund for even if they sponsored you or not.
Ultimately, there’s no role for me on the team to be doing full time open source on Babel (at least at Behance given its relatively small size). And from what I know from big companies, they usually allow employees to allot something like Google’s 20% time towards open source. If I actually wanted to go for 100% it seemed like the best option was to do it on my own. I’ve seen a lot of amazing people doing the same as Evan of Vue.js, Feross, and Sindre, and Sokra of Webpack via Open Collective.
So enough with just dipping my toes in the water, it’s time to jump in.
Perhaps both the scariest and most exciting part is the lack of any “exact” plan. My first course of action is to publish my Patreon (https://patreon.com/henryzhu) along with this post. I think anyone else would of stayed at work and waited until the funding goal hit a certain amount to “feel safe” to make a decision and leave. I waited until after my last day because I didn’t want to stop working on Babel at work and I needed to avoid any conflict of interest and why I didn’t announced I was leaving earlier.
But I’m fortunate enough to be in a situation where I have the chance to do this: it’s earlier in my career, my family is doing pretty well health-wise (unlike myself 😛), and my own willingness to follow my conviction.
But even then, all the overthinking and analyzing in the world doesn’t change the fact that in the end, I have to actually do something. There’s always going to be aspects that are fuzzy. After all, I’ll be going into the unknown where the potential seems great but into a future with much uncertainty.
I’m going to step back a bit and explain both why I think open source is awesome, and why it makes me want to do it full time.
I think Open Source Guides does a nice job of explaining this. Open source allows people to to improve their skills whether it’s something specifically technical like coding or something else like marketing, art, or communication. Because it’s public it means there’s accountability from your peers, and the work remains as an artifact even when you switch jobs. And importantly it’s a place to build a real community around something we think can better our own lives as developers and for others.
Although I’ve grown technically, I’ve also grown personally. While open source in and of itself doesn’t change us, I think it provides many opportunities for us to mature or at least shine a light on who we are currently. Working on something in your free time as a passion project can bring yourself joy, but seeing others get involved can be as much, if not more rewarding. I get tested in my patience, my humility, and learn to focus and communicate better. This can be reflected in the way the code itself is written: How good are our tests? Our documentation? Is setup easy and effective? But it’s also in our process of releasing, the wording in our changelogs, the attitude and posture of our announcements and blog posts, and even our comments on GitHub and social media. It’s why I gave the Maintainer, Heal Thyself talk.
The bigger reason I want to do this isn’t just so I can code all day on a project I like (but I will be doing plenty of that, rest assured). Maybe what I’m trying to say is that the parts of open source that I’ve discovered I appreciate the most, are the ones least related to the actual act of coding, but rather everything surrounding it and what it enables.
Maybe I’m not supposed to expand the definition of open source as a term about the code itself, but I see it more as the encompassing of the community that gets created as a result of it. It’s not that we emphasize code less, but we take more active steps to create opportunities for everything else that a maintainer does to be more explicit. Learning to find and empower people to work on what they enjoy and are good at is the goal whether it’s code, documentation, copywriting, art, triage, etc. I think it’s on us to not just put out a call for contributors or good first issues (all of which I’ve done and will continue to do) but create examples from the past of what’s possible and point towards what’s ahead for them to discover on their own.
When I’m full time, I could easily just continue to hack away on code. But in the end, it makes me want to think bigger; not just “more” of the same but a change in kind.
If software is eating the world (and open source being a large part of that), I think there is much to be done with thinking about how we can work to make sure it is healthy. Healthy for both users, contributors, and maintainers alike as there can be so much entitlement and complaining on all sides. And in spite of the negativity, the values of open source inspire me the same way my own faith community does: one that is serving versus just consuming, putting others above ourselves as opposed to selfish ambition, and lifting up rather than competing.
In that vein, I’d like to think more about how open source is done now and where it’s going. How does it relate to companies themselves and how they can learn from how open source? What about startups? How we manage groups of volunteers, where many are remote and have never met each other, where the primary source of interaction is a GitHub issue? How can we bring in the best parts of the physical space into a more anonymous, faceless, and digital one? Sometimes open source, whether it’s for a small project or a big one, can seem all too transactional and technical. Can we bring the community aspect more forward?
If you’ve benefited from my work on Babel and want to support my future efforts in the project and in open source at large, consider donating to the Patreon (or the Babel Open Collective). In my next post I’ll going into more detail on what this will mean for the future of Babel and what other opportunities I’d like to explore. And it’s not just me either. We have many other volunteers who would benefit from being fully funded like my fellow maintainer Logan Smyth.
Open to your comments and questions, although hopefully most of those will be answered in my next posts. But first I’ll be taking a short vacation from everything.
Blog of Henry Zhu