Audit and fix gitlab-rails dependencies for Ruby 3.3/3.4 compatibility
We audited https://gitlab.com/gitlab-org/gitlab/-/issues/404750+ gems for Ruby 3.1/3.2 support and require a similar audit process for Ruby 3.3 and 3.4. Our current tentative timeline targets are: * Initial audit complete by 2025-07-31 * Any follow up actions for 3.3 completed by 2025-08-31 ## What to do EMs I would appreciate you help in finding Engineers who can help identify and audit Gems related to your teams for Ruby 3.3/3.4 compatibility. Thank you! ### Instructions Some guidelines for how to use the [gem audit sheet](https://docs.google.com/spreadsheets/d/1GtaHio-lWXC_8wO8ENKKQ-u22eQiqWF77RpvduzWQPE/edit?gid=23097923#gid=23097923) below. Note that the sheet uses color formatting to easily spot problems. Some columns require you to put in `Y` or `N` for this to work. #### Process * Focus on gems first that you have expertise in. If your group owns the area in which this gem is used, fill in `Category/owner` and any other blank rows (version used, use case, etc). * Assign yourself to any gem you're looking at using the last column. You can `@`-autocomplete your GApps user. * Link the gem name in the 1st column to the code or project repository for easy reference. * **When your review is complete, mark the** `Review complete` column with `Y` so it turns from red to green. Done here means you are done performing the review; it does not mean the issues you may have found are fixed. * **If you found problems, set the** `Action required` column to `Y` if you think we must act on these issues, or `N` otherwise. You can also set it to `?` to indicate you are unsure about it. Use the `Comments/actions` column to suggest follow-ups. Prefer to link to GitLab issues here instead of writing walls of text. Use your best judgment to suggest solutions, keeping in mind that this is all done on a best-effort basis. We should focus on high-severity problems. It could be OK to just document edge-case issues for now. * You can use [ruby-audit](https://gitlab.com/splattael/ruby-audit) to help pull the correct gem source code for your testing. Also consider contributing to the project to further automate ruby audits. * For the EMs, please check the box next to your name in the [Manager sign off](https://gitlab.com/groups/gitlab-org/-/epics/8845#manager-sign-off) section once your team has done 1) auditing the gems your team owns and 2) creating follow-up issues when seeing Ruby 3.3/3.4 compatibility issue with those gems. * **IMPORTANT:** Should you resolve any issues you found, e.g. by updating a gem to a newer version or submitting code fixes, **please update the entire row to reflect the new state and toggle** `Action required` to `N` since otherwise it is unclear whether follow-up work is complete or ongoing. #### Considerations * **We will roll out 3.3 first, but are looking to document both 3.3 and 3.4 issues** * Think about use cases that may not be well-covered with automated tests we already run. An example could be edge cases that only trigger with specific data being used. * Pay special attention to gems that use C-extensions. These talk to internal MRI APIs that may change across major Ruby releases. * Browse the gem's issue tracker for any signs of Ruby 3.3/3.4 incompatibilities. * Check whether the gem is running CI builds against Ruby 3.3/3.4 already. # GitLab Categories, Engineering Managers, and Stages (With Assigned Gems) <table> <tr> <th>Category</th> <th>Engineering Manager</th> <th>Stage</th> <th>Gem Count</th> <th>Gems</th> <th>Manager Sign off</th> </tr> <tr> <td> [AI Abstraction Layer](https://gitlab.com/gitlab-org/gitlab/-/issues/537649) </td> <td>Martin Wortschack</td> <td>AI-powered</td> <td>2</td> <td>circuitbox, ruby-openai</td> <td> :white_check_mark: </td> </tr> <tr> <td> [API](https://gitlab.com/gitlab-org/gitlab/-/issues/521839) </td> <td>Martin Wortschack</td> <td>Foundations</td> <td>6</td> <td>apollo_upload_server, grape, grape-entity, grape-path-helpers, grape_logging, graphql</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Application Instrumentation](https://gitlab.com/gitlab-org/gitlab/-/issues/521691) </td> <td>Ashwin Bilgi</td> <td>Monitor</td> <td>1</td> <td>gitlab-sdk</td> <td> :white_check_mark: </td> </tr> <tr> <td>Backup/Restore</td> <td>John Jarvis</td> <td>Data Access</td> <td>1</td> <td>gitlab-backup-cli</td> <td></td> </tr> <tr> <td>Cloud Connector</td> <td>Paul John Phillips</td> <td>Production Engineering</td> <td>1</td> <td>gitlab-cloud-connector</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Continuous Integration](https://gitlab.com/gitlab-org/gitlab/-/issues/537675) </td> <td>Caroline Simpson</td> <td>Verify</td> <td>1</td> <td>fugit</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Database](https://gitlab.com/gitlab-org/gitlab/-/issues/537676) </td> <td>Alex Ives</td> <td>Data Access</td> <td>4</td> <td>click_house-client, marginalia, pg, pg_query</td> <td> :white_check_mark: </td> </tr> <tr> <td>Deployment Management</td> <td>Nicolò Maria Mezzopera</td> <td>Deploy</td> <td>1</td> <td>gitlab-kas-grpc</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Gitaly](https://gitlab.com/gitlab-org/gitlab/-/issues/541397) </td> <td>John Cai</td> <td>Data Access</td> <td>2</td> <td>gitaly, rugged</td> <td></td> </tr> <tr> <td>Global Search</td> <td>Changzheng Liu</td> <td>Foundations</td> <td>9</td> <td>aws-sdk-cloudformation, aws-sdk-core, aws-sdk-s3, elasticsearch-api, elasticsearch-model, elasticsearch-rails, faraday-typhoeus, faraday_middleware-aws-sigv4, typhoeus</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Importers](https://gitlab.com/gitlab-org/gitlab/-/issues/521839) </td> <td>Martin Wortschack</td> <td>Foundations</td> <td>4</td> <td>faraday-multipart, graphlient, octokit, ruby-fogbugz</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Insider Threat](https://gitlab.com/gitlab-org/gitlab/-/issues/541398) </td> <td>Jay Swain</td> <td>Software Supply Chain Security</td> <td>5</td> <td>akismet, invisible_captcha, recaptcha, spamcheck, telesignenterprise</td> <td> :white_check_mark: </td> </tr> <tr> <td>Internationalization</td> <td>Martin Wortschack</td> <td>Foundations</td> <td>2</td> <td>gettext_i18n_rails, rails-i18n</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Markdown](https://gitlab.com/gitlab-org/gitlab/-/issues/541399) </td> <td>Vladimir Shushlin</td> <td>Plan</td> <td>16</td> <td>RedCloth, asciidoctor, asciidoctor-include-ext, asciidoctor-kroki, asciidoctor-plantuml, commonmarker, creole, deckar01-task_list, gitlab-glfm-markdown, gitlab-markup, html-pipeline, kramdown, org-ruby, tanuki_emoji, unicode-emoji, wikicloth</td> <td> :white_check_mark: https://github.com/asciidoctor/asciidoctor/issues/4690 </td> </tr> <tr> <td>Mobile DevOps</td> <td>Not specified</td> <td>Mobile</td> <td>2</td> <td>CFPropertyList, app_store_connect</td> <td> :white_check_mark: </td> </tr> <tr> <td>Notifications</td> <td>Sam Beckham</td> <td>Foundations</td> <td>1</td> <td>premailer-rails</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Observability](https://gitlab.com/gitlab-org/gitlab/-/issues/521654) </td> <td>Nicholas Klick</td> <td>Monitor</td> <td>26</td> <td>opentelemetry-exporter-otlp, opentelemetry-instrumentation-action_pack, opentelemetry-instrumentation-action_view, opentelemetry-instrumentation-active_job, opentelemetry-instrumentation-active_record, opentelemetry-instrumentation-active_support, opentelemetry-instrumentation-aws_sdk, opentelemetry-instrumentation-concurrent_ruby, opentelemetry-instrumentation-ethon, opentelemetry-instrumentation-excon, opentelemetry-instrumentation-faraday, opentelemetry-instrumentation-grape, opentelemetry-instrumentation-graphql, opentelemetry-instrumentation-http, opentelemetry-instrumentation-http_client, opentelemetry-instrumentation-net_http, opentelemetry-instrumentation-pg, opentelemetry-instrumentation-rack, opentelemetry-instrumentation-rails, opentelemetry-instrumentation-rake, opentelemetry-instrumentation-redis, opentelemetry-instrumentation-sidekiq, opentelemetry-sdk, sentry-rails, sentry-ruby, sentry-sidekiq</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Package Registry](https://gitlab.com/gitlab-org/gitlab/-/issues/541437) </td> <td>Crystal Poole</td> <td>Package</td> <td>1</td> <td>arr-pm</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Pages](https://gitlab.com/gitlab-org/gitlab/-/issues/541450) </td> <td>Alexandru Croitor</td> <td>Plan</td> <td>3</td> <td>acme-client, rubyzip, validates_hostname</td> <td> :white_check_mark: </td> </tr> <tr> <td>Product Analytics</td> <td>Nicholas Klick</td> <td>Monitor</td> <td>2</td> <td>ohai, snowplow-tracker</td> <td></td> </tr> <tr> <td> [Redis](https://gitlab.com/gitlab-org/gitlab/-/issues/541452) </td> <td>John Jarvis</td> <td>Data Access</td> <td>3</td> <td>redis, redis-actionpack, redis-clustering</td> <td> :white_check_mark: </td> </tr> <tr> <td>Scalability</td> <td>Liam McAndrew</td> <td>Production Engineering</td> <td>2</td> <td>sidekiq, sidekiq-cron</td> <td></td> </tr> <tr> <td> [Secret Detection](https://gitlab.com/gitlab-org/gitlab/-/issues/541454) </td> <td>Amar Patel</td> <td>Application Security Testing</td> <td>1</td> <td>gitlab-secret_detection</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Software Composition Analysis](https://gitlab.com/gitlab-org/gitlab/-/issues/541455) </td> <td>Nick Ilieskou</td> <td>Application Security Testing</td> <td>2</td> <td>cvss-suite, semver_dialects</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Source Code Management](https://gitlab.com/gitlab-org/gitlab/-/issues/535988) </td> <td>André Luís</td> <td>Create</td> <td>1</td> <td>gpgme</td> <td> :white_check_mark: </td> </tr> <tr> <td> [System Access](https://gitlab.com/gitlab-org/gitlab/-/issues/525599) </td> <td>Adil Farrukh</td> <td>Software Supply Chain Security</td> <td>32</td> <td>bcrypt, devise, devise-two-factor, doorkeeper, doorkeeper-device_authorization_grant, doorkeeper-openid_connect, duo_api, gitlab_omniauth-ldap, gssapi, i18n_data, jwt, net-ldap, oauth2, omniauth, omniauth-alicloud, omniauth-atlassian-oauth2, omniauth-auth0, omniauth-azure-activedirectory-v2, omniauth-github, omniauth-gitlab, omniauth-google-oauth2, omniauth-oauth2-generic, omniauth-salesforce, omniauth-saml, omniauth-shibboleth-redux, omniauth_crowd, omniauth_openid_connect, openid_connect, rack-oauth2, rqrcode, ruby-saml, timfel-krb5-auth</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Team Planning](https://gitlab.com/gitlab-org/gitlab/-/issues/541456) </td> <td>Donald Cook</td> <td>Plan</td> <td>3</td> <td>diff_match_patch, icalendar, truncato</td> <td> :white_check_mark: (@acroitor) </td> </tr> <tr> <td>Vulnerability Management</td> <td>Neil McCorrison</td> <td>Security Risk Management</td> <td>1</td> <td>gitlab-security_report_schemas</td> <td> :white_check_mark: </td> </tr> <tr> <td> [Workspaces](https://gitlab.com/gitlab-org/gitlab/-/issues/541457) </td> <td>Adebayo Adesanya</td> <td>Create</td> <td>1</td> <td>devfile</td> <td> :white_check_mark: </td> </tr> <tr> <td> **Total** </td> <td></td> <td></td> <td> **136** </td> <td></td> <td></td> </tr> </table> Note: There are also 146 gems categorized as "shared" which are not attributed to a specific feature category. Total across all gems (including shared): 282
epic