Almost every developer in the world relies on free, open-source software to get their jobs done. I'm one of the lucky few that get paid to build this software. I work on the Red Hat team from Buenos Aires, Argentina.
The complexities of managing an open-source project rival that of running a company - moderating a community, evaluating bugs, deploying releases, supporting users, and building new features. It's a challenging job, and most maintainers do it without pay while working at a day-job.
Getting started in an open-source community is overwhelming. I’ll share tips on how to get started, and how to land a job working on something you love (no matter where you live!).
My open source journey
My first open source contributions were on GNOME, while applying to the Outreachy internship. I've been a user of GNOME since I got started with GNU/Linux more than 10 years ago! As a user of the software myself, I had the advantage of already knowing the code and understanding its functionality - which made it easier to jump right in.
A few years later, I began contributing to the OpenStack Dashboard (codenamed Horizon). I started learning more about Git, Gerrit, Python, Django and other technologies we were using at the time. Now I work full-time on OpenStack, but it took perseverance to get there!
Community-building is the core
The most exciting part of open source is the people. Open source projects are crafted by thousands of developers from all around the world, each of them with diverse interests and motivations. Companies, organizations, and individuals are all encouraged to participate.
There is opportunity everywhere, and meritocracy is key. If you have an idea on how to make something better, you can take the initiative to make it happen. It’s not about contributing super innovative and crazy features, but instead smaller things like enhancements on documentation or a copy improvement in the user interface.
Review the documentation and start working!
Once you’ve selected the project you want to join, the project's homepage or "README" will often give you tips on how to get started.
Mature projects often have their own documentation site. At OpenStack, the best place to get started is the contributor portal. All the knowledge base is condensed in this set of manuals. The index of the contributor guide also gives you pointers depending on how you want to contribute. Gitbook and Readme.io are other popular ways to host extensive documentation.
Each project has its own workflows to review changes, test commits, and deploy code. Tools like Github Issues, IRC, and Slack are common for talking with the maintainers. For OpenStack, we use IRC for daily discussions, Git for version-control, and Gerrit for code reviews.
When you’re ready to contribute - start with something small. Look in the bug tracker to find things that need to be fixed. Some projects tag easy fixes (at OpenStack we call these "low-hanging-fruit") to show how you can get started.
Communication before code
Open-source teams are often distributed around the world (like me, in Argentina!). Talking with people in the community is key to shipping features and avoiding frustration. Practice over-communicating everything in clear writing. It’s easy to get overwhelmed with the amount of available information, but having a more experienced contributor to talk with will make your work much easier.
For example: If you are adding a feature you want to the code, it's often best to get feedback from the community before you start coding so that you understand the expectations of the maintainers. Propose the design and explain the problem you are solving to the community before you code it. That way, you do not waste time building something that the maintainers reject.
Contribute more than features
Each open-source project is like a product. Functionality is important, but you also need to show users how to use it, teach them what problems it solves, make it accessible, build trust, and foster a community. Each of these is an opportunity to help!
The easiest way to start contributing to an open-source project is to fix spelling mistakes or write documentation. Here are some other ways you can help before jumping into hard technical challenges:
- Make a logo for the project if they need branding
- Write an introduction for new users
- Test and cross-compile the code on different platforms
- Translate existing documentation into other languages
- Help debug problems that other users have in the "Issues" section
- Work on testing, and add additional functionality - such as benchmarks, linting, or code coverage analysis
- Write up a proposal for a feature to add to the project
- Create an example project using the code
- Publish a blog post about how you use the code
- Make sure the code has an open source license
- Write more tests
Leverage your work
Your work on open-source software helps others understand your abilities and interests as a professional developer. It will demonstrate to companies that you can make meaningful contributions to the code and community. When you apply to jobs, showcase the one or two public projects on which you focus most.
Companies rely on open-source tools, and some even maintain them. I got my job at Red Hat by being an open-source contributor for two years before applying to a job there. My interview with them was straightforward because they were already familiar with my background and contributions. They use tools like Stackalytics to identify top contributors.
The developer community thanks you
Open-source contributions benefit the developer community overall. I get to make it my job - but so much of the technology that is core to infrastructure and businesses are maintained on a volunteer basis. So, thank you to everybody that makes their work public! The best way to show your support is by volunteering some time to make those projects better.
Victoria is a Software Engineer at Red Hat, a LinuxChix Argentina co-founder, and tech enthusiast. Eager to learn about new technologies, contribute to different open-source projects, and to get new people involved with open-source philosophy!