Back to Explorer
Beginner Friendly Open-Source Ruby

Good First Issues in Ruby

Explore curated starter issues in high-scoring Ruby repositories. Every listed issue belongs to a welcoming repository scored by C-Rank™ on PR merge rates, review responsiveness, and first-timer acceptance.

Updated: Thu, 15 Oct 2026 UTC (Live GitHub Sync)
Real-Time Radar

Arm Issue Sniper for fresh Ruby beginner issues

Beginner issues in welcoming S/A-Tier repositories get snatched within 15 minutes. Receive instant alerts on Discord, Telegram, or Email the minute a maintainer opens a new task.

Live Good First Issues (30)

Real-Time Open GitHub Issues
rubyevents/rubyevents569 Tier S · 78 pts
#2182Opened 5 days ago
Add Nagoya Ruby Kaigi 05

https://regional.rubykaigi.org/nagoya05/ https://x.com/kamipo/status/2102513925975888238

good first issuecontent
rubyevents/rubyevents569 Tier S · 78 pts
#2178Opened 6 days ago
Add Hokuriku RubyKaigi 02

https://regional.rubykaigi.org/hokuriku02/

good first issuecontent
fjordllc/bootcamp297 Tier A · 69 pts
#10607Opened 8 days ago
所要時間の目安の説明文を読みやすくする

概要 プラクティスの「所要時間の目安」の説明文を、意味を保ったまま読みやすくする。 修正内容 修正前:人によっては時間のかかり方は様々です。この数字はあくまで一つの目安として捉えてください。 修正後:かかる時間は人によって異なります。この数字はあくまで一つの目安として捉えてください。 対象ファイル app/views/practices/show.html.slim の62行目 現在の状態と作業範囲 対象の説明文は、現在 Slim のコメントアウトされたブロック内にある。この Issue では既存の文言のみ修正し、コメントアウトの解除や画面への再表示は行わない。 完了条件 上記の説明文が修正されている。 差分を確認し、コメントアウトやインデント、表示条件に変更がないことを確認する。

1good first issue
fjordllc/bootcamp297 Tier A · 69 pts
#10606Opened 8 days ago
アドバイザー向け登録メールの助詞を修正する

概要 アドバイザー向け登録メールの助詞を修正する。 修正内容 修正前:コメントも自由ですることができますので、 修正後:コメントも自由にすることができますので、 対象ファイル app/views/user_mailer/_adviser.html.slim の11行目 完了条件 「自由でする」が「自由にする」に修正されている。 差分を確認し、文言以外に変更がないことを確認する。 メールの送信処理や宛先、その他の案内内容は変更しない。

1good first issue
fjordllc/bootcamp297 Tier A · 69 pts
#10605Opened 8 days ago
質問削除の確認メッセージの誤字を修正する

概要 質問を削除するときの確認メッセージにある誤字を修正する。 修正内容 修正前:この質問を解決することを即すようにしてください。 修正後:この質問を解決することを促すようにしてください。 対象ファイル app/views/questions/_question_body.html.slim の18行目 完了条件 「即す」が「促す」に修正されている。 ローカル環境でメンターとして質問詳細を開き、「削除する」を押して確認ダイアログの文言を確認する。確認後はキャンセルする。 文言のみの修正とし、削除処理や表示条件は変更しない。

1good first issue
fjordllc/bootcamp297 Tier A · 69 pts
#10600Opened 8 days ago
コーディングテスト並び替え画面の「プラクティクス」を修正する

概要 メンター向けのコーディングテスト並び替え画面の見出しに「プラクティクス」と表示されています。同じ画面のページタイトルやアプリ内の表記に合わせて「プラクティス」に修正してください。 受け入れ条件 画面の見出しが「(プラクティス名)プラクティスのコーディングテスト並び替え」と表示される 他の画面文言や並び替えの動作に影響がない 関連コード app/views/mentor/practices/coding_tests/index.html.slim:18

バグ1good first issue
#16425Opened 15 days ago
Helm: images inside lists in values files are never detected (find_images_in_hash never calls handle_array_value)

Is there an existing issue for this? I have searched the existing issues Package ecosystem Helm (package-ecosystem: helm) Package manager version Dependabot CLI v1.93.0, updater image ghcr.io/dependabot/dependabot-updater-helm@sha256:bb4961986f6a76b68456f67ad2aadd589ec9c70f73b44393b11d7d237eaaefa5 Manifest location and content before the Dependabot update Any values file whose image sits inside a list. That is the shape of every pod template passed through values, for example the gha-runner-scale-set chart's runner container: template: spec: containers: - name: runner image: ghcr.io/actions/actions-runner:2.335.1 dependabot.yml content version: 2 updates: - package-ecosystem: helm directory: /deploy/infrastructure/runners/base schedule: interval: weekly What you expected to see, versus what you actually saw Expected: an image inside a list is detected and updated, the same as an image at a map path. Actual: it is never detected. With the reproduct

L: ruby:bundlerL: github:actionsL: elmL: docker
1
dependabot/dependabot-core5,723 Tier A · 61 pts
#16337Opened 27 days ago
Python: implement full-unlock so security updates can bump a parent to fix a vulnerable transitive dependency

Is there an existing issue for this? I have searched the existing issues Feature description Summary For pip, Poetry, pipenv, pip-compile, and uv, Dependabot security updates cannot fix a vulnerable transitive dependency when a direct dependency caps it. The update fails with update_not_possible ("One or more other dependencies require a version that is incompatible with this update"). The updater's unlock ladder in updater/lib/dependabot/updater/operations/create_security_update_pull_request.rb would try requirements_to_unlock: :all next, but Dependabot::Python::UpdateChecker#latest_version_resolvable_with_full_unlock? is hardcoded to false and #updated_dependencies_after_full_unlock raises NotImplementedError. Dependabot::Uv::UpdateChecker inherits both. I'm requesting that the Python checker implement full unlock, so that a security update can raise the capping parent's constraint together with the transitive fix, the way npm has done since 2022. History The stub dates to Decembe

T: feature-requestL: python:pipL: python:poetryhelp-wanted
huginn/huginn49,992 Tier D · 13 pts
#3748Opened 29 days ago
Make UI translations pluggable as add-on gems

Huginn currently has no translations. UI strings in views and helpers are hard-coded in English, and config/locales/en.yml only holds a handful of keys for Devise and distance_in_words. Contributed locale files such as #3687 (Korean) therefore cannot change what users see yet. The goal is to let translations be added as gems, in the same way Agents can be added through ADDITIONAL_GEMS, so that each language can be maintained by its own community on its own schedule. This is a good first contribution: the work can be split into small, self-contained pull requests, each of which is useful on its own. Replace hard-coded strings in a view or helper with t(...) calls and add the English keys to config/locales/en.yml. One view per PR is fine. Load locale files from add-on gems, for example through config.i18n.load_path. Let the locale be chosen per instance (an environment variable) and later per user. Document how to publish a translation gem. Agent descriptions and option hints ar

enhancementhelp wanted
1
#7063Opened 1 month ago
Wikidata stats card is overwhelming

Currently, the Wikidata stats card shown for courses that have Wikidata edits is pretty overpowering, in terms of the layout and design. A few independent changes would help to start out with: It should be collapsible, and collapsed by default for courses where the home wiki is not Wikidata. All entries with 0 edits should not be rendered, and the entire category should not be rendered if all the entries within are 0. (Relatedly, a more complete design refresh is still wanted: #6877 )

bugnewcomer friendlyReactgood first issue
3
#7059Opened 1 month ago
Admins should have an easy way to enqueue a non-full update for a course

Current Behavior: Currently, admins have access to a "Manage course flags" view that easily allow them to set needs_update to 1 for a given course. That's a good way to force a new full update for historical courses that ended more than 30 days ago and won't be queued automatically again otherwise. The problem with this is that, after a full update, pageviews are always zero. This is undesirable but it's expected due to a circular dependency between updating average pageviews, and updating caches. See PR #6456 Desired Behavior: Admins should be provided with a way for enqueuing a non-full update for a historical course, so that the pageviews gets populated. I usually do that by manually updating the course_wiki_timeslices table and set an empty timeslice with needs_update to 1. That makes the course to be queued again for a "normal" update so pageviews metrics are calculated. But ideally we should have a cleaner way of doing that, maybe having an admin view to manually enqueue an upda

enhancementnewcomer friendlygood first issueruby
2
#2373Opened 1 month ago
Use the spec-recommended 10000ms default interval for the stdout exporter

Spec requirement The stdout exporter SHOULD pair with a periodic exporting MetricReader using a default exportIntervalMilliseconds of 10000 for this exporter specifically (sdk_exporters/stdout.md:40-46). Current behavior configurator_patch.rb:37 (permalink) wires ConsoleMetricPullExporter into a PeriodicMetricReader.new(exporter: ...) correctly, but PeriodicMetricReader's interval defaults to OTEL_METRIC_EXPORT_INTERVAL/60000 (export/periodic_metric_reader.rb:25 (permalink)), the general default — nothing special-cases the console exporter's interval to 10000ms. Suggested fix When wiring the console exporter's default PeriodicMetricReader in configurator_patch.rb, pass export_interval_millis: 10_000 explicitly rather than relying on the general-purpose default. Related rows in SPEC_COMPLIANCE_METRICS.md STDOUT-3

buggood first issuespec-compliancemetrics
2
#2372Opened 1 month ago
Read `OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION`

Spec requirement The OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION env var (explicit_bucket_histogram/base2_exponential_bucket_histogram, default explicit_bucket_histogram) SHOULD be supported (sdk_exporters/otlp.md:43-70). Current behavior The default (ExplicitBucketHistogram, instrument/histogram.rb (permalink) default aggregation) is correct, but the env var itself is never read in exporter/otlp-metrics or metrics_sdk. A user can't switch the default to exponential histograms via configuration, only by explicitly registering a View. Suggested fix Read OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION in the OTLP exporter or metrics_sdk configurator, and use it to select the default histogram aggregation when no View overrides it. Related rows in SPEC_COMPLIANCE_METRICS.md OTLP-3

enhancementgood first issuespec-compliancemetrics
1
#2357Opened 1 month ago
Make instrument name conflict detection case-insensitive

Spec requirement Instrument names are case-insensitive; a second registration differing only by case MUST reuse the first-seen name and log a message (sdk.md:1017-1031). Current behavior @instrument_registry is a plain Ruby Hash keyed by the literal (case-sensitive) name string (meter.rb:32,258-260 (permalink)), so create_counter("requestCount") followed by create_counter("RequestCount") registers two independent instruments instead of being detected as the same name under case-insensitive comparison. Suggested fix Normalize the registry key (e.g. downcase) when checking for an existing instrument, while preserving and reusing the first-seen name's original casing, and log a message on the case-differing collision. Related rows in SPEC_COMPLIANCE_METRICS.md SDK-37

buggood first issuespec-compliancemetrics
1
fjordllc/bootcamp297 Tier A · 69 pts
#10520Opened 1 month ago
WIP状態に応じた遷移先を返すクラスの名前と責務を明確にする

概要 Redirection は、リソースのWIP状態に応じて保存後の遷移先URLを返すクラスである。 現在のクラス名からは具体的な責務が分かりにくく、公開メソッドの determin_url にもスペルミスがある。 クラス名とメソッド名を実際の責務に合った名前へ変更する。遷移先など、アプリケーションの挙動は変更しない。 背景 Redirection#determin_url は、次の条件でURLを返している。 リソースがWIPの場合は編集画面のURL WIPでない場合は詳細画面のURL Redirection という名前では、リダイレクトを実行するクラスなのか、URLを生成するクラスなのか判断しにくい。また、determin_url は英語としては determine_url であり、正しいスペルでコードを検索できない。 この処理は提出物、Q&A、イベント、Docs、動画、ペアワークなど複数のコントローラから利用されているため

1good first issuerefactoring
fjordllc/bootcamp297 Tier A · 69 pts
#10518Opened 1 month ago
`MarkdownHelper` に残っている未使用の検索補助メソッドを削除する

概要 MarkdownHelper に、現在の検索処理では使用されていない検索補助メソッドが残っている。 未使用になったメソッドを削除し、MarkdownHelper の責務をMarkdown変換に関する処理へ整理する。 アプリケーションの挙動は変更しない。 背景 MarkdownHelper には process_special_case と find_match_in_text が定義されているが、現在の検索処理では SearchHelper に定義された同名メソッドが使用されている。 MarkdownHelper#process_special_case を呼び出している箇所はなく、そこからのみ呼び出される find_match_in_text も使用されていない。 なお、process_markdown_case は別の死蔵コード整理の対象になっているため、本Issueには含めない。 対象ファイル app/helpers/markdown_helper.rb 対応内容 MarkdownHelper#process_special_case を削除する MarkdownHelper#find_match_in_text を削除する SearchHelper の検索結

1good first issuerefactoring
activeagents/activeagent973 Tier A · 63 pts
#404Opened 1 month ago
Documentation backlog

One place for the open documentation requests, so the individual issues (some from mid-2025) can be closed as duplicates of this list. Check items off as pages land; every code example in the docs should come from a tested file under test/ per contributing/documentation. Guides and sections Generative UI section (#68). How agents render HTML/Turbo responses from action views. Multi-agent workflows and interactions (#87). Examples of agents calling agents, supervisors, and hand-offs. More output and usage examples (#132). Response shapes, response.message, structured output, embeddings. Tool usage and caching (#174). Tool-call round trips, tools_function, and provider caching options. Model supported actions (#195). Document and test which providers/models support tools, structured output, streaming, and multimodal input. MCP as tools: tests, docs, examples (#208). Both the Anthropic and OpenAI mcps: shapes, allowed_tools / require_approval, and the engine's /mcp facade. OpenTel

documentationhelp wanted
errbit/errbit4,269 Tier A · 67 ptsPR #3196 In Progress
#3125Opened 1 month ago
Review potentially unused Errbit code identified by static analysis

unused 0.4.0 reported the following 19 high-likelihood candidates across 9 files. These are suggestions requiring manual verification, not confirmed dead code. Findings spec/models/error_report_spec.rb API_VERSION bin/rails APP_PATH app/models/problem.rb attribute_count_decrease merged? app/models/user.rb can_create_github_issues? github_login= password_required? watching? app/models/app.rb find_by_id! spec/errbit_plugin/mock_issue_tracker.rb comments_allowed? app/assets/stylesheets/mailers/mailer.css a.bold p.heading p.monospace span.bold app/assets/stylesheets/reset.css applet dfn strike app/assets/stylesheets/bootstrap.css form-control-lg::-webkit-file-upload-button form-control-sm::-webkit-file-upload-button Suggested follow-up Review each candidate against Rails conventions, callbacks, reflection, view usage, routes, JavaScript usage, and test support before removing anything.

maintenancehelp-wantedgood first issue
1
fjordllc/bootcamp297 Tier A · 69 pts
#10493Opened 1 month ago
画像アップロードの説明書きの誤字を修正する

概要 以下画像のアップロードについての説明書きに誤字があるため、どちらも 630px に修正をお願いします。 app/views/mentor/practices/_form.html.slim bootcamp/app/views/mentor/practices/_form.html.slim Line 117 in ed13f88 p 画像サイズ: 1200px × 630xp app/views/articles/_form.html.slim bootcamp/app/views/articles/_form.html.slim Line 128 in ed13f88 | 画像サイズは必ず 1200px × 630xpx でお願いします。

バグ1good first issue
fjordllc/bootcamp297 Tier A · 69 pts
#10484Opened 1 month ago
クリアしていなくても他の人の提出物が見れる提出物に表示されるメッセージ文の修正

このプラクティスは、OKをもらっていなくても他の人の提出物を閲覧できます。 ↓ このプラクティスは、合格をもらっていなくても他の人の提出物を閲覧できます。 修正をお願いします。

1good first issue
4
#16026Opened 1 month ago
Bun 1.4 uses lockfile v2 which dependabot currently does not support

Is there an existing issue for this? I have searched the existing issues Package ecosystem bun Package manager version bun 1.4 Language version bun 1.4 Manifest location and content before the Dependabot update No response dependabot.yml content --- # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file version: 2 updates: - package-ecosystem: "bun" directory: "/" schedule: interval: "monthly" day: "monday" time: "09:00" timezone: "Asia/Singapore" commit-message: prefix: "build" groups: app-dependencies: patterns: - "*" update-types: - "minor" - "patch" - package-ecosystem: "docker" directory: "/" schedule: interval: "monthly" day: "monday" time: "09:00" timezone: "Asia/Singapore" commit-message: prefix: "ci" groups: docker-deps: patterns:

T: feature-requesthelp-wantedL: javascript
r-uby-dev/llm136 Tier B · 51 pts
#163Opened 1 month ago
DeepSeek: add support for Files API
good first issue
r-uby-dev/llm136 Tier B · 51 pts
#162Opened 1 month ago
DeepSeek: add support for vision API
good first issue
r-uby-dev/llm136 Tier B · 51 pts
#161Opened 1 month ago
repl: alias `/compact` as `/keep`

Problem This command even confuses me, which is not a good sign. 🙂 Proposal A better way to think about it is as /keep. Because you keep 20% of the messages (eg /keep 20%). Or you keep X number of messages (eg /keep X). /compact 20% and /compact X just doesn't communicate the same thing conceptually so I always have to stop and think about it.

good first issue
1
fjordllc/bootcamp297 Tier A · 69 pts
#10416Opened 2 months ago
メンター、アドバイザーダッシュボードの余計な右の余白を削除

メンター or アドバイザーでログイン。 ダッシュボードにアクセス。 この余計なスペースをなくす。 bootcamp/app/views/home/index.html.slim の 13行目あたり。 メンターまたはアドバイザーでログインしたときは、 .has-side-nav がつかないようにする。

1good first issue
rubyforgood/casa382 Tier S · 71 pts
#7106Opened 2 months ago
Include the org in CASA case URLs and finish the switch away from database ids

What type(s) of user does this feature affect? All signed-in user types — volunteers, supervisors, and admins all navigate to CASA case pages. All casa admins are affected indirectly (they administer orgs, whose identifier would become part of the URL). Description CASA case URLs should identify a case the way humans and courts do — by organization + case number — instead of leaning on our internal database primary key. Important: half of this is already built. CasaCase already uses FriendlyId, so today's URLs are usually already case-number based, not integer based: app/models/casa_case.rb:26 — friendly_id :case_number, use: :scoped, scope: :casa_org FriendlyId's to_param returns the slug when present (friendly_id-5.7.0/lib/friendly_id/base.rb:262), so casa_case_path(casa_case) renders /casa_cases/cina-21-1234 Nine call sites already resolve slugs via CasaCase.friendly.find (casa_cases_controller.rb:219, court_dates_controller.rb:69, placements_controller.rb:59, emancipations

Help Wanted✨ New Feature
1
rubyforgood/casa382 Tier S · 71 pts
#7104Opened 2 months ago
Bug: court report .docx download is blocked with a "virus detected" warning in Edge on Windows

Reported by Voices for Children Montgomery in the 2026-08-07 stakeholder sync. Distinct from #7093 — see "Not the same bug as #7093" below. Impacted User Types volunteers, case supervisors, and org staff at the reporting org — multiple people, not one machine Environment prod. Microsoft Edge on Windows. Downloading a generated court report .docx. Current Behavior Generating a court report succeeds, but the browser download is blocked with a "virus detected" warning. The user has to go into their antivirus software and tell it to ignore the detection to download anyway. Stakeholder's words, from the sync: Every time I download a report and other people download a report, it says viruses are detected. And then I have to go into like the virus detection software to say to ignore the virus and download anyway … which is kind of obnoxious and that's been happening for a while [approximately six months]. NoteScreenshot pending. A redacted screenshot of the Edge warning was captured

Type: BugHelp Wanted📊 Reportsno-issue-activity
1
hackclub/hcb874 Tier A · 60 pts
#14529Opened 2 months ago
[Blazer] Configure email notifications to go to hcb-engr@

At the moment, email notifications get sent to Intercom. It has latency bc we gotta wait for ops to assign the ticket to us. Let's reconfigure Blazer so emails go to hcb-engr@ by default

Beginner Friendly
e621ng/e621ng579 Tier A · 66 pts
#2346Opened 2 months ago
[UI] Split `SVGIcons` into subsets of icons

SVGIcons, being included in the main bundle, is intentionally kept small to limit bundle size. However, splitting this into smaller icon sets that are imported a la carte by its consumers reduces the bundle size for all consumers that wouldn't use more than 1 or 2 subsets, while also freeing us to use more icons. Mockup // SvgIconSet.ts export default class SvgIconSet<Icons extends string> { private static readonly ICONS: { [k: string]: string } = {}; protected static register (iconMap: { [k: string]: string }) { for(const [k, v] in Object.entries(iconMap)) { if ((this.ICONS[k] || v) !== v) throw new Error(`"${k}" is being overwritten with an unexpected value ("${v}" instead of "${this.ICONS[k]}")`); this.ICONS[k] = v; } } protected constructor (icons: { [k: Icons]: string }) { SvgIconsSet.register(icons); } protected static render (name: string): SVGElement | null { if (!(name in this.ICONS)) return null; const svg = document.createElementN

Type: FeatureLang: JSUIGood first issue
#14593Opened 2 months ago
Logo and/or promo images : incorrect media files are still recorded

Description When updating images on enterprise settings panel, when an incorrect media file is uploaded, the message error is displayed, but the file is still recorded It is linked to the PR #14552 Expected Behavior Incorrect media files should not be recorded Steps to Reproduce Go to Enterprise Settings Panel, and choose the IMAGES section Upload an incorrect file (.pdf or .doc for example) for the logo or promo image Errors are displayed, but the file is recorded, the "Remove image" button is displayed. Severity bug-s4: it's annoying, but you can use it

good first issuebug-s4

Top Ruby Repositories with Beginner Issues (20)

Updated Daily via GitHub GraphQL
rubyevents
rubyevents
rubyevents/rubyevents
S•Elite
569·Ruby

On a mission to index all Ruby events.

82%
Merge Rate
5h
Review Time
80%
1st-Timers
3 GFI
Scorecard
WikiEducationFoundation
WikiEduDashboard
WikiEducationFoundation/WikiEduDashboard
S•Elite
430·Ruby

Wiki Education Foundation's Wikipedia course dashboard system

78%
Merge Rate
5h
Review Time
100%
1st-Timers
2 GFI
Scorecard
rubygems
rubygems.org
rubygems/rubygems.org
S•Elite
2.4k·Ruby

The Ruby community's gem hosting service.

73%
Merge Rate
3h
Review Time
67%
1st-Timers
1 GFI
Scorecard
rubyforgood
casa
rubyforgood/casa
S•EliteLow Sample
382·Ruby

Volunteer management system for nonprofit CASA, which serves foster youth in counties across America.

#casa#casa-chapters#casa-volunteers
88%
Merge Rate
1h
Review Time
100%
1st-Timers
5 GFI
Scorecard
truffleruby
truffleruby
truffleruby/truffleruby
S•Elite
3.2k·Ruby

A high performance implementation of the Ruby programming language, built on GraalVM.

#graalvm#hacktoberfest#ruby
77%
Merge Rate
9h
Review Time
50%
1st-Timers
1 GFI
Scorecard
fjordllc
bootcamp
fjordllc/bootcamp
A•Welcoming
297·Ruby

プログラマー向けEラーニングシステム

63%
Merge Rate
2h
Review Time
67%
1st-Timers
1 GFI
Scorecard
bolshakov
stoplight
bolshakov/stoplight
A•Welcoming
630·Ruby

:traffic_light: Traffic control for code.

69%
Merge Rate
11h
Review Time
67%
1st-Timers
2 GFI
Scorecard
errbit
errbit
errbit/errbit
A•Welcoming
4.3k·Ruby

The open source error catcher that's Airbrake API compliant :ukraine:

#airbrake#crash-reporting#error-monitoring
56%
Merge Rate
3h
Review Time
100%
1st-Timers
1 GFI
Scorecard
e621ng
e621ng
e621ng/e621ng
A•Welcoming
579·Ruby

No repository description available.

86%
Merge Rate
11d
Review Time
33%
1st-Timers
20 GFI
Scorecard
manyfold3d
manyfold
manyfold3d/manyfold
A•Welcoming
2.2k·Ruby

A self-hosted digital asset manager for 3d print files.

65%
Merge Rate
2d
Review Time
100%
1st-Timers
8 GFI
Scorecard
ManageIQ
manageiq
ManageIQ/manageiq
A•Welcoming
1.4k·Ruby

ManageIQ Open-Source Management Platform

#amazon#cloud#containers
53%
Merge Rate
2h
Review Time
60%
1st-Timers
2 GFI
Scorecard
openfoodfoundation
openfoodnetwork
openfoodfoundation/openfoodnetwork
A•Welcoming
1.3k·Ruby

Connect suppliers, distributors and consumers to trade local produce.

46%
Merge Rate
2h
Review Time
44%
1st-Timers
3 GFI
Scorecard
activeagents
activeagent
activeagents/activeagent
A•Welcoming
973·Ruby

ActiveAgent Rails framework for Agent Apps

74%
Merge Rate
19h
Review Time
100%
1st-Timers
2 GFI
Scorecard
open-telemetry
opentelemetry-ruby
open-telemetry/opentelemetry-ruby
A•Welcoming
610·Ruby

OpenTelemetry Ruby API & SDK, and related gems

50%
Merge Rate
2h
Review Time
63%
1st-Timers
2 GFI
Scorecard
dependabot
dependabot-core
dependabot/dependabot-core
A•Welcoming
5.7k·Ruby

🤖 Dependabot's core logic for creating update PRs.

54%
Merge Rate
6h
Review Time
44%
1st-Timers
2 GFI
Scorecard
Homebrew
homebrew-core
Homebrew/homebrew-core
A•Welcoming
15.6k·Ruby

🍻 Default and OSS formulae (built-from-source packages) for the package manager for everywhere

12%
Merge Rate
5h
Review Time
18%
1st-Timers
1 GFI
Scorecard
hackclub
hcb
hackclub/hcb
A•Welcoming
874·Ruby

🏦 Open source, transparency-orientated fiscal sponsorship platform for hackers & creatives.

9%
Merge Rate
13h
Review Time
11%
1st-Timers
1 GFI
Scorecard
r-uby-dev
llm
r-uby-dev/llm
B•SolidLow Sample
136·Ruby

cruby's capable AI runtime

#a2a#a2a-client#ai
11%
Merge Rate
<1h
Review Time
0%
1st-Timers
2 GFI
Scorecard
rage-rb
rage
rage-rb/rage
B•SolidLow Sample
1.4k·Ruby

Fiber-based Ruby web framework combining Rails ergonomics with a unified runtime

50%
Merge Rate
12d
Review Time
0%
1st-Timers
1 GFI
Scorecard
concerto
concerto
concerto/concerto
B•Solid
485·Ruby

Concerto Digital Signage System

#bulletin-board#digital-signage
50%
Merge Rate
2d
Review Time
0%
1st-Timers
2 GFI
Scorecard

How to make your first Ruby open-source pull request

Finding approachable Good First Issues in Ruby allows you to build real-world software engineering experience. Instead of submitting PRs to abandoned repositories, GetMerged verifies maintainer review speeds and first-timer acceptance rates before you write a single line of code.

Select any issue above to claim it directly on GitHub, or click a repository to inspect full maintainer review turnaround metrics and triage guidance!

Get this week's top welcoming repos + fresh Good First Issues for Ruby

Free weekly email, scoped to Ruby. No account needed - confirm once and unsubscribe anytime.