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.
- Limit conflicts with EE when developing on CE
- Guidelines for implementing Enterprise Edition feature
UX and frontend guides
- UX guide for building GitLab with existing CSS styles and elements
- Frontend guidelines
Backend guides
- API styleguide Use this styleguide if you are contributing to the 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
- Issue and merge requests state models
- How to dump production data to staging
- Working with the GitHub importer
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
Testing guides
Documentation guides
- Documentation styleguide: Use this styleguide if you are contributing to the documentation.
- Writing documentation
Internationalization (i18n) guides
Build guides
Compliance
- Licensing for ensuring license compliance