2018-03-17 18:26:18 +05:30
---
comments: false
2018-11-08 19:23:39 +05:30
description: 'Learn how to contribute to GitLab.'
2018-03-17 18:26:18 +05:30
---
2014-09-02 18:07:02 +05:30
2019-10-12 21:52:04 +05:30
# Contributor and Development Docs
2016-09-13 17:45:13 +05:30
2019-12-04 20:38:33 +05:30
## Get started
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
- Set up GitLab's development environment with [GitLab Development Kit (GDK) ](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/README.md )
2018-12-13 13:39:08 +05:30
- [GitLab contributing guide ](contributing/index.md )
2020-05-24 23:13:21 +05:30
- [Issues workflow ](contributing/issue_workflow.md ) for more information on:
2020-04-08 14:13:33 +05:30
- Issue tracker guidelines.
- Triaging.
- Labels.
- Feature proposals.
- Issue weight.
- Regression issues.
- Technical or UX debt.
2020-05-24 23:13:21 +05:30
- [Merge requests workflow ](contributing/merge_request_workflow.md ) for more
2020-04-08 14:13:33 +05:30
information on:
- Merge request guidelines.
- Contribution acceptance criteria.
- Definition of done.
- Dependencies.
2020-03-13 15:44:24 +05:30
- [Style guides ](contributing/style_guides.md )
- [Implement design & UI elements ](contributing/design.md )
- [GitLab Architecture Overview ](architecture.md )
2018-03-17 18:26:18 +05:30
- [Rake tasks ](rake_tasks.md ) for development
2016-09-13 17:45:13 +05:30
2018-03-17 18:26:18 +05:30
## Processes
2016-09-13 17:45:13 +05:30
2020-03-13 15:44:24 +05:30
**Must-reads:**
2019-09-30 21:07:59 +05:30
- [Code review guidelines ](code_review.md ) for reviewing code and having code reviewed
2020-03-13 15:44:24 +05:30
- [Database review guidelines ](database_review.md ) for reviewing database-related changes and complex SQL queries, and having them reviewed
2020-04-22 19:07:51 +05:30
- [Secure coding guidelines ](secure_coding_guidelines.md )
2019-12-04 20:38:33 +05:30
- [Pipelines for the GitLab project ](pipelines.md )
2020-03-13 15:44:24 +05:30
Complementary reads:
- [GitLab core team & GitLab Inc. contribution process ](https://gitlab.com/gitlab-org/gitlab/blob/master/PROCESS.md )
2018-11-08 19:23:39 +05:30
- [Security process for developers ](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#security-releases-critical-non-critical-as-a-developer )
2020-03-13 15:44:24 +05:30
- [Guidelines for implementing Enterprise Edition features ](ee_features.md )
2019-12-04 20:38:33 +05:30
- [Danger bot ](dangerbot.md )
2020-03-13 15:44:24 +05:30
- [Generate a changelog entry with `bin/changelog` ](changelog.md )
2020-04-08 14:13:33 +05:30
- [Requesting access to Chatops on GitLab.com ](chatops_on_gitlabcom.md#requesting-access ) (for GitLab team members)
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
## UX and Frontend guides
2016-09-13 17:45:13 +05:30
2019-02-15 15:39:39 +05:30
- [GitLab Design System ](https://design.gitlab.com/ ) for building GitLab with existing CSS styles and elements
2018-03-17 18:26:18 +05:30
- [Frontend guidelines ](fe_guide/index.md )
- [Emoji guide ](fe_guide/emojis.md )
## Backend guides
- [GitLab utilities ](utilities.md )
2019-12-21 20:55:43 +05:30
- [Issuable-like Rails models ](issuable-like-models.md )
2019-02-15 15:39:39 +05:30
- [Logging ](logging.md )
2020-05-24 23:13:21 +05:30
- [API style guide ](api_styleguide.md ) for contributing to the API
- [GraphQL API style guide ](api_graphql_styleguide.md ) for contributing to the [GraphQL API ](../api/graphql/index.md )
2018-03-17 18:26:18 +05:30
- [Sidekiq guidelines ](sidekiq_style_guide.md ) for working with Sidekiq workers
- [Working with Gitaly ](gitaly.md )
2020-04-22 19:07:51 +05:30
- [Manage feature flags ](feature_flags/index.md )
2019-07-31 22:56:46 +05:30
- [Licensed feature availability ](licensed_feature_availability.md )
2020-06-23 00:09:42 +05:30
- [Dealing with email/mailers ](emails.md )
2018-03-17 18:26:18 +05:30
- [Shell commands ](shell_commands.md ) in the GitLab codebase
- [`Gemfile` guidelines ](gemfile.md )
2018-11-18 11:00:15 +05:30
- [Pry debugging ](pry_debugging.md )
2018-03-17 18:26:18 +05:30
- [Sidekiq debugging ](sidekiq_debugging.md )
2019-07-31 22:56:46 +05:30
- [Accessing session data ](session.md )
2016-06-02 11:05:42 +05:30
- [Gotchas ](gotchas.md ) to avoid
2018-03-17 18:26:18 +05:30
- [Avoid modules with instance variables ](module_with_instance_variables.md ) if possible
2016-06-02 11:05:42 +05:30
- [How to dump production data to staging ](db_dump.md )
2018-03-17 18:26:18 +05:30
- [Working with the GitHub importer ](github_importer.md )
2019-03-02 22:35:43 +05:30
- [Import/Export development documentation ](import_export.md )
2020-03-13 15:44:24 +05:30
- [Test Import Project ](import_project.md )
2019-07-31 22:56:46 +05:30
- [Elasticsearch integration docs ](elasticsearch.md )
2018-10-15 14:42:47 +05:30
- [Working with Merge Request diffs ](diffs.md )
2019-07-07 11:18:12 +05:30
- [Kubernetes integration guidelines ](kubernetes.md )
2018-12-05 23:21:45 +05:30
- [Permissions ](permissions.md )
2020-04-22 19:07:51 +05:30
- [Prometheus ](prometheus.md )
2018-12-05 23:21:45 +05:30
- [Guidelines for reusing abstractions ](reusing_abstractions.md )
2018-12-13 13:39:08 +05:30
- [DeclarativePolicy framework ](policies.md )
2019-07-07 11:18:12 +05:30
- [How Git object deduplication works in GitLab ](git_object_deduplication.md )
2019-07-31 22:56:46 +05:30
- [Geo development ](geo.md )
2019-09-04 21:01:54 +05:30
- [Routing ](routing.md )
2019-09-30 21:07:59 +05:30
- [Repository mirroring ](repository_mirroring.md )
- [Git LFS ](lfs.md )
2019-10-12 21:52:04 +05:30
- [Developing against interacting components or features ](interacting_components.md )
2019-12-04 20:38:33 +05:30
- [File uploads ](uploads.md )
2019-12-21 20:55:43 +05:30
- [Auto DevOps development guide ](auto_devops.md )
2020-01-01 13:55:28 +05:30
- [Mass Inserting Models ](mass_insert.md )
2020-03-13 15:44:24 +05:30
- [Value Stream Analytics development guide ](value_stream_analytics.md )
- [Issue types vs first-class types ](issue_types.md )
- [Application limits ](application_limits.md )
- [Redis guidelines ](redis.md )
2020-04-08 14:13:33 +05:30
- [Rails initializers ](rails_initializers.md )
2020-04-22 19:07:51 +05:30
- [Code comments ](code_comments.md )
- [Renaming features ](renaming_features.md )
2020-05-24 23:13:21 +05:30
- [Windows Development on GCP ](windows.md )
2018-03-17 18:26:18 +05:30
## Performance guides
2018-12-05 23:21:45 +05:30
- [Instrumentation ](instrumentation.md ) for Ruby code running in production
environments
- [Performance guidelines ](performance.md ) for writing code, benchmarks, and
certain patterns to avoid
2018-03-17 18:26:18 +05:30
- [Merge request performance guidelines ](merge_request_performance_guidelines.md )
for ensuring merge requests do not negatively impact GitLab performance
2018-12-05 23:21:45 +05:30
- [Profiling ](profiling.md ) a URL, measuring performance using Sherlock, or
tracking down N+1 queries using Bullet
2018-03-17 18:26:18 +05:30
2018-11-20 20:47:30 +05:30
## Database guides
2020-06-23 00:09:42 +05:30
See [database guidelines ](database/index.md ).
2019-10-12 21:52:04 +05:30
2019-07-31 22:56:46 +05:30
## Integration guides
- [Jira Connect app ](integrations/jira_connect.md )
2020-03-13 15:44:24 +05:30
- [Security Scanners ](integrations/secure.md )
2020-04-08 14:13:33 +05:30
- [Secure Partner Integration ](integrations/secure_partner_integration.md )
2020-04-22 19:07:51 +05:30
- [How to run Jenkins in development environment ](integrations/jenkins.md )
2019-07-31 22:56:46 +05:30
2018-03-17 18:26:18 +05:30
## Testing guides
- [Testing standards and style guidelines ](testing_guide/index.md )
- [Frontend testing standards and style guidelines ](testing_guide/frontend_testing.md )
2020-04-22 19:07:51 +05:30
## Refactoring guides
- [Refactoring guidelines ](refactoring_guide/index.md )
2018-03-17 18:26:18 +05:30
## Documentation guides
2018-11-08 19:23:39 +05:30
- [Writing documentation ](documentation/index.md )
2020-05-24 23:13:21 +05:30
- [Documentation style guide ](documentation/styleguide.md )
2018-03-17 18:26:18 +05:30
- [Markdown ](../user/markdown.md )
## Internationalization (i18n) guides
- [Introduction ](i18n/index.md )
- [Externalization ](i18n/externalization.md )
- [Translation ](i18n/translation.md )
2020-04-08 14:13:33 +05:30
## Telemetry guides
2019-12-04 20:38:33 +05:30
2020-05-24 23:13:21 +05:30
- [Telemetry guide ](telemetry/index.md )
- [Usage Ping guide ](telemetry/usage_ping.md )
- [Snowplow guide ](telemetry/snowplow.md )
2019-12-04 20:38:33 +05:30
2020-05-24 23:13:21 +05:30
## Experiment guide
2019-12-21 20:55:43 +05:30
- [Introduction ](experiment_guide/index.md )
2018-03-17 18:26:18 +05:30
## Build guides
- [Building a package for testing purposes ](build_test_package.md )
2016-09-13 17:45:13 +05:30
## Compliance
- [Licensing ](licensing.md ) for ensuring license compliance
2019-03-02 22:35:43 +05:30
## Go guides
- [Go Guidelines ](go_guide/index.md )
2019-09-04 21:01:54 +05:30
2019-10-12 21:52:04 +05:30
## Shell Scripting guides
- [Shell scripting standards and style guidelines ](shell_scripting_guide/index.md )
2020-03-13 15:44:24 +05:30
## Domain-specific guides
- [CI/CD development documentation ](cicd/index.md )
2019-12-21 20:55:43 +05:30
## Other Development guides
- [Defining relations between files using projections ](projections.md )
2020-04-08 14:13:33 +05:30
- [Reference processing ](./reference_processing.md )
2020-05-24 23:13:21 +05:30
- [Compatibility with multiple versions of the application running at the same time ](multi_version_compatibility.md )
2019-12-21 20:55:43 +05:30
2019-09-04 21:01:54 +05:30
## Other GitLab Development Kit (GDK) guides
- [Run full Auto DevOps cycle in a GDK instance ](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/auto_devops.md )
2020-05-24 23:13:21 +05:30
- [Using GitLab Runner with the GDK ](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/runner.md )
- [Using the Web IDE terminal with the GDK ](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/master/doc/howto/web_ide_terminal_gdk_setup.md )