Gitlab hero border pattern left svg Gitlab hero border pattern right svg

Code Contributor Program

On this page


Overview

From the beginning, GitLab has been an open source project and we want to continue growing community code contribution. This will be accomplished by lowering the barrier to entry for new contributors and also by helping casual contributors become regular contributors. We want GitLab to be the open source project of choice for open source developers.

Communication/collaboration with contributors

Contributor channel

A GitLab community room is available on Gitter for people interested in contributing to GitLab. This is open to everyone to join.

Hackathons

There will be a quarterly Hackathon for GitLab community members to come together to work on merge requests, participate in tutorial sessions, and support each other on the GitLab contributors channel. Agenda, logistics, materials, recordings, and other information for Hackathons will be available on the Hackathon project pages.

The event planning will be done following the Hackathon checklist

Contribute for prize

To encourage contribution to priority issues on an on-going basis (and not just during Hackathons), we will maintain a list of up to 5 priority issues for each product stage and prizes will be given to wider community members who have MRs merged for these issues. These issues will have the label Contribute for prize and more details such as prizes, assignment of these issues, etc. can be found here.

Supporting the contributor community

Triaging community MR's

The GitLab Bot labels merge requests from outside of GitLab with the label Community contribution once a day (Monday-Friday). If you subscribe to the label, you will also receive an email notification from the GitLab Bot. It's helpful to review these MRs to do some quick triaging to apply appropriate labels and mention GitLab team members (e.g. product managers, engineering managers, technical writers for documentation, etc. ) so that the community MRs can be reviewed in a timely manner. You can refer to the product team handbook for the list of people you can mention in merge requests for each product area.

Reaching out to new contributors

After the first merged MR, reach out to new contributors using the outreach email template to congratulate them on the first MR and offer a GitLab merchandise. In cases where it would be beneficial for new contributors to be paired up with an experienced mentor, you can make an offer for a mentor for a limited time period (~2 weeks) so that mentors are not overly burdened. Currently, mentors consist primarily of Core Team members.

The first-time contributors can be identified after each release in the First time contributors MRs dashboard.

Working with the Core Team

There will be a monthly call with members of the Core Team using the Zoom conferencing tool and meetings will also be recorded. Since Core Team members are spread out in different time zones, meeting times will be rotated.

Service Desk will be used as a communication tool for Core Team members. Anyone can open issues in the Service Desk or send an email to incoming+gitlab-core-team/general@incoming.gitlab.com Core Team members who signed NDAs will also have access to GitLab Slack channels.

For contributors to the GitLab Enterprise Edition (EE)

In order for community contributors to contribute to the GitLab Enterprise Edition, they will need a license for EE. If they don't already have a license, they can get a free trial for 30 days. If the contributor is not able to complete their work in 30 days, issue a new EE license for a 3-month period for a limited number of users. If the contributor wants to continue contributing to EE beyond the 3 months (and there has been contributions during the 3-month period), we can renew the license for another 3-month period.

In order to request license keys for EE, you will need to get permission to login to dev.gitlab.org by creating an access request issue. Details on requesting license keys can be found at Working on GitLab EE section of the developer onboarding handbook.

For contributors who run out of CI minutes

Community members may run out monthly CI minutes as they are working on an MR. Community members can send a request to reset their CI minutes to contributors@gitlab.com in order to continue their work. After reviewing the request, a Community Relations team member will file an issue with the GitLab.com Support Team using the pipeline_reset_request template. Information on the community member name, username, and link to the MR that requires additional CI minutes will need to be provided in the issue.

Developer Certificate of Origin (DCO)

Every community contribution to GitLab Community Edition (CE) requires signing off on the Developer Certificate of Origin (DCO).

In line with our value that everyone can contribute to GitLab, we strive to make our process as developer-friendly and frictionless as possible. As such, we consider the act of contributing to the code by submitting a Merge Request as the "Sign off" or agreement to the certifications and terms of the DCO and MIT license. No further action is required.

Check out this issue for more details.

Community outreach

Contributor blog post series

Goal is to publish a regular blog post featuring contributors from the community. The format will be a casual Q&A with a community member and will be posted on the GitLab blog page.

When developing a blog post, follow the blog guidelines.

Following up on inactive merge requests

Periodically, there should be a review of community MR's that has not had a meaningful activity for an extended period (e.g. >3 months). A good place to start would be to search for all MR's with a label Community contribution and a milestone No milestone. A follow-up should be made with either the community member or MR coaches to ask if there's a plan to continue work on the MR or if MR should be closed.

Metrics

Note: this is currently a working list of all locations where we can currently gather contributor metrics. It is not yet the final set of metrics we will be using to monitor the success of the contributor program with.

Bitergia dashboard

The Bitergia dashboard is public and anyone can use the dashboard to view/filter/export/analyze the data. A good place to start is the Merged Community MRs dashboard as it includes information that most people are looking for such as merged community MRs, number of contributors (e.g. yearly), top contributors, merged MRs per milestone, etc. You can filter the dashboard data per milestone and repository (e.g. CE vs. EE).

There are a number of other custom dashboards also available and to see the full list, click on dashboard on the upperleft (next to the Bitergia logo) and then select the dashboard link from the list. To learn more about using the Bitergia dashboard, you can view recordings of Bitergia training at the Bitergia training livestream channel.

Some administrative features (e.g. getting a short URL, creating a new dashboard) require a login, and the login information is available in the Team Vault on 1Password.

Quality dashboard

The Quality team publishes a monthly dashboard with the data update on the 4th Monday of each month. The Community MRs per release tab shows merged MRs from the wider community.

GitLab.com

You can also directly query data from Merge Requests pages for projects (e.g. CE, EE, Gitter, Omnibus, Shell, etc.) on gitlab.com and aplly appropriate filters for milestone, labels, etc. Some of the examples are listed in the metrics table below.

Metrics table

NOTE: "GitLabbers included" column

METRIC TIME SERIES PROJECT DATA SOURCE GITLABBERS INCLUDED? NOTES
Release GitLab CE/EE Bitergia dashboard -
No. of merged contributions Release GitLab CE Quality dashboard To be phased out in favour of the Bitergia Dashboard
No. of contributors All time GitLab CE GitLab contributors app -
No. of merged contributions All time GitLab CE Community contribution label -
No. of merged contributions All time GitLab organization Community contribution label -
No. of open contributions All time GitLab organization Community contribution label -
No. of merged contributions All time GitLab CE Community contribution label -
No. of open contributions All time GitLab CE Community contribution label -
No. of WIP open contributions All time GitLab CE Community contribution label -
No. of merged contributions All time GitLab EE Community contribution label -
No. of open contributions All time GitLab EE Community contribution label -

Projects

We generally gather data from the GitLab CE & EE projects. However, there are other projects contributors can submit merge requests to:

Additional projects: