README.md 6.3 KB
Newer Older
1 2
---
comments: false
3
description: 'Learn how to contribute to GitLab.'
4 5
---

6
# Contributor and Development Docs
7

8
## Get started!
9

10
- 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)
11
- [GitLab contributing guide](contributing/index.md)
12 13
- [Architecture](architecture.md) of GitLab
- [Rake tasks](rake_tasks.md) for development
14

15 16 17 18
## Processes

- [GitLab core team & GitLab Inc. contribution process](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/PROCESS.md)
- [Generate a changelog entry with `bin/changelog`](changelog.md)
19
- [Code review guidelines](code_review.md) for reviewing code and having code reviewed
20
- [Database review guidelines](database_review.md) for reviewing database-related changes and complex SQL queries
21
- [Automatic CE->EE merge](automatic_ce_ee_merge.md)
22
- [Guidelines for implementing Enterprise Edition features](ee_features.md)
23
- [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)
24
- [Requesting access to Chatops on GitLab.com](chatops_on_gitlabcom.md#requesting-access) (for GitLabbers)
25

26
## UX and Frontend guides
27

28
- [GitLab Design System](https://design.gitlab.com/) for building GitLab with existing CSS styles and elements
29
- [Frontend guidelines](fe_guide/index.md)
30
- [Emoji guide](fe_guide/emojis.md)
31 32 33

## Backend guides

34
- [GitLab utilities](utilities.md)
35
- [Logging](logging.md)
36
- [API styleguide](api_styleguide.md) Use this styleguide if you are
37
  contributing to the API
38
- [GraphQL API styleguide](api_graphql_styleguide.md) Use this
Arun Kumar Mohan's avatar
Arun Kumar Mohan committed
39
  styleguide if you are contributing to the [GraphQL API](../api/graphql/index.md)
40
- [Sidekiq guidelines](sidekiq_style_guide.md) for working with Sidekiq workers
41 42
- [Working with Gitaly](gitaly.md)
- [Manage feature flags](feature_flags.md)
43
- [Licensed feature availability](licensed_feature_availability.md)
44 45
- [View sent emails or preview mailers](emails.md)
- [Shell commands](shell_commands.md) in the GitLab codebase
46
- [`Gemfile` guidelines](gemfile.md)
47
- [Pry debugging](pry_debugging.md)
48
- [Sidekiq debugging](sidekiq_debugging.md)
49
- [Accessing session data](session.md)
50
- [Gotchas](gotchas.md) to avoid
Lin Jen-Shin's avatar
Lin Jen-Shin committed
51
- [Avoid modules with instance variables](module_with_instance_variables.md) if possible
52
- [How to dump production data to staging](db_dump.md)
53
- [Working with the GitHub importer](github_importer.md)
James Lopez's avatar
James Lopez committed
54
- [Import/Export development documentation](import_export.md)
55
- [Elasticsearch integration docs](elasticsearch.md)
56
- [Working with Merge Request diffs](diffs.md)
57
- [Kubernetes integration guidelines](kubernetes.md)
58
- [Permissions](permissions.md)
59
- [Prometheus metrics](prometheus_metrics.md)
60
- [Guidelines for reusing abstractions](reusing_abstractions.md)
61
- [DeclarativePolicy framework](policies.md)
62
- [How Git object deduplication works in GitLab](git_object_deduplication.md)
63
- [Geo development](geo.md)
64
- [Routing](routing.md)
65 66
- [Repository mirroring](repository_mirroring.md)
- [Git LFS](lfs.md)
67
- [Developing against interacting components or features](interacting_components.md)
68

69
## Performance guides
70

71 72 73 74
- [Instrumentation](instrumentation.md) for Ruby code running in production
  environments
- [Performance guidelines](performance.md) for writing code, benchmarks, and
  certain patterns to avoid
75 76
- [Merge request performance guidelines](merge_request_performance_guidelines.md)
  for ensuring merge requests do not negatively impact GitLab performance
77 78
- [Profiling](profiling.md) a URL, measuring performance using Sherlock, or
  tracking down N+1 queries using Bullet
79

80 81 82 83 84 85 86
## Database guides

### Tooling

- [Understanding EXPLAIN plans](understanding_explain_plans.md)
- [explain.depesz.com](https://explain.depesz.com/) for visualising the output
  of `EXPLAIN`
87
- [pgFormatter](http://sqlformat.darold.net/) a PostgreSQL SQL syntax beautifier
88

89
### Migrations
90

91
- [What requires downtime?](what_requires_downtime.md)
92 93 94 95 96 97 98 99 100
- [SQL guidelines](sql.md) for working with SQL queries
- [Migrations style guide](migration_style_guide.md) for creating safe SQL migrations
- [Post deployment migrations](post_deployment_migrations.md)
- [Background migrations](background_migrations.md)
- [Swapping tables](swapping_tables.md)

### Best practices

- [Merge Request checklist](database_merge_request_checklist.md)
101
- [Adding database indexes](adding_database_indexes.md)
102 103 104 105 106 107 108 109 110
- [Foreign keys & associations](foreign_keys.md)
- [Single table inheritance](single_table_inheritance.md)
- [Polymorphic associations](polymorphic_associations.md)
- [Serializing data](serializing_data.md)
- [Hash indexes](hash_indexes.md)
- [Storing SHA1 hashes as binary](sha1_as_binary.md)
- [Iterating tables in batches](iterating_tables_in_batches.md)
- [Ordering table columns](ordering_table_columns.md)
- [Verifying database capabilities](verifying_database_capabilities.md)
111
- [Database Debugging and Troubleshooting](database_debugging.md)
112
- [Query Count Limits](query_count_limits.md)
113
- [Database helper modules](database_helpers.md)
114
- [Code comments](code_comments.md)
115

116 117 118 119
## Case studies

- [Database case study: Filtering by label](filtering_by_label.md)

120 121 122 123
## Integration guides

- [Jira Connect app](integrations/jira_connect.md)

124 125 126 127 128
## Testing guides

- [Testing standards and style guidelines](testing_guide/index.md)
- [Frontend testing standards and style guidelines](testing_guide/frontend_testing.md)

129 130
## Documentation guides

131 132
- [Writing documentation](documentation/index.md)
- [Documentation styleguide](documentation/styleguide.md)
133
- [Markdown](../user/markdown.md)
134 135

## Internationalization (i18n) guides
136

137
- [Introduction](i18n/index.md)
138 139
- [Externalization](i18n/externalization.md)
- [Translation](i18n/translation.md)
140

141 142 143 144
## Build guides

- [Building a package for testing purposes](build_test_package.md)

145 146 147
## Compliance

- [Licensing](licensing.md) for ensuring license compliance
148 149 150 151

## Go guides

- [Go Guidelines](go_guide/index.md)
152

153 154 155 156
## Shell Scripting guides

- [Shell scripting standards and style guidelines](shell_scripting_guide/index.md)

157 158 159 160
## 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)
- [Using GitLab Runner with GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/runner.md)