Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/krook/open-source-best-practices

Repo for collecting information on best practices for open source projects
https://github.com/krook/open-source-best-practices

Last synced: about 1 month ago
JSON representation

Repo for collecting information on best practices for open source projects

Awesome Lists containing this project

README

        

# WIP: Open source best practice guidance

Repo for collecting information on best practices for running and contributing to open source projects based on my experience and within the general context my Linux Foundation experience.

## Target audience

Community managers that are fostering new or growing open source communities and the contributors who are helping them expand. The assumption is that you don't have experience running or contributing to a large project.

## Goals

Provide a starting point and a reference for that audience to build their communities effectively and efficiently to make sure that contributions are handled in a timely manner therefore making the process easy and rewwarding for all.

## Prerequisites

* Basic understanding of what open source is and what it requires of users and contributors.
* Basic understanding of social source control management with GitHub.

## Open source for community managers

### Benefits and responsibilities of providing open source

Often when software developers consider open sourcing their code there are two main concerns that they have. The first is that they are giving away valuable IP and a competitive advantage. The other is loss of control of how the project evolves after it's released.

While these can be legitimate concerns without a plan, there are also major offsetting benefits available to open sourcing one's project. These include for example:

* Tapping into a global community of developers whose contributions can improve the project as a whole for you and for the market.
* Becoming a de facto standard for the technology domain and establishing yourself as a leader in the cutting-edge technology.
* Raising awareness of the work you are doing which can have personal and professional benefits for you and your company.

### Best practices for open source projects

Check out the [Resources](#resources) section below for a more in depth view into how to best run an open source project and build a community around it. But from a technical or structual point of view, there are a key set of items you'll need to do to ready your project to be announced and made available to the world.

One such checklist is that provided to [Call for Code projects that want to host their code at The Linux Foundation](https://github.com/Call-for-Code/Linux-Foundation-Checklist). It contains details on how to legally establish your project and organize your governance. It also includes information on how to manage contributions.

If you're looking to create a GitHub project based on some best projects, you can reuse the [Project Sample that is provided to Call for Code hackathon participants](https://github.com/Call-for-Code/Project-Sample).

### Managing a community of contributors

Check out the [Resources](#resources) section below for a more in depth view into how to best run an open source project and build a community around it.

## Open source for contributors

Many developers understand the idea of how to use open source - most are familiar with the idea of listing dependencies in their own personal projects - but not on how to actually make it available or give back to a particular project. Fortunately there are a few rules of thumb, conventions, and guidelines on how to do that.

In particular, one helpful resource is to take the [free "Introduction to Open Source" class](https://cognitiveclass.ai/courses/introduction-to-open-source). It's intended for technical and non-technical folks alike to learn about open source, which is becoming a key skill in today's world. You can earn a badge and certificate after completion.

### Benefits and responsibilities of of using open source

Contrary to popular belief, open source code doesn't mean you can use it without restrictions. What is provided as an open source project is still copyrighted and is provided under the terms of a license. The terms of the license determine how you can use the code and how you need to acknowledge copyright.

### Understanding an open source project

By convention, the two most important files in a GitHub repository are `README.md` (the default page of a repository) and `CONTRIBUTING.md`. These two files will give you most of the information you need to learn about the goals of the project, what it can be used for, how you can use it, and how you can improve it. You'll also often learn about how to meet the community and interact with them on Zoom or Slack (for example).

### Making your first contribution

Once you have understood the contribution guidelines and requirements for a project, the next step could be to review the list of open issues to see if any are tagged as `good-first-issue` or similar. You can also go through the steps to install the project as a first-time user with a fresh environment to see if you run into any roadblocks that other first-time users might encounter. If you see room for improvement, open your own first issue against the project detailing the problem and a potential fix.

If you have a solution for one of these opened issues, the next thing you can do is prepare a contribution. This is normally done via a "pull request" which is a way to offer the project contributions a contribution that they can take from your copy (or fork) of the project. Let's work though this process. Take a moment to follow this [automated tutorial on how to fork a project and submit a pull request](https://github.com/Call-for-Code/Practice-Pull-Requests). Or you can go through the [full workshop](https://github.com/Call-for-Code/Beginner-Open-Source-Workshop-for-Students).

## Resources

* [Beginner's Open Source Workshop](https://github.com/Call-for-Code/Beginner-Open-Source-Workshop-for-Students)
* [GitHub: Top tips for creating a healthy and sustainable open source community](https://github.blog/2022-07-07-healthy-and-sustainable-communities/)
* [Linux Foundation: Participating in Open Source Communities](https://www.linuxfoundation.org/resources/open-source-guides/participating-in-open-source-communities)
* [TODO Group: Guides and Resources](https://todogroup.org/resources/guides/)
* [Open Source Guides: Best Practices for Maintainers](https://opensource.guide/best-practices/)
* [Stack Overflow: The product approach to open source communities](https://stackoverflow.blog/2023/11/08/the-product-approach-to-open-source-communities/)
* [CNCF blog: Outlining the structure of your open source software project](https://www.cncf.io/blog/2023/04/03/outlining-the-structure-of-your-open-source-software-project/)
* [CNCF Contributors: Project Guidance](https://contribute.cncf.io/maintainers/)

## License

All content is licensed under [CC-BY-SA 4.0 - The Creative Commons Attribution ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/).