BlogsGitLabRuby Ecosystem Support and Contributions

Ruby Ecosystem Support and Contributions

Ruby Ecosystem Support and Contributions

4
posts
2015–2022

GitLab actively supports and contributes to the Ruby ecosystem, recognizing its importance for developers and companies using Ruby. This includes becoming a member of Ruby Together to fund critical infrastructure like Bundler and RubyGems.org, and exploring further contributions to community projects like RubyBench.org. This initiative aims to ensure the stability, performance, and continued development of essential Ruby tools and services, benefiting the entire community. The platform also leverages the Ruby on Rails framework for its core development, benefiting from its opinionated structure, extensive gem ecosystem, and best practices to maintain code consistency and enable rapid development of complex features. Challenges with Ruby's performance in production have led to strategic rewrites of performance-critical components in Go (e.g., Gitaly) and the use of Vue for frequently accessed pages to improve load times and reduce memory usage. Efforts are ongoing to enable multithreading in Ruby to further optimize memory usage.

2022

Why we're sticking with Ruby on Rails

7/6/2022

This post elaborates on GitLab's continued commitment to Ruby on Rails, highlighting its architectural benefits such as approachability, productivity, and modularity, which enable a modular monolith. It contrasts this with the complexities and costs of microservices, advocating for the 'boring' and well-structured nature of a monolith. The post also touches upon performance optimizations through external services like Gitaly and PostgreSQL, and how Rails' structure supports GitLab's Open Core business model by making the codebase approachable for contributors.

2021

How we automatically fixed thousands of Ruby 2.7 deprecation warnings

2/3/2021

This post details the technical approach taken to automatically fix thousands of Ruby 2.7 deprecation warnings related to keyword arguments. It describes the use of the Deprecation Toolkit gem with RSpec tests to capture runtime warnings and the development of a custom RuboCop check (`Lint/LastKeywordArgument`) to statically analyze and autocorrect these warnings. The integration of this check into GitLab CI pipelines using artifacts is also explained, enabling centralized reporting of remaining warnings.

2018

Why we use Ruby on Rails to build GitLab

10/29/2018

This post details the initial choice of Ruby on Rails for building GitLab, highlighting its benefits for rapid development of complex functionality, code consistency through best practices, and the extensive gem ecosystem. It also discusses challenges related to Ruby's production performance, leading to strategic rewrites in Go for performance-critical services like Gitaly and the use of Vue for frequently accessed UI components to improve load times and memory usage. The post emphasizes how the opinionated nature of Rails aligns with GitLab's mission of enabling contributions by providing a structured and predictable codebase.

2015

GitLab <3 Ruby Together

12/21/2015

GitLab joined Ruby Together as an Emerald member, providing funds to support the maintenance and development of critical Ruby infrastructure such as Bundler, RubyGems, and RubyGems.org. This membership aims to ensure the stability and continued operation of these essential tools for the Ruby community.