# Readme · Development · Help · GitLab
GitLab Community Edition

# GitLab development guides

## Get started!

- Setup GitLab's development environment with GitLab Development Kit (GDK)
- GitLab contributing guide
- Architecture of GitLab
- Rake tasks for development

## Processes

- GitLab core team & GitLab Inc. contribution process
- Generate a changelog entry with `bin/changelog`
- Code review guidelines for reviewing code and having code reviewed.
- Automatic CE->EE merge
- Guidelines for implementing Enterprise Edition features
- Security process for developers

## UX and frontend guides

- UX guide for building GitLab with existing CSS styles and elements
- Frontend guidelines
- Emoji guide

## Backend guides

- GitLab utilities
- API styleguide Use this styleguide if you are contributing to the API.
- GraphQL API styleguide Use this styleguide if you are contribution to the GraphQL API
- Sidekiq guidelines for working with Sidekiq workers
- Working with Gitaly
- Manage feature flags
- View sent emails or preview mailers
- Shell commands in the GitLab codebase
- `Gemfile` guidelines
- Sidekiq debugging
- Gotchas to avoid
- Avoid modules with instance variables if possible
- How to dump production data to staging
- Working with the GitHub importer
- Working with Merge Request diffs

## Performance guides

- Instrumentation
- Performance guidelines
- Merge request performance guidelines for ensuring merge requests do not negatively impact GitLab performance

## Databases guides

### Migrations

- What requires downtime?
- SQL guidelines for working with SQL queries
- Migrations style guide for creating safe SQL migrations
- Post deployment migrations
- Background migrations
- Swapping tables

### Best practices

- Merge Request checklist
- Adding database indexes
- Foreign keys & associations
- Single table inheritance
- Polymorphic associations
- Serializing data
- Hash indexes
- Storing SHA1 hashes as binary
- Iterating tables in batches
- Ordering table columns
- Verifying database capabilities
- Database Debugging and Troubleshooting
- Query Count Limits

## Testing guides

- Testing standards and style guidelines
- Frontend testing standards and style guidelines

## Documentation guides

- Writing documentation
- Documentation styleguide
- Markdown

## Internationalization (i18n) guides

- Introduction
- Externalization
- Translation

## Build guides

- Building a package for testing purposes

## Compliance

- Licensing for ensuring license compliance