reading-notes

Open-Source Software Contribution

If you have never contributed to an open source project before and you’re just getting started, consider exploring these resources.

First contributions is a hands-on tutorial that walks you through contributions workflow on GitHub. When you complete the tutorial, you have made a contribution to the same project.

GitHub’s Guide to Open Source

Open source is powerful because it lowers the barriers to adoption and collaboration, allowing people to spread and improve projects quickly. Also because it gives users a potential to control their own computing, relative to closed source.

Free software refers to the same set of projects as open source.

There are many reasons why a person or organization would want to open source a project. Some examples include:

Choosing a license

An open source license guarantees that others can use, copy, modify, and contribute back to your project without repercussions. It also protects you from sticky legal situations. You must include a license when you launch an open source project.

Legal work is no fun. The good news is that you can copy and paste an existing license into your repository. It will only take a minute to protect your hard work.

Writing a README

READMEs do more than explain how to use your project. They also explain why your project matters, and what your users can do with it.

In your README, try to answer the following questions:

You can use your README to answer other questions, like how you handle contributions, what the goals of the project are, and information about licenses and attribution.

Writing your contributing guidelines

A CONTRIBUTING file tells your audience how to participate in your project. For example, you might include information on:

What Motivates a Developer to Contribute to Open-Source Software?

It can be hard to imagine that many of the applications and programs we use today are built by hundreds of thousands, even millions, of people all over the world. Open-source software (OSS) is a rapidly growing industry that provides many benefits to the individuals and businesses who use it, as well as to its programmers.

While each person may have different individual motivations, here is a list of some of the most common reasons why developers contribute to open-source software:

  1. Improve Coding Skills

For developers, contributing to OSS means that they not only practice their programming skills, but that they also learn and gain feedback from more accomplished programmers.

  1. Gain Early Experience

Gaining real experience before applying for an internship can not only help secure a position at a well-sought-after tech company, but can also help move you into full-time work and accelerate your career.

  1. Increase Community and Peer Recognition

Most people who are passionate about something strive to be recognized for the quality work they produce, and for some, developing software is a huge passion. Recognition from members from the OSS community not only encourages and motivates a developer to improve his or her skills, it can also create a number of opportunities, such as job offers and invitations to attend conferences and events, etc.

  1. Greater Job Prospects

The fact that OSS is visible to the public means that prospective employers can inspect your code and assess your skills as a developer based on the code you have written. In contrast, commercial (proprietary) software doesn’t provide you with the same proof of your abilities, and overall it is much harder to gain experience in this realm.

  1. Improve Software on a User and Business Level.

This desire to contribute can also resonate on a business level. 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 also a real possibility. The result is a win-win situation, as the business gets a new feature (either by developing it themselves or suggesting it to the core team) and the software also receives a new feature that can often be utilized by other users.