Open
Description
This epic is a placeholder that captures the improvements we'd like to do as part of making it easier for everyone to contribute to Gitpod.
Objective 🥅
Guide community contributors step-by-step from opening a pull request to merging a contribution, while leveraging a combination of automation (see gitbot
, etc) and interactions with the Gitpod team members that would streamline the community contribution process.
Problem to solve ❗
- Docs: There's no
CONTRIBUTING.md
file for the main repository (gitpod-io/gitpod
) and this makes it difficult to discover how and where one can start for contributing to Gitpod. - Welcoming: Even if someone jumps right into opening a pull request for fixing a bug or a typo, there's no welcoming message that describes the process or where to reach out for getting help, a code review, or forwarding the contribution to the right team.
- Preview Environments: There's a security risk in providing everyone access to the same clusters that handle preview environments for the Gitpod team. This is a common issue with other similar projects and communities like GitLab.
- DRIs: Incoming community contributions can sometimes go unnoticed for longer periods as there are no DRIs (Directly Responsible Individuals) for helping with community contributions. See https://github.com/pulls?q=is%3Aopen+is%3Apr+archived%3Afalse+label%3A%22community-contribution%22+user%3Agitpod-io+.
- Labels and Workflows: Introducing appropriate labels and triage automations that surface community contributions or looping in appropriate team members to help out is needed in order to improve visibility of PRs and scale how we handle incoming community contributions in the long run.
- Contributor License: All contributions subject to the CLA (Contributor License Agreement). Individual contributions are subject to the Individual CLA while corporate contributions are subject to the Corporate CLA. However, signing the CLA is a) still a manual process as it requires back and forth between team members and the community contributor and b) not visible to other team members that may want to merge a contribution.
Proposal 🗺️
The following items contain a brief overview of ideas that have been discussed before and could potentially improve the community contributor experience for Gitpod as a first iteration. Thanks everyone for opening the associated issues linked below.
- 1. Introduce a basic
CONTRIBUTING.md
doc that guides community member on how to contribute using. See Add a Contributing Guidelines file to the Repo #5258.minikube
, a tool that lets you run Kubernetes locally - 2. Document the areas someone can contribute to. This could include highlighting the main repository, documentation, template projects, and more. See Contributing to Gitpod #5618.
- 3. Introduce a welcoming messaging that is automatically posted on community contributions (PRs). This could include how and where to ask for help, etc.
- 4. Improve PR visibility for community contributions. The first iteration of this could include automatically adding the "community contribution" label on PRs from community contributors. See Add community contribution label to all PRs from community contributors gitbot#34.
- 5. Investigate if it's possible and secure to give access to preview environments to community contributors by separating preview environments from the werft cluster. See https://github.com/gitpod-io/security/issues/9 (internal).
- 6. Automate CLA signing from individuals and corporations to limit back and forth between team members and community contributors regarding CLA. See Add initial config for CLA Assistant GH Action #6318 and https://github.com/gitpod-io/ops/issues/130 (internal).
-
7. Add contributing guidelines with a local kubernetes cluster or minikube. See Add contributing guidelines with a local kubernetes cluster or minikube #6563. - 8. Create a way to install a basic version of self-hosted Gitpod on a local machine for trial purposes. See Epic: Local preview "installation" method #9075.
Next steps
Next steps ideas could include:
- Introducing a volunteer role for our team that is responsible for helping contributors to get their pull requests to meet some contribution acceptance criteria, help find and assign pull requests to available reviewers, pick up and finish stale contributions, and more.
- Automatically forwarding new PRs from the community internally in dedicated slack channel(s) to improve PR visibility within the team.
- Regularly surface pending or stale community contributions internally in dedicated slack channel(s) to improve PR visibility within the team.
- Now that the new product engineering structure is in place and we do automatically associate team labels in PRs[1], each team could document a process for going through community PRs.
- ...