For those outside of the IT industry, the concept of contributing to a software project without being compensated or rewarded for it can be difficult to understand. But for software engineers and developers, contributing to open source software offers many advantages that can open doors to new opportunities that extend well beyond any commercial aspiration.
While open source contribution provides ample opportunity to progress one’s coding skills, it also helps software engineers gain exposure to new programming languages, SDKs, libraries and more. Beyond helping a developer achieve technical prowess, open source project participation can also expand personal networks, offering potential career and professional growth.
The Basics of Open Source Contribution
As we explored in an earlier blog post, open source software is code that can be inspected, modified, enhanced and redistributed without restriction. Projects are sponsored in a myriad of ways – privately, through consortium and even by enterprise software vendors who sell proprietary software. In reality, you just can’t build any application without open source code; it’s intrinsic to all software today.
From improving critical software to finding others who share similar interests, there are countless reasons why one should contribute to open source. Open source contributions can be a rewarding way to learn, teach and gain experience in just about any skill imaginable. In fact, whether you’re a hobbyist or professional, not every open source contributor is a coder.
Similar to products, open source software requires project management, design, technical writing and feature/function feedback. Software developers in particular can find a plethora of ways to expand their skills, all while following their passions on projects that scratch an itch.
Many code contributors reflect on stumbling into open source accidentally as they sought out solutions to new problems. When no solution was evident, they opened a new GitHub repo for others to join, or they found an established project and leaned in to expand its mission. These opportunities provide software engineers with the chance to shape the outcomes and impact the way a problem is solved. Built-in checks and balances provide a safety net to ease the concern of novice coders. Engineers who enjoy the role of mentor have ample occasion to nurture those who are new to the process.
As a new developer, the process of contributing to open source can be intimidating…there is a lot to consider! However, there are multiple ways that one can get involved with open source contribution, making the process seem far less daunting.
Why Is Open Source Contribution Important?
As already established, there are many avenues one can take when it comes to contributing to open source but it’s important to understand the ‘why’ behind it. Why should someone spend time (usually in their “off hours”) and energy on open source contribution?
Open Source Contribution as an Individual
As an individual, open source contribution provides people with a platform to turn their ideas into a reality. It’s too often that great ideas are pushed to the backburner and never see the light of day. But open source gives individuals an opportunity to share their ideas with like-minded people who can help bring the project to fruition.
Contribution can also help individuals hone in on desirable soft skills, like learning how to work in a collaborative, sometimes ambiguous and unstructured environment. There are many moving pieces when it comes to open source, including working with people of varying skill sets and in different time zones.
Staying attuned to the processes for certain projects and making a conscious effort to be mindful of how the community operates will help a contributor not only develop skills that employers look for in job applicants, but also build a positive reputation in the community.
“Participating in open source has made my career almost entirely.”
–Tim Pepper, Sr. Staff Engineer, VMware Open Source
Open Source Contribution for a Company
It’s unlikely that you’ll find an organization that doesn’t benefit in some way from open source contribution. In fact, many large corporations have an entire open source program devoted to contributing to open source communities. And while there are some organizations that are just interested in giving back to the community, there are plenty of business reasons why a company should contribute to open source. Here are but a few:
- Insight and access: Open source contribution gives companies direct access to those who know the project inside and out. These individuals know the direction the project is going in and where the barriers to progress may lie. This can be invaluable to a company that depends on the code – whether as part of a build or development process or as part of their commercial offering. As an added bonus, open source contribution also allows the organization to attract top talent and show them that they can get paid to work on their favorite open source project.
- Reduce Technical Debt: Organizations can also reduce their technical debt when they contribute a bug fix or improvement to open source projects. Companies that fix bugs or add new features and functionality to an open source project without contributing them back into the upstream project quickly accrue technical debt and risk drifting too far from source. By operating in an “upstream first” manner, companies can better ensure that they are emulating the source code and continue to play a key role in the ongoing health of an important technology.
- Influence: Businesses can also influence the direction of a project when they contribute. Say that an organization wants a project to offer a functionality that’s important to the business. Having active contributors who can implement these potential changes will help guide the project in a favorable direction.
Many of the reasons above describe why VMware does open source, but there are more advantages to consider. Engaging with the open source community exposes our engineers to incredible diversity and quality of thought, which is extremely valuable. Shared innovation and collaboration with industry peer companies helps to quickly solve common problems, advancing the technology further and faster than trying to do it alone. Finally, open source contribution and participation provides an opportunity to solve more complex problems faster by building more capable platforms.
The Challenges of Contributing to Open Source Software
Even with all the benefits that open source contribution offers, there are some challenges that programmers face when contributing to projects. The first is the fear of judgment from other developers. Oftentimes, new contributors fear that others will judge their code, reflecting poorly on their skills, or that their contribution will not be accepted.
The fact of the matter is that contributions are often rejected, but that’s okay! The best way to move forward is to try and take something from that rejection and implement it in your next contribution.
Those who are new to the world of open source also struggle to understand where, how and why they should contribute. The first step is to find a project that interests you or offers something you want to learn. With thousands of projects on GitHub, this first step – choosing a project – may in fact be the hardest step. You may want to pursue something connected to your professional work – or you may want to explore something that fuels a hobby or outside interest.
Many developers believe that they don’t have enough time to contribute to an open source project. The key here is to view software contribution as a priority rather than an extra task. In the same vein, it can be challenging to justify time spent on open source to your boss or company. Aligning your open source strategy with the overall business goals for your company will help you make the case to senior management and executives who aren’t likely to be involved in the details of your projects.
Finally, many new contributors struggle with the fear that their contributions won’t make a difference. Oftentimes, they learn something new and refrain from sharing with the larger community because they believe other programmers are smarter than them and already have the information. However, open source is built on knowledge-sharing, and it’s important for developers of all levels to remember that in order to propel their communities forward.
How Open Source Contribution Can Enhance a Software Engineer’s Career
While the challenges listed above might be difficult to overcome at first, the benefits of open source contribution to one’s career can make all the difference in their growth as a developer. Here are some of the key benefits of contributing to open source:
Improve coding skills
The best way to progress your skills? Practice, practice, practice! Contributing to open source provides developers with a platform to not only practice their coding skills but also gain valuable feedback from seasoned community members. This immersive learning style provides aspiring programmers with real-life, first-hand experience and greatly accelerates the learning curve.
Gain early experience often required by companies for employment
Most jobs require you to have a certain level of experience before applying, even for internships or entry-level positions. Open source contribution gives new programmers the opportunity to gain more experience by reading other people’s code, finding and fixing bugs, and adding their code into the main Git repository.
Increase community and peer recognition
If you’re pursuing a passion in a certain field, you often strive to be well-known in that industry. The same goes for people with a passion for software development. Open source contribution can help budding software developers gain recognition in their respective communities. This can also create a number of opportunities, such as job offers and invitations to attend conferences and events.
“Working within open source communities has given me opportunities that I never would have thought possible. I’ve presented on various open source topics at conferences around the world, which has allowed me to meet all kinds of interesting people! The visibility and deep connections to other people that come from working in open source have given me more career options and allowed me to have more control over my career.”
–Dawn Foster, Director of Open Source Community Strategy, VMware Open Source
Find greater job prospects
Because open source is visible to the public, prospective employers can inspect your code and assess your skills as a developer based on the code you’ve written. In contrast, commercial software doesn’t provide you with the same proof of ability, and it’s much harder to gain experience in this area overall. Additionally, jobs in software consulting and freelancing can also arise as a result of open source contribution.
Aid in salary negotiations
In order to win a salary negotiation, it’s imperative that you have a strong justification as to why a company should pay you more. The nature of open source contribution does just that. Because open source is public, developers have clear documentation of the contributions they make to the community and the experience gained from open source development. This helps demonstrate your value to your prospective employer or manager and remind them of your accomplishments.
Improve software on a user and business level
Usually, developers first come across open source software as a user and want to improve it for their own use. Even if a user isn’t a programmer, they can still suggest new features and functionalities to the software’s owner or core team. Likewise, if a business owner or company is using a piece of open source software and would like to make some changes or add new features to meet a certain business need, then this is a real possibility. The result is a win-win situation, as both the business and the software receive a new feature that can often be utilized by other users.
Broaden Your Horizons With Open Source Contribution
Contributing to open source software has many advantages that can open doors to new opportunities. Apart from providing the chance to progress one’s coding skills, open source contribution also helps software engineers gain exposure to new programming languages, projects and more.
Beyond helping a developer achieve technical prowess, open source contribution also provides non-coders with opportunities to donate other skills, like event planning, documenting, organizing and much more. But most of all, open source contribution encourages participation from all walks of life. The hardest step to take is that first one, but once it happens it doesn’t take long to start understanding and appreciating how open source contribution can significantly impact career and professional growth.
For more information on becoming an effective open source contributor and tips on negotiating salary in the industry, stay tuned to the VMware Open Source Blog and follow us on Twitter (@vmwopensource).