8.1 KiB
8.1 KiB
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 (issue tracker guidelines, triaging, labels, feature proposals, issue weight, regression issues, technical and UX debt)
- Merge requests workflow (merge request guidelines, contribution acceptance criteria, definition of done, dependencies)
- Style guides
- Implement design & UI elements
- 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
- 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 GitLabbers)
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 styleguide Use this styleguide if you are contributing to the API
- GraphQL API styleguide Use this styleguide if you are 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 metrics
- 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
- Cycle Analytics development guide
- Issue types vs first-class types
- Application limits
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 visualising 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
- Ordering table columns
- Verifying database capabilities
- Database Debugging and Troubleshooting
- Query Count Limits
- Code comments
- Creating enums
- Renaming features
Case studies
Integration guides
Testing guides
Documentation guides
Internationalization (i18n) guides
Event tracking guides
Experiment Guide
Build guides
Compliance
- Licensing for ensuring license compliance