You might have heard about open source. But what is open source? Why do you want to get involved and contribute to open source? In this section, we will talk about all open source!
Table of ContentsPermalink to “Table of Contents”
- What is Open Source Software (OSS)?
- Building your portfolio with open source
- 💡 Good to know: Funding and Governance models in open source
What is Open Source Software (OSS)?Permalink to “What is Open Source Software (OSS)?”
Open Source Software (OSS) is software where the source code is generally made freely available and accessible to the public. It is distributed under a copyright license that permits reuse, modification, and redistribution and encourages open collaboration and peer production.
There are various licenses in open source. Some grant almost complete freedom, including incorporating code into commercial, closed-source projects. While in contrast, others may be more restrictive.
There is a culture in open source of building off of each other's work. You can take an open source project and extend it or add it to another project as long as you comply with the terms of the license. Package managers—such as NPM—can also incorporate other open source code into your project.
The ecosystem of open source software is vast, ranging from GUI programs through libraries and modules designed to provide specific functionality to other programs, frameworks, and programming languages, to platform infrastructure behind decentralized social networks, blockchain protocols, and simple personal projects.
Although best known in software, open source concepts can extend to any field with intellectual property, such as hardware development, design systems, and designs for 3D printable goods.
Building your portfolio with open sourcePermalink to “Building your portfolio with open source”
Doing open source work is a great way to improve your skills, build your portfolio, and get noticed by others in the industry. And this is one of the reasons why you want to get involved in and contribute to open source.
Many employers value open source work in tech. So you should make space for your contributions list on your resume, especially if you are looking for your first developer job. It will help you stand out from other candidates.
It is also worth remembering that contributing to open source does not require writing code. Improving documentation or working on marketing, community building, design, or illustration contributions are equally valuable to projects.
Working out how to get started can be the most challenging part. So we've put together a list of resources to help you get going.
Virtual Coffee's open-source resources:
- Contributor Guide if you want to contribute to an open source project.
- Maintainer Guide if you're going to maintain your open source project.
Other recommended resources:
- What Open Source Project Should I Contribute To? — Kent C Dodds
- I Made My First Open Source Contribution Within 200 Days — Joe Previte
- Becoming an Open Source Project Maintainer — Kent C Dodds
Check out our discussions board if you know of resources we should add to this section! We'd love to hear from you!
💡 Good to know: Funding and Governance models in open sourcePermalink to “💡 Good to know: Funding and Governance models in open source”
Funding modelsPermalink to “Funding models”
There are some different models for funding the running and development of open source projects:
- Some projects start as personal projects of their creator. The costs come from the creator's pocket, and the creator and other volunteer contributors are doing the work. Sometimes these projects may use something like Github Sponsors or other sites, allowing people to donate small amounts to cover costs or compensate the creator for their time.
- Larger projects with a team of maintainers or a non-profit may use the same funding model. Still, they will often supplement this with more ways to donate. Maintainers and contributors to these projects will also usually be volunteers. Money raised is typically used to cover costs such as website hosting or services the organization uses.
- Some projects are fully funded by a company or organization (the project's maintainer) alongside their core business. These projects typically use a combination of paid team members and volunteer contributors to get work done. Some projects are entirely developed by a paid in-house team and don't usually receive external contributions. But these projects are released to the public under an open source license.
- Some projects form the core part of a commercial enterprise. The company typically makes money from providing support, paid licenses with additional capabilities, or paid services that incorporate the open source project. These projects usually have most of the work done by a paid in-house team but may also accept external volunteer contributions.
Governance modelsPermalink to “Governance models”
There are a number of different models for governance of open source projects:
- The most common model is the "Benevolent Dictatorship", where a single project creator makes or leads the decision-making process. They may consult and take input from the community, but ultimately all authority rests with the benevolent dictator.
- Some projects are governed by various non-profit organizational structures, which will commonly have at least an agreed-upon set of rules for decision-making. Incorporated organizations may run larger projects with a formal constitution, official positions, and a member or committee structure to administer the organization and make decisions.
- Some projects are backed by a single company. The internal procedures of the company will typically govern these projects. However, a few may have a legally separate organization allowing for community involvement or ownership of the project.
- Projects such as programming languages or platform standards will often be governed by a foundation with corporate or individual members interested in the project. And they will appoint a core team or committee that administers the organization and makes decisions.
- Distributed Autonomous Organizations (DAOs) are emerging as a popular choice in the blockchain and cryptocurrency space. While the details differ from project to project, these will typically feature a governance token on a blockchain that can be transferred or bought and sold. The holders are allowed to vote on proposals.