For Udacity students who’ve started coding and are ready for the next step in their programming experience, I recommend dipping your toes in the water with open source contributions on GitHub. (See Part II post on getting started on Github!)
You will improve rapidly, contribute to awesome projects, and start an online portfolio for potential employers. Let’s see what open source is and how to contribute.
What is open source?
Open source is the original way of creating software - in an open, transparent and collaborative manner. “What is free software?” and “What is open source?” ar good overviews of the subject.
Open source means that you get the final executable for a software project, and also have access to the source code from which it was produced. Having access to the source code means that you can better understand how the program functions and more importantly you can modify it to fix any problems you have with the software or add new features which you desire.
This seemingly chaotic way of creating software (everybody focusing on their own needs) works surprisingly well: for example the Linux kernel contains more than 4,000 man years worth of effort.
Why would I want to contribute?
The feeling that you solved a problem and published your solution so that hundreds of thousands or maybe millions of people can benefit from your improvement is simply amazing.
There are also many very pragmatic reasons for contributing to open source projects:
- To add a new feature / improvement to a project; or to fix an issue with a project
- To practice and learn about software development - contributing to a project is a great way to learn about the more hands on aspects of software development like using debuggers, version control systems, issue trackers, etc.
- To practice/learn a particular programming language or technology which you are interested in
- To build your online presence - highlighting open source contributions relevant to the job makes your resume stand out from the rest
How can I get started with contributing to open source projects?
The first step is to find a project which interest you. Maybe it’s one which you use every day and are annoyed by a subtle little bug. Maybe it’s something from a domain you are interested in (like bioinformatics or machine learning).
After you decided on the project, pick a task. Maybe it’s a project you use day in and day out and you have an itch to scratch. If not, most open source projects maintain a list of outstanding issues which need to be resolved. You can usually find it by searching for “[project name] issue tracker”. For projects hosted on GitHub you can usually find the link to the “issues” list on the left hand side.
After deciding what you want to work on, you need to get the source code. The next step is compiling the source code and running it to verify your understanding of how the software works and where the change needs to be done.
Now you can make your change and verify that it works as you expect. Finally you need to send your changes to the originator of the project so that s/he can incorporate it for others to benefit from (while users could just use your version of the project - see the note about the chaotic nature of open source - usually there is a “well known source” for every open source project - a person or an organization who is the primary maintainer of the project).
Frequently there are customs around how people contribute to projects which vary from project to project. Some projects document these explicitly and for most it exists as a living tradition. Try looking up other contributions to the same project and model your steps based on them.
Don’t be afraid to ask. Open source projects always welcome contributions.