![]() |
||
---|---|---|
.. | ||
cicd | ||
contributing | ||
database | ||
documentation | ||
event_tracking | ||
experiment_guide | ||
fe_guide | ||
feature_flags | ||
geo | ||
go_guide | ||
i18n | ||
img | ||
integrations | ||
new_fe_guide | ||
python_guide | ||
refactoring_guide | ||
shell_scripting_guide | ||
testing_guide | ||
ux_guide | ||
README.md | ||
adding_database_indexes.md | ||
api_graphql_styleguide.md | ||
api_styleguide.md | ||
application_limits.md | ||
architecture.md | ||
auto_devops.md | ||
background_migrations.md | ||
build_test_package.md | ||
changelog.md | ||
chaos_endpoints.md | ||
chatops_on_gitlabcom.md | ||
code_comments.md | ||
code_review.md | ||
creating_enums.md | ||
cycle_analytics.md | ||
dangerbot.md | ||
database_debugging.md | ||
database_query_comments.md | ||
database_review.md | ||
db_dump.md | ||
deleting_migrations.md | ||
diffs.md | ||
distributed_tracing.md | ||
doc_styleguide.md | ||
ee_features.md | ||
elasticsearch.md | ||
emails.md | ||
feature_flags.md | ||
file_storage.md | ||
filtering_by_label.md | ||
foreign_keys.md | ||
frontend.md | ||
gemfile.md | ||
geo.md | ||
git_object_deduplication.md | ||
gitaly.md | ||
github_importer.md | ||
gitlab_diagram_overview.odg | ||
gotchas.md | ||
hash_indexes.md | ||
i18n_guide.md | ||
import_export.md | ||
import_project.md | ||
insert_into_tables_in_batches.md | ||
instrumentation.md | ||
interacting_components.md | ||
internal_api.md | ||
issuable-like-models.md | ||
issue_types.md | ||
iterating_tables_in_batches.md | ||
kubernetes.md | ||
lfs.md | ||
licensed_feature_availability.md | ||
licensing.md | ||
logging.md | ||
mass_insert.md | ||
merge_request_performance_guidelines.md | ||
migration_style_guide.md | ||
module_with_instance_variables.md | ||
multi_version_compatibility.md | ||
namespaces_storage_statistics.md | ||
newlines_styleguide.md | ||
omnibus.md | ||
ordering_table_columns.md | ||
packages.md | ||
performance.md | ||
permissions.md | ||
pipelines.md | ||
policies.md | ||
polling.md | ||
polymorphic_associations.md | ||
post_deployment_migrations.md | ||
profiling.md | ||
projections.md | ||
prometheus.md | ||
prometheus_metrics.md | ||
pry_debugging.md | ||
query_count_limits.md | ||
query_recorder.md | ||
rails_initializers.md | ||
rake_tasks.md | ||
reactive_caching.md | ||
redis.md | ||
reference_processing.md | ||
renaming_features.md | ||
repository_mirroring.md | ||
reusing_abstractions.md | ||
rolling_out_changes_using_feature_flags.md | ||
routing.md | ||
scalability.md | ||
secure_coding_guidelines.md | ||
serializing_data.md | ||
session.md | ||
sha1_as_binary.md | ||
shared_files.md | ||
shell_commands.md | ||
sidekiq_debugging.md | ||
sidekiq_style_guide.md | ||
single_table_inheritance.md | ||
sql.md | ||
swapping_tables.md | ||
testing.md | ||
ui_guide.md | ||
understanding_explain_plans.md | ||
uploads.md | ||
utilities.md | ||
value_stream_analytics.md | ||
verifying_database_capabilities.md | ||
what_requires_downtime.md | ||
writing_documentation.md |
README.md
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 styleguide for contributing to the API
- GraphQL API styleguide 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
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