From Zero to Merged: A Beginner's Guide to Landing Your First Open Source Pull Request

Mar 10, 2026 780 views

My First Open Source Contribution Got Merged πŸŽ‰

Some milestones in a developer's career are defined by the code you ship. This is one of them.

My first pull request has been successfully merged into the @Forem open-source project β€” the platform that powers DEV Community, one of the most widely used developer communities on the web, with a global audience spanning thousands of engineers and technologists.

In the broader context of open-source development, this is a modest contribution. But as a marker of personal and professional growth, it represents something far more significant.

How It Started

Not long ago, open-source contribution felt like something reserved for seasoned engineers with years of production experience. The workflows, the conventions, the unspoken etiquette of collaborative software development β€” none of it was immediately obvious.

That changed when I began systematically exploring public repositories on GitHub, studying how distributed teams coordinate on real-world codebases. During that process, I came across the @Forem project β€” an open-source Ruby on Rails application with an active maintainer community and a well-organized issue tracker. One issue in particular stood out as both approachable and technically meaningful.

That discovery marked the beginning of a deliberate shift in how I approach software development.

The Issue

The bug centered on reaction counters β€” the engagement metrics that track likes and other user interactions on posts across the platform.

Under normal conditions, these counters behave as expected. But when users rapidly toggled reactions in quick succession β€” liking and unliking a post within a short time window β€” the counter could fall out of sync with the actual state of the database, occasionally producing negative values.

This is a classic race condition pattern: multiple asynchronous requests hitting the server in rapid succession, each operating on a shared state without adequate coordination, causing the counter to drift from the ground truth stored in the database.

Issue Link:

https://github.com/forem/forem/issues/22803

The Goal

The fix needed to enforce three core invariants for reaction counters:

  • Always remain accurate relative to the underlying data
  • Never produce a negative value under any interaction pattern
  • Stay consistent with the actual reaction records persisted in the database

Critically, these guarantees had to hold even under high-frequency toggling β€” the edge case that exposed the original defect.

What I Worked On

Addressing the issue required rethinking how reaction count mutations were being handled at the application layer, rather than relying solely on client-side state management.

The changeset included:

  • Enforcing a non-negative floor on all reaction count updates
  • Reconciling counter state against authoritative database records to prevent drift
  • Authoring automated tests to codify the expected behavior and guard against regressions
  • Hardening the system's resilience to rapid, concurrent interaction events

Collectively, these changes strengthen data integrity at a layer that directly affects user-facing metrics β€” the kind of subtle reliability improvement that users never notice when it works, but immediately feel when it doesn't.

The Pull Request

After implementing and validating the fix locally, I opened a pull request against the main Forem repository.

Pull Request Link:

https://github.com/forem/forem/pull/22865

The maintainers conducted a thorough code review, offering targeted feedback that pushed the implementation toward cleaner, more idiomatic patterns. After incorporating those revisions and clearing the project's CI pipeline, the pull request was merged.

That "Merged" badge carries more weight than it might appear.

What I Learned

Beyond the technical mechanics, this process surfaced a few insights worth carrying forward:

1️⃣ Open source is a high-signal learning environment

There's no substitute for working inside a production-grade codebase with real users, real constraints, and real consequences for getting things wrong.

2️⃣ Code review is a force multiplier

Experienced maintainers don't just catch bugs β€” they model better engineering judgment. Every review comment is a compressed lesson in how seasoned developers think about software design.

3️⃣ Incremental improvements compound

A targeted bug fix in a widely deployed platform has a disproportionate impact relative to its size. Reliability improvements at scale benefit every user, even if no single user ever notices the change.

4️⃣ Distributed collaboration is a core engineering skill

Open source is a masterclass in asynchronous, cross-timezone collaboration β€” a working style that increasingly defines how modern software teams operate.

Advice for Developers Who Want to Start

If you've been considering open-source contribution but haven't found the right entry point, the barrier is lower than it looks. A few practical starting points:

  • Target well-scoped, beginner-friendly issues β€” most active projects label them explicitly
  • Study the project's contribution guidelines before writing a single line of code
  • Invest time in understanding the architecture and conventions of the codebase before proposing changes
  • Ask questions openly β€” maintainers generally welcome engaged contributors

Your first contribution doesn't need to be architecturally significant. What matters is developing the habit of engaging with real codebases, real feedback, and real engineering standards. The most important move is simply making the first one.

Final Thoughts

Contributing to an active open-source project is one of the more underrated accelerants in a developer's growth trajectory.

It compresses the kind of experience that typically takes years to accumulate in a single job β€” exposure to large codebases, peer review from engineers with different perspectives, and the discipline of writing code that others will read, maintain, and build upon.

This is one contribution. There will be more.

The pipeline is open.

opensource #github #webdevelopment #devcommunity #softwareengineering #DevCommunity #Forem

https://github.com/shashibhushan21 Merged

https://github.com/shashibhushan21 Issue

Email Congregation from DevCommunity side

Dev Community

Comments

Sign in to comment.
No comments yet. Be the first to comment.

Related Articles

How I Got My First Open Source Pull Request Merged (Begin...