Feature development
Consult these topics for information on contributing to specific GitLab features.
UX and Frontend guides
- GitLab Design System, for building GitLab with existing CSS styles and elements
- Frontend guidelines
- Emoji guide
Backend guides
General
- Software design guides
- GitLab EventStore to publish/subscribe to domain events
- GitLab utilities
- Newlines style guide
- Logging
- Dealing with email/mailers
- Kubernetes integration guidelines
- Permissions
- Code comments
- Windows Development on GCP
- FIPS compliance
Gemfile
guidelines- Ruby upgrade guidelines
Things to be aware of
- Gotchas to avoid
- Avoid modules with instance variables, if possible
- Guidelines for reusing abstractions
- Ruby 3 gotchas
Rails Framework related
- Routing
- Rails initializers
- Mass Inserting Models
- Issuable-like Rails models
- Issue types vs first-class types
- DeclarativePolicy framework
- Rails update guidelines
Debugging
Git specifics
API
- API style guide for contributing to the API
- GraphQL API style guide for contributing to the GraphQL API
GitLab components and features
- Developing against interacting components or features
- Manage feature flags
- Implementing Enterprise Edition features
- Accessing session data
- How to dump production data to staging
- Geo development
- Redis guidelines
- Sidekiq guidelines for working with Sidekiq workers
- Working with Gitaly
- Advanced search integration docs
- Working with merge request diffs
- Approval Rules
- Repository mirroring
- Uploads development guide
- Auto DevOps development guide
- Renaming features
- Code Intelligence
- Feature categorization
- Wikis development guide
- Image scaling guide
- Cascading Settings
- Shell commands in the GitLab codebase
- Value Stream Analytics development guide
- Application limits
- AI features
- Application settings
- Remote Development
- Markdown (GLFM) development guide
Import and Export
- Add new relations to the direct transfer importer
- Principles of importer design
- Working with the GitHub importer
- Import/Export development documentation
- Test Import Project
- Group migration
- Export to CSV
Performance guides
- Performance guidelines for writing code, benchmarks, and certain patterns to avoid.
- Caching guidelines for using caching in Rails under a GitLab environment.
- Merge request performance guidelines for ensuring merge requests do not negatively impact GitLab performance
- Profiling a URL or tracking down N+1 queries using Bullet.
- Cached queries guidelines, for tracking down N+1 queries masked by query caching, memory profiling and why should we avoid cached queries.
- JSON guidelines for how to handle JSON in a performant manner.
- GraphQL API optimizations for how to optimize GraphQL code.
Database guides
See database guidelines.
Integration guides
- Integrations development guide
- GitLab for Jira Cloud app
- Security Scanners
- Secure Partner Integration
- How to run Jenkins in development environment
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:
Testing guides
Refactoring guides
Deprecation guides
Documentation guides
Internationalization (i18n) guides
Analytics Instrumentation guides
Experiment guide
Build guides
Compliance
- Licensing for ensuring license compliance
Domain-specific guides
Technical Reference by Group
Other development guides
- Defining relations between files using projections
- Compatibility with multiple versions of the application running at the same time
- Features inside
.gitlab/
- Dashboards for stage groups
- Preventing transient bugs
- GitLab Application SLIs
- Spam protection and CAPTCHA development guide
- RuboCop development guide