gitpod-io / gitpod

The developer platform for on-demand cloud development environments to create software faster and more securely.
https://www.gitpod.io
GNU Affero General Public License v3.0
12.82k stars 1.23k forks source link

Epic: Improve Community Contributor Experience #6466

Open gtsiolis opened 2 years ago

gtsiolis commented 2 years ago

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 ❗

  1. 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.
  2. 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.
  3. 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.
  4. 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+.
  5. 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.
  6. 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.

Next steps

Next steps ideas could include:

  1. 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.
  2. Automatically forwarding new PRs from the community internally in dedicated slack channel(s) to improve PR visibility within the team.
  3. Regularly surface pending or stale community contributions internally in dedicated slack channel(s) to improve PR visibility within the team.
  4. 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.
  5. ...
svenefftinge commented 2 years ago

Thanks, George, this is great!

I believe contributing should work self-served instead of applying and waiting for getting access to our infrastructure. I think @iQQBot has a local setup using minikube. With a streamlined installation, a self-hosted instance on my own machine or cloud should be a great preview environment. @iQQBot can you maybe write down the steps to get to such a dev environment? πŸ™

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.

I don't think we have so many contributions that we need to handle it in a different process. Instead, teams should regularly check all pending PRs that have their team label, no matter the PR is from a team member another team, or a contribution.

iQQBot commented 2 years ago

@svenefftinge I'm currently using a standard local kubernetes cluster for gitpod development, but I'd love to try using minikube and write down the steps. However, it will take some days, and I am not good at English πŸ˜‚, I hope to get your guidance in writing the documentation.

svenefftinge commented 2 years ago

@iQQBot cool! πŸŽ‰ It's not about minikube, even better if you use a standard kubernetes cluster. Also, we are happy to help, if you could just write down the steps someone can verify them and streamline the docs.

iQQBot commented 2 years ago

@roboquat doesn't work?

aledbf commented 2 years ago

/this-is-fine

aledbf commented 2 years ago

/this-is-fine

gtsiolis commented 2 years ago

@roboquat doesn't work?

@iQQBot yes, we've noticed some commands don't work and the team is currently working on resolving this.

🍊 🍊 🍊 🍊

❓ question: Were you trying to assign this issue to yourself?

πŸ’­ suggestion: Since this issue serves as an epic with sub-tasks related to community contributor experience that also includes tasks for team members like [5] and [6] from the proposal section in the issue description, it could be best if we split out tasks and work with the smaller issues instead. What do you think? We could open a new separate issue for everything related to setting up minikube or a local kubernetes cluster.

iQQBot commented 2 years ago

Sure, it would be nice, I deleted assign comment

aledbf commented 2 years ago

/this-is-fine

gtsiolis commented 2 years ago

It's ok @iQQBot! No need to delete any comments! πŸ™‚

FYI, Added another task in the proposal of this issue (epic) and opened #6563:

  1. Add contributing guidelines with a local kubernetes cluster or minikube. See Add contributing guidelines with a local kubernetes cluster or minikube #6563.

Let's continue the discussion about the local kubernetes cluster or minikube setup in #6563! πŸ€

loujaybee commented 2 years ago

Great job on the write-up here @gtsiolis !

Came here to note that also from a priority / value point of view that having better contribution paths is a benefit to a lot of companies looking to assess and adopt Gitpod.

See: Internal Discussion

anbraten commented 2 years ago

This is a short list on the steps I did to setup a test cluster and try out my changes (#80). Maybe it helps you to create some contribution guide. Greets from Kiel

Building

Deploying & testing

Telepresence

Telepresence allows to replace a component in your test cluster (like for example the dashboard or server) with a locally (probably inside your gitpod workspace) running instance.

To get telepresence up and running you have to do some steps:

TODO

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.