In the spring of my freshman year at Northwestern University right outside Chicago, I attended a one-day workshop with Write/Speak/Code, a non-profit that helps women showcase their software engineering skills by teaching them how to write blog posts and technical content, present at conferences, and contribute to open source. I decided then and there that I was going to be the best software engineer I could be. It was a life goal I was committing to—for me, it’s always been more than a job.
To start, I began blogging and spoke at a local conference in Chicago. During the summer, I interned with a tech company in San Francisco to get the lay of the land. Contributing to open source was the last thing on my checklist, and I was terrified. I decided I would contribute to pandas, a tool I had used during a part-time job at my university; it had a great labeling scheme that allowed me to find low-cost issues to work on. I had so much anxiety pent up over this tiny one-letter change, but I submitted it anyway. The maintainer reviewed and merged it, and that was it!
I realized it’s literally that simple. The barriers only existed in my head, and it was easy to keep going. So I submitted a few more pull requests to pandas, and then I found Jupyter.
Open source as a fast track to engineering skills
During college, I spent a majority of my time doing things that regular engineers do on a day-to-day basis in open source. By the time I entered the industry, I had a body of work and level of competence that boosted my confidence and gave me the credibility to participate further in the industry. I knew how to release software, prioritize and triage issues, and design for maintainability and user friendliness.
When I started contributing to Jupyter, I met Kyle Kelley, who became my mentor. In my sophomore year, Kyle had a vision for building a friendly desktop application where users could edit and “nteract” with Jupyter notebooks, which were commonly used by data scientists, data engineers, and programmers. He wanted to bring the power of Jupyter notebooks to a wider audience by packaging it in a cross-platform desktop application that was easy to install and integrated with your existing desktop features.
When Kyle started nteract, I didn’t hesitate to join him. In both open source and life in general, one of the lessons that I hold dear is to stick with the people you really enjoy working with. So much of my success is because of people like Kyle, and another one of my mentors, Carol Willing, an active maintainer for nteract, Jupyter, and Python. I could always count on her for support, help triaging issues, mentorship, and sponsorship.
Maintainer-ship is often seen as exclusive and associated with how long and how much you’ve contributed. The maintainers of nteract didn’t believe in those stipulations and helped me level-up my skills. They were willing to guide me and trust my leadership, which empowered me to grow as a leader and maintainer. This was especially crucial for me as a woman of color who is underrepresented in this community. It isn’t always easy, but personally, I’ve found that it gives me the ability to use my power for good and make the community a better, more welcoming place for others also.
The beauty of open source is, you can’t argue with the amount of work that I’ve accomplished over the past five years. It’s indisputable because my work is public, and people are using it. That sense of confidence has been so important to me in my career.
Inviting more people to the open source table
Open source is like a boys’ club, and trying to break into maintainer roles as a woman can be a challenge. I know “boys’ club” is a loaded term, but it reinforces the feeling that you encounter when you’re outcast from ad hoc meetings; when your pull requests are constantly nitpicked; and when your ideas are flat-out rejected. It’s all the things women experience in the workplace every day. But open source is more lawless because it lacks the support systems that are (thankfully) becoming more common at established companies.
A majority of open source projects are largely focused on maintaining a piece of code and not necessarily the community, which should include supporting and guiding underrepresented individuals into leadership roles.
It’s the same argument that you would apply for software infrastructure built by a company without diverse perspectives and opinions. It’s even more important because open source powers a majority of the world. It’s not just one company’s product: It’s used in multiple applications across different organizations by hundreds of thousands of different people with unique cultures, experiences, and backgrounds. So when you have people missing from the table, it’s terribly impactful.
Looking at the big picture and empowering others
When women and other underrepresented individuals see a woman of color as nteract’s maintainer, it enforces a certain level of trust. It motivates you to contribute more than if you didn’t see someone who looked like you, or that you could relate to, in a position of power. When underrepresented individuals contribute to nteract, I pause for a moment of triumph: “Yes! Somebody walked through that door we’ve opened as a community!”
I would encourage other young women of color to take on these roles: To encourage and give others a safe space to contribute. It doesn’t matter if it’s the smallest NPM package or a huge piece of code. Being in a position where you can make technical decisions and guide the direction of the project is influential.
I try to remind myself that this is bigger than my singular experience. It’s not about me and how I feel in the moment when something happens. It’s about what it means for me to review someone’s pull request and empower others to feel comfortable messaging me. That feeling for other people is what I prioritize, and what I would encourage others to prioritize as well.
Making an impact by reducing exclusivity
As we built nteract, we tried to scale our application components so that they would be useful for others, and they’re now available as individual packages in the core SDK. That’s a big part of our philosophy: As you create a new project or hone in on an idea, you also figure out how to make it reusable and shareable.
There are four other major areas where nteract is intentional about impact.
The first goes back to reducing exclusivity, and our philosophy on maintainer-ship versus contributor-ship. Once you merge a pull request, you’re immediately invited to the maintainer-ship team, and have maintainer-level permissions over repositories. Because a maintainer is simply someone who cares about a piece of software and is committed to keep it running. Some people might jump on the opportunity more than others, but the playground is equalized right off the bat. By giving anyone who makes a contribution immediate access to our community, it reduces the barrier to entry. (We also have guardrails that prevent individuals from pushing to master or merging pull requests without passing certain security checks.)
Secondly, our code of conduct doesn’t just sit on a repository. We invest time to train our most active maintainers on it, and that establishes a sense of communal responsibility, which has a powerful ripple effect.
Our third area for impact is approachability. Being built on top of popular technologies like React, Redux, and Electron has intentionally made us more approachable to new contributors. Approachability also includes having supporting documentation and an accessible experience for first time contributors.
The fourth goes back to the mission of that original desktop app, which is accessibility. Right now on the desktop app, we have about 35,000 average monthly users, mainly students. It’s not millions or hundreds of thousands, but for a scrappy open source project, that’s a positive, impactful number.
I’m proud that we’ve built an accessible, friendly product with a low barrier to entry that allows people to immediately start exploring the wider ecosystem of open source.
Stepping back to gain a fresh perspective
Open source is a drama-filled space. And I don’t say that in a condescending fashion. It’s just that it’s fueled by passionate people all working together, often for free. And being in the middle of it can be very emotionally exhausting. Even if you do find a little corner of the open source world that’s really friendly and that you love and appreciate, like I have with nteract, you also exist as part of this bigger ecosystem that has its thornier parts.
So I made the decision to step away and leave open source in 2017 for a year and a half. And in hindsight, it was the healthy thing to do.
When I came back, I had a better set of coping mechanisms to deal with a lot of the things that often come up because you’re working with people with such strong opinions. And, most importantly, I came back with a fresh perspective.
Since my maintainer-ship runs alongside my full-time job, I’ll usually spend time with it on nights and weekends to avoid getting overwhelmed. On a day-to-day basis, being a maintainer can be very mentally taxing, especially when you see unnecessarily harsh and ungrateful comments. It might be because our website is so polished, but a lot of people don’t think we’re open source. Often, users come in with entitlement and expectation, and I always try to take the high road.
My choices are to engage or remind them that this work is done for free, by volunteers. Taking the high road is an intentional choice we make to ensure potential contributors see how we handle conflict within the community. Either way, it hurts to read thankless messages that are not only insulting your work, but the people you spend a lot of time with. It’s like you gave your creation to the world and people didn’t like it. Here, it’s something collectively created by many people.
This ties into a rhyme I’ve carried with me since I was a pre-teen: Little drops of water, tiny grains of sand, make up the mighty ocean, and the pleasant land. It highlights the collective power of individual contributions and people coming together to build on open source. It reminds you that if you do break up the ocean, it’s just little drops of water. If you do break up this large open source project, it’s just single lines of code that individual people have contributed. And each one is just as important as the next.