Skip to content
This repository was archived by the owner on May 31, 2024. It is now read-only.

Latest commit

 

History

History
173 lines (129 loc) · 7.58 KB

introduction.md

File metadata and controls

173 lines (129 loc) · 7.58 KB

Introduction to free, open source software

What does "free, open source software" mean?

Software is free and open source (FOSS) when anyone is free to use, study, modify, and distribute it for any purpose. The "free" in FOSS refers to freedom, not price.

Open source permissions are enforced through an open source license.

What open source software do you use?

  1. Give an example of open source software that you have used before.
  2. Find the location of the source code for that software (i.e., the repository). Check out the README and license for the project.

Why develop open source software?

From a project-based perspective, there are many reasons to open source a project, including:

  • Collaboration: Open source projects can accept contributions from all over the world. 41 people from many geographic areas have contributed to PyGMT (with more joining!).

  • Transparency: Anyone can inspect an open source project for errors or inconsistencies.

  • Reproducibility: Open source software is essential for open, reproducible science.

There are also many reasons to develop open source software from a personal perspective:

  • Improve the software you rely on: Many open source contributors are motivated by wanting to improve the software that they use.

  • Improve existing skills: Developing open source software can be a great way to develop skills in coding, writing, design, communication, and many other areas.

  • Find a community: Open source projects can provide a great community, allowing people to meet mentors, friends, and people to teach.

  • Build a public work portfolio: Since all open source work is public, contributions can be used to demonstrate your skills.

How can you develop FOSS?

There are two main ways to develop open source software:

  • Develop your own open source project: Making your own project open source can be a great way to share your work and increase collaboration on the project. GitHub's open source guide on starting a project covers the steps involved in this process.

  • Contribute to existing open source software: This workshop focuses on contributing to existing open source software, such as PyGMT. Many of the lessons from this workshop are transferable to developing your own open source software.

What is involved in developing FOSS?

Depending on the size and scope of the project, there can be many different tasks involving in developing open source software, including:

  • Writing documentation: Any software is only as good as its documentation
  • Writing code: Coding includes implementing features and fixing bugs.
  • Securing funding: Funding helps the sustainability of open source software, by providing resources for people's time, equipment, travel, and more.
  • Writing tests: Tests are essential to the sustainability of software.
  • Infrastructure maintenance: Services that automate testing, building, and deploying software require maintenance.
  • Community building: Community building efforts include answering user and developer questions and hosting events.

Many teams have different people who specialize in different aspects of developing open source software. One fun part of open source is that you can contribute however you want!

How are FOSS projects structured?

Every project and community is different. Many have these groups of people:

  • Founder: The person(s) or organization that started the project.
  • Owner: The person(s) who has administrative ownership over the organization and/or repository.
  • Maintainers: The people who drive the vision and manage the organizational aspects of the project.
  • Contributors: The people who have contributed something to the project.
  • Community Members: People who use the project and are active in the community.

While different projects also use different tools, some common aspects include:

  • Issue tracker: A place for tracking issues related to the project.
  • Pull requests: A place for discussing and reviewing changes to the project.
  • Forums or mailing lists: These can be used for various purposes, but often for community member questions or conversational topics.
  • Synchronous chat channels: Channels like Slack or Discord are sometimes used for casual conversation, community building, and quick exchanges.

How do you find a good FOSS project to contribute to?

Many open source projects live on GitHub, which is a hosting site for software development and version control using Git. You can search on GitHub for a project that you would like to contribute to. There's no guaranteed way to find out whether a particular project will be a good choice, so remember that many people move between projects. That said, the checklist from GitHub's open source guide is helpful for evaluating projects:

Meets the definition of open source

  • Does it have a license? Usually, there is a file called LICENSE in the root of the repository.

Project actively accepts contributions

  • Look at the commit activity on the main branch. On GitHub, you can see this information on a repository’s homepage.
  • When was the latest commit?
  • How many contributors does the project have?
  • How often do people commit? (On GitHub, you can find this by clicking "Commits" in the top bar.)

Next, look at the project’s issues.

  • How many open issues are there?
  • Do maintainers respond quickly to issues when they are opened?
  • Is there active discussion on the issues?
  • Are the issues recent?
  • Are issues getting closed? (On GitHub, click the "closed" tab on the Issues page to see closed issues.)

Now do the same for the project’s pull requests.

  • How many open pull requests are there?
  • Do maintainers respond quickly to pull requests when they are opened?
  • Is there active discussion on the pull requests?
  • Are the pull requests recent?
  • How recently were any pull requests merged? (On GitHub, click the "closed" tab on the Pull Requests page to see closed PRs.)

Project is welcoming

  • A project that is friendly and welcoming signals that they will be receptive to new contributors.
  • Do the maintainers respond helpfully to questions in issues?
  • Are people friendly in the issues, discussion forum, and chat (for example, IRC or Slack)?
  • Do pull requests get reviewed?
  • Do maintainers thank people for their contributions?

Here are a couple more points to consider:

  • Does the project have a Code of Conduct? Do interactions associated with the project align with the Code of Conduct?
  • Is there a contributing guide?
  • Is the governance structure published?

The community profile on GitHub shows how a project compares the recommended community standards. The community pulse can also provide insight into how active a project is.

References

Content based on https://github.com/github/opensource.guide, licensed under CC-BY-4.0.