DEV Community

Pranav Ghorpade
Pranav Ghorpade

Posted on

From First PR to Better Code: Mentoring a First-Time Open Source Contributor

Today I had a small but meaningful experience as a mentor in IEEE Summer of Code.

I’m currently mentoring contributors working on an open-source Threat Incident Management System, and today I reviewed a first contribution from a first-time contributor.

This reminded me that open source isn't only about writing code. It's also about learning how to collaborate, review code, accept feedback, and improve an implementation.

🚀 The First Contribution

A contributor opened their first pull request to improve the frontend experience of our project.

PR #56 — Add a 1-click copy button for Incident IDs

The goal was simple:

SOC analysts frequently need to copy Incident IDs or IOC identifiers and use them in external tools. Instead of manually selecting and copying the ID, the contributor added a one-click copy button.

Changes included

  • Added a copy button to the Incident Detail page
  • Added a copy button to Incident cards
  • Added visual Copied! feedback
  • Used e.stopPropagation() to prevent unwanted navigation when clicking the button

It was a useful improvement and a great first contribution.

🔍 Reviewing the First PR

The initial implementation worked, but during the review I noticed a few areas where we could make the code more maintainable and robust.

I requested three improvements.

1. Add a Clipboard Fallback

The implementation relied on:

navigator.clipboard
Enter fullscreen mode Exit fullscreen mode

I asked the contributor to add a fallback for environments where the Clipboard API may not be available, particularly in non-HTTPS contexts.

This is a good reminder that:

Code that works in one environment isn't necessarily code that works everywhere.

2. Create a Reusable Component

The copy-button behavior was being implemented in multiple places.

Instead of duplicating the same logic, I suggested moving it into a reusable:

CopyButton.jsx
Enter fullscreen mode Exit fullscreen mode

This makes the component easier to maintain and allows the same behavior to be reused across the application.

The principle is simple:

Don't duplicate behavior when it can be encapsulated into a reusable component.

3. Improve Accessibility

I also asked for an aria-label on the button.

For example:

aria-label="Copy incident ID"
Enter fullscreen mode Exit fullscreen mode

This helps make the interface more accessible and communicates the purpose of an icon-only button to assistive technologies.

🧑‍💻 What I Learned as a Mentor

This PR reminded me that code review isn't just about saying:

"This works. Merge it."

A good review should help contributors understand why a change is recommended.

In this case, the discussion was about:

  • Browser compatibility
  • Component reusability
  • Maintainability
  • Accessibility
  • User experience

And that's one of the things I enjoy about open source.

You get to work with people at different stages of their engineering journey, and a PR becomes more than just a code contribution — it becomes a learning opportunity.

🌱 First Contributions Matter

Seeing a first-time contributor open a PR is genuinely exciting.

Everyone starts somewhere.

That first issue, first commit, first pull request, first code review, and first merge can be an important step in someone's open-source journey.

As a mentor, I don't want contributors to simply submit code that passes a check.

I want them to gradually understand how professional software development works:

Issue
  ↓
Implementation
  ↓
Pull Request
  ↓
Code Review
  ↓
Feedback
  ↓
Improvement
  ↓
Merge
Enter fullscreen mode Exit fullscreen mode

That's the real learning experience.

⚙️ Engineering Workflow

The PR also went through automated checks, including a SonarQube quality gate, and a Vercel preview deployment was generated for testing.

This is another important part of modern software development:

Write
  ↓
Test
  ↓
Review
  ↓
Analyze
  ↓
Deploy
  ↓
Improve
Enter fullscreen mode Exit fullscreen mode

Even a relatively small frontend feature can go through a complete engineering workflow.

🎯 Final Thought

One of the best parts of contributing to open source is that you don't have to learn everything alone.

Someone can contribute code.

Someone else can review it.

The contributor learns from the review.

The project becomes better.

And the community grows.

That's what I hope to encourage through my mentoring experience in IEEE Summer of Code.

This was just one PR, but for a first-time contributor, it can be the beginning of a much bigger open-source journey.

First PR today. Better engineer tomorrow. 🚀


Project

Threat Incident Management System

An open-source security platform designed to help manage and investigate security incidents.

Contribution

PR #56 — 1-Click Copy Button for Incident IDs

Contributor: kunalRay21

Contribution: First open-source contribution

Program: IEEE Summer of Code

Role: Project Mentor

opensource #react #github #softwareengineering

Top comments (0)