Contributor and Development Docs
Get started
- Set up GitLab's development environment with GitLab Development Kit (GDK)
-
GitLab contributing guide
-
Issues workflow for more information on:
- Issue tracker guidelines.
- Triaging.
- Labels.
- Feature proposals.
- Issue weight.
- Regression issues.
- Technical or UX debt.
-
Merge requests workflow for more
information on:
- Merge request guidelines.
- Contribution acceptance criteria.
- Definition of done.
- Dependencies.
- Style guides
- Implement design & UI elements
-
Issues workflow for more information on:
- GitLab Architecture Overview
- Rake tasks for development
Processes
Must-reads:
- Code review guidelines for reviewing code and having code reviewed
- Database review guidelines for reviewing database-related changes and complex SQL queries, and having them reviewed
- Secure coding guidelines
- Pipelines for the GitLab project
Complementary reads:
- GitLab core team & GitLab Inc. contribution process
- Security process for developers
- Guidelines for implementing Enterprise Edition features
- Danger bot
- Generate a changelog entry with
bin/changelog
- Requesting access to Chatops on GitLab.com (for GitLab team members)
UX and Frontend guides
- GitLab Design System for building GitLab with existing CSS styles and elements
- Frontend guidelines
- Emoji guide
Backend guides
- GitLab utilities
- Issuable-like Rails models
- Logging
- API style guide for contributing to the API
- GraphQL API style guide for contributing to the GraphQL API
- Sidekiq guidelines for working with Sidekiq workers
- Working with Gitaly
- Manage feature flags
- Licensed feature availability
- View sent emails or preview mailers
- Shell commands in the GitLab codebase
Gemfile
guidelines- Pry debugging
- Sidekiq debugging
- Accessing session data
- Gotchas to avoid
- Avoid modules with instance variables if possible
- How to dump production data to staging
- Working with the GitHub importer
- Import/Export development documentation
- Test Import Project
- Elasticsearch integration docs
- Working with Merge Request diffs
- Kubernetes integration guidelines
- Permissions
- Prometheus
- Guidelines for reusing abstractions
- DeclarativePolicy framework
- How Git object deduplication works in GitLab
- Geo development
- Routing
- Repository mirroring
- Git LFS
- Developing against interacting components or features
- File uploads
- Auto DevOps development guide
- Mass Inserting Models
- Value Stream Analytics development guide
- Issue types vs first-class types
- Application limits
- Redis guidelines
- Rails initializers
- Code comments
- Renaming features
- Windows Development on GCP
Performance guides
- Instrumentation for Ruby code running in production environments
- Performance guidelines for writing code, benchmarks, and certain patterns to avoid
- Merge request performance guidelines for ensuring merge requests do not negatively impact GitLab performance
- Profiling a URL, measuring performance using Sherlock, or tracking down N+1 queries using Bullet
Database guides
Tooling
- Understanding EXPLAIN plans
-
explain.depesz.com for visualizing the output
of
EXPLAIN
- pgFormatter a PostgreSQL SQL syntax beautifier
Migrations
- What requires downtime?
- SQL guidelines for working with SQL queries
- Migrations style guide for creating safe SQL migrations
- Testing Rails migrations guide
- Post deployment migrations
- Background migrations
- Swapping tables
- Deleting migrations
Debugging
- Tracing the source of an SQL query using query comments with Marginalia
- Tracing the source of an SQL query in Rails console using Verbose Query Logs
Best practices
- Adding database indexes
- Foreign keys & associations
- Single table inheritance
- Polymorphic associations
- Serializing data
- Hash indexes
- Storing SHA1 hashes as binary
- Iterating tables in batches
- Insert into tables in batches
- Ordering table columns
- Verifying database capabilities
- Database Debugging and Troubleshooting
- Query Count Limits
- Creating enums
Case studies
Integration guides
- Jira Connect app
- Security Scanners
- Secure Partner Integration
- How to run Jenkins in development environment
Testing guides
Refactoring guides
Documentation guides
Internationalization (i18n) guides
Telemetry guides
Experiment guide
Build guides
Compliance
- Licensing for ensuring license compliance
Go guides
Shell Scripting guides
Domain-specific guides
Other Development guides
- Defining relations between files using projections
- Reference processing
- Compatibility with multiple versions of the application running at the same time