comments | description |
---|---|
false | Learn how to contribute to GitLab. |
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
- Dealing with email/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
- Code Intelligence
- Approval Rules
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
See database guidelines.
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