2022-08-13 15:12:31 +05:30
---
stage: none
group: Development
2022-11-25 23:54:43 +05:30
info: "See the Technical Writers assigned to Development Guidelines: https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-development-guidelines"
2022-08-13 15:12:31 +05:30
---
# Feature development
Consult these topics for information on contributing to specific GitLab features.
## UX and Frontend guides
- [GitLab Design System ](https://design.gitlab.com/ ), for building GitLab with
existing CSS styles and elements
- [Frontend guidelines ](fe_guide/index.md )
- [Emoji guide ](fe_guide/emojis.md )
## Backend guides
### General
2023-03-04 22:38:38 +05:30
- [Software design guides ](software_design.md )
2022-08-13 15:12:31 +05:30
- [GitLab EventStore ](event_store.md ) to publish/subscribe to domain events
- [GitLab utilities ](utilities.md )
2023-04-23 21:23:45 +05:30
- [Newlines style guide ](backend/ruby_style_guide.md#newlines-style-guide )
2022-08-13 15:12:31 +05:30
- [Logging ](logging.md )
- [Dealing with email/mailers ](emails.md )
- [Kubernetes integration guidelines ](kubernetes.md )
- [Permissions ](permissions.md )
- [Code comments ](code_comments.md )
- [Windows Development on GCP ](windows.md )
- [FIPS compliance ](fips_compliance.md )
- [`Gemfile` guidelines ](gemfile.md )
- [Ruby upgrade guidelines ](ruby_upgrade.md )
### Things to be aware of
- [Gotchas ](gotchas.md ) to avoid
- [Avoid modules with instance variables ](module_with_instance_variables.md ), if
possible
- [Guidelines for reusing abstractions ](reusing_abstractions.md )
- [Ruby 3 gotchas ](ruby3_gotchas.md )
### Rails Framework related
- [Routing ](routing.md )
- [Rails initializers ](rails_initializers.md )
- [Mass Inserting Models ](mass_insert.md )
- [Issuable-like Rails models ](issuable-like-models.md )
- [Issue types vs first-class types ](issue_types.md )
- [DeclarativePolicy framework ](policies.md )
- [Rails update guidelines ](rails_update.md )
### Debugging
- [Pry debugging ](pry_debugging.md )
2023-03-04 22:38:38 +05:30
- [Sidekiq debugging ](../administration/sidekiq/sidekiq_troubleshooting.md )
2022-08-13 15:12:31 +05:30
### Git specifics
- [How Git object deduplication works in GitLab ](git_object_deduplication.md )
- [Git LFS ](lfs.md )
### API
- [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 )
### GitLab components and features
- [Developing against interacting components or features ](interacting_components.md )
- [Manage feature flags ](feature_flags/index.md )
2022-08-27 11:52:29 +05:30
- [Implementing Enterprise Edition features ](ee_features.md )
2022-08-13 15:12:31 +05:30
- [Accessing session data ](session.md )
2022-08-27 11:52:29 +05:30
- [How to dump production data to staging ](database/db_dump.md )
2022-08-13 15:12:31 +05:30
- [Geo development ](geo.md )
- [Redis guidelines ](redis.md )
- [Adding a new Redis instance ](redis/new_redis_instance.md )
- [Sidekiq guidelines ](sidekiq/index.md ) for working with Sidekiq workers
- [Working with Gitaly ](gitaly.md )
2023-05-27 22:25:52 +05:30
- [Advanced search integration docs ](advanced_search.md )
2023-06-20 00:43:36 +05:30
- [Working with merge request diffs ](merge_request_concepts/diffs/index.md )
2023-04-23 21:23:45 +05:30
- [Approval Rules ](merge_request_concepts/approval_rules.md )
2022-08-13 15:12:31 +05:30
- [Repository mirroring ](repository_mirroring.md )
- [Uploads development guide ](uploads/index.md )
- [Auto DevOps development guide ](auto_devops.md )
- [Renaming features ](renaming_features.md )
- [Code Intelligence ](code_intelligence/index.md )
- [Feature categorization ](feature_categorization/index.md )
- [Wikis development guide ](wikis.md )
- [Image scaling guide ](image_scaling.md )
- [Cascading Settings ](cascading_settings.md )
- [Shell commands ](shell_commands.md ) in the GitLab codebase
- [Value Stream Analytics development guide ](value_stream_analytics.md )
- [Application limits ](application_limits.md )
### Import and Export
- [Working with the GitHub importer ](github_importer.md )
- [Import/Export development documentation ](import_export.md )
- [Test Import Project ](import_project.md )
- [Group migration ](bulk_import.md )
- [Export to CSV ](export_csv.md )
## Performance guides
- [Performance guidelines ](performance.md ) for writing code, benchmarks, and
certain patterns to avoid.
- [Caching guidelines ](caching.md ) for using caching in Rails under a GitLab environment.
2023-03-17 16:20:25 +05:30
- [Merge request performance guidelines ](merge_request_concepts/performance.md )
2022-08-13 15:12:31 +05:30
for ensuring merge requests do not negatively impact GitLab performance
- [Profiling ](profiling.md ) a URL or tracking down N+1 queries using Bullet.
- [Cached queries guidelines ](cached_queries.md ), for tracking down N+1 queries
masked by query caching, memory profiling and why should we avoid cached
queries.
2022-11-25 23:54:43 +05:30
- [JSON guidelines ](json.md ) for how to handle JSON in a performant manner.
2022-08-13 15:12:31 +05:30
## Database guides
See [database guidelines ](database/index.md ).
## Integration guides
- [Integrations development guide ](integrations/index.md )
- [Jira Connect app ](integrations/jira_connect.md )
- [Security Scanners ](integrations/secure.md )
- [Secure Partner Integration ](integrations/secure_partner_integration.md )
- [How to run Jenkins in development environment ](integrations/jenkins.md )
2022-11-25 23:54:43 +05:30
The following integration guides are internal. Some integrations require access to administrative accounts of third-party services and are available only for GitLab team members to contribute to:
2023-06-20 00:43:36 +05:30
- [Jira app development ](https://gitlab.com/gitlab-org/manage/integrate/team/-/blob/main/integrations/jira.md )
- [GitLab for Slack app development ](https://gitlab.com/gitlab-org/manage/integrate/team/-/blob/main/integrations/slack.md )
2022-11-25 23:54:43 +05:30
2022-08-13 15:12:31 +05:30
## Testing guides
- [Testing standards and style guidelines ](testing_guide/index.md )
- [Frontend testing standards and style guidelines ](testing_guide/frontend_testing.md )
## Refactoring guides
- [Refactoring guidelines ](refactoring_guide/index.md )
## Deprecation guides
- [Deprecation guidelines ](deprecation_guidelines/index.md )
## Documentation guides
- [Writing documentation ](documentation/index.md )
- [Documentation style guide ](documentation/styleguide/index.md )
- [Markdown ](../user/markdown.md )
## Internationalization (i18n) guides
- [Introduction ](i18n/index.md )
- [Externalization ](i18n/externalization.md )
- [Translation ](i18n/translation.md )
## Product Intelligence guides
- [Product Intelligence guide ](https://about.gitlab.com/handbook/product/product-intelligence-guide/ )
- [Service Ping guide ](service_ping/index.md )
- [Snowplow guide ](snowplow/index.md )
## Experiment guide
- [Introduction ](experiment_guide/index.md )
## Build guides
- [Building a package for testing purposes ](build_test_package.md )
## Compliance
- [Licensing ](licensing.md ) for ensuring license compliance
## Domain-specific guides
- [CI/CD development documentation ](cicd/index.md )
2022-10-11 01:57:18 +05:30
- [Sec Section development documentation ](sec/index.md )
2022-08-13 15:12:31 +05:30
## Technical Reference by Group
- [Create: Source Code BE ](backend/create_source_code_be/index.md )
## Other development guides
- [Defining relations between files using projections ](projections.md )
- [Reference processing ](reference_processing.md )
- [Compatibility with multiple versions of the application running at the same time ](multi_version_compatibility.md )
- [Features inside `.gitlab/` ](features_inside_dot_gitlab.md )
- [Dashboards for stage groups ](stage_group_observability/index.md )
- [Preventing transient bugs ](transient/prevention-patterns.md )
- [GitLab Application SLIs ](application_slis/index.md )
- [Spam protection and CAPTCHA development guide ](spam_protection_and_captcha/index.md )
2023-01-13 00:05:48 +05:30
- [RuboCop development guide ](rubocop_development_guide.md )
2022-08-13 15:12:31 +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/main/doc/howto/auto_devops.md )
- [Using GitLab Runner with the GDK ](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/runner.md )
- [Using the Web IDE terminal with the GDK ](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/web_ide_terminal_gdk_setup.md )
2023-03-04 22:38:38 +05:30
- [Gitpod configuration internals page ](gitpod_internals.md )