What I Gained And Paid For Open Source
Days ago, somebody asked me why I want to contribute to open source, what do I expect from the involvements, I told that it’s a nature motivation as an engineer, it’s true, but I want to elaborate more here and write down my understandings.
To clarify, I think we can dissect why open source values at different levels, like the economic model, open source may yield higher returns than investments, demonstrating cooperation is a non-zero sum game, as an example, the vast and thriving ecosystem surrounding the Linux Foundation. Or it’s a workable business model for companies in product development and marketing, like the Google or RedHat does, who I think has outstanding records in open source contributions. But what I am focusing on here is purely from my personal perspective, how I feel and what I’ve gained and paid for the open source work, it’s more grounded.
Also I would like highlight that Open source is not all about code contributions, this is a narrow definition, documentations, tutorials, promotions, feedbacks, all of them are essential parts.
Now, let’ get to the point, here’re several points I can think of about the motivation to contribute to open source projects:
-
Driven By Personal Needs: We’re living in a digital world built by open source softwares, linux, git, chromium, terminal and more. It’s not possible and necessary to build all these softwares from the scratch by ourselves, once you have new feature requests or find some bugs blocking you, the best option is to contribute back to the open source projects. This is also the beginning of my open source days.
-
Driven By Organizational Needs: A part of companies use open source softwares as foundational blocks of their platform, another part of them sell softwares building on top of these projects, and engineers are paid to do so. I’m one of them, I’ve contributed a lot to the Kubernetes community in the past several years because I work for a cloud vendor. However, I think this is a potential risk personally because once the maintainers of these projects left, who will continue. I saw some people leave the community and never back once they joined new companies, you can’t just blame on them because of the company policies (yes, some companies are not open source advocates) or their limited time, so open source projects must have a well-established succession mechanism, especially for those community-driven projects. Hope I’m not one of them. I also want to mention the fact that more and more companies try to use open source projects not only because of the build and maintenance cost of a software, but also to avoid the vendor-lock of proprietary softwares, if you make a big investment of a software, it’s an invisible technical debt because you can’t just simply remove it in most of the cases, so you won’t be happy to see the software providers going out of business, but open source projects usually have better support.
-
Learning and Skill Improving: Imagine that, your codes are reviewed by someone probably much more experienced than you, how grateful it should be, this is particularly beneficial for junior-level individuals. In general with open source projects, you can learn the architecture principles, design patterns, coding skills, project maintenance, almost everything there because both the code and the community are public and transparent. If you’re contributing to an outstanding project, congratulations to you, because you’re working with the most talent engineers all over the world, who you may never have change to talk with offline, but now they’re reviewing your codes from the other end. I’m constantly thankful to collaborate with them, but remember, don’t blindly follow authority, be bold to voice your own opinions, everyone may make mistakes, and open source is inclusive.
-
Respect, Recognition and Self-Satisfaction: I always feel inspired by helping users solve their problems, I think the emotion boost is one of the reasons people are volunteered to contribute to open source. Moreover, if you opensourced your projects, you would be really really proud of yourself if they are adopted by others. I always have great respect with the maintainers for their deep understanding of the project and usually they’re the experts of the technical field.
-
Reusable Experience: Open source projects typically set a standard, which means you can accumulate your experience and apply in different context or projects or companies. Take the Kubernetes for example, you don’t have to learn orchestration system from scratch every time if you shift from AWS to Google to Azure. I think this is a great advantage of open source softwares both for engineers and their employers.
-
Portfolio Building: Job interview is one way to establish trust relationship between the interviewee and employer. Open source, on the other hand, provides concrete stats which is more traceable and trustable, opening doors to more career opportunities, especially the adopter companies. And you may have the chance to earn a consulting work as well.
-
Connection and Collaboration: One of the paybacks of open source maintainers is the opportunity to attend the conferences and share the projects. This is also a good chance to communicate with other maintainers for further cooperations, building friendships the same time.
-
Personal Interest: Open source is not all about work, it could be driven by small interest like building something funny, but maybe grow into a business in the future, who knows.
Open source is great, but it pays, more or less, and usually the time. When I started to contribute to Kubernetes, because of the huge code base and years of history, I have to understand the whole system design before contributing, I spent countless hours of my own time on this. Code review takes more time than you think, which means you have to sacrifice more, your break time, reading time, learning time… And because I live in Shanghai, I have to join the mid-night biweekly meetings which is usually European or North American time zone. I gave up after one or two years just because my body can’t bear it. We have an APAC monthly meeting then but cancelled after one year because of few attendees, and that’s another story I can share in the future.
However, I don’t mean that you have to contribute to OSS to be a good engineer, they’re definitely two different things, but I believe open source can make you better because of all the points I listed above, it’s a double win.
The last thing I’d like to share is Be Humble and Be Kind within the community. And I do hope that one day people like me can write open source software just for life, not for living.