The O-word
Yeah, the “open source” word. It sounds cool to people who don’t know what it actually means, and somehow, still sounds cool to those who do. That’s the magic, I guess.
So there I was, mindlessly browsing YouTube, when I stumbled across a video about GSoC. That’s when it hit me: I didn’t even look through it this year. Thankfully, it was the very day collaborators had just been announced. Close call.
Naturally, I scrambled through the list, mentally bookmarking a few orgs I might throw a proposal at. But then it hit me again—parallel programming review paper pending, and it carried presentation weightage. Panic? So I opened up Electron.js’s GitHub repo to look for something fixable. You saw this coming, didn’t you?
The Issue
Turns out, someone else had already opened a feature request—a neat little idea to add a “copy” button next to terminal commands. Honestly? Solid.
Let’s call the person who opened it Psyduck. Psyduck had asked the maintainers to assign the issue to him. But according to Electron’s contributor guidelines, anyone could jump in and submit a PR. That’s when my hero arc began.
Driven by the sheer force of chaotic neutrality (and my mildly overblown sense of virtue), I forked the repo, cooked up a fix, and pushed a PR.
Was it the best code I’ve ever written? Nah. Did it work? Yup. Was I proud of it? Kind of. Not really. But hey, it was functional.
So I tagged a maintainer and waited. A while later, I got a notification. Here we go, I thought. Time to hear from the elite devs who balance open source with full-time tech jobs.
Nope. It was Psyduck.
Apparently, he wanted me to not work on the issue. He was waiting for the maintainers to assign it to him, you see. Very official. Very serious.
Now, my first instinct was to go full “finder’s keepers” and type out a masterfully passive-aggressive message telling him to, politely, sod off. But then the better part of me (i.e., the part that consults ChatGPT) thought… maybe we soften it.
So I asked ChatGPT to rephrase my rage. And out came this Shakespearean masterpiece:
Understood, I wasn’t aware that reporting an issue automatically reserves it. As far as the concern goes, the solution seems to work, so I’ll be leaving my PR up for the maintainer to review. Thanks for the clarification!
Honestly? Poetry.
Sometimes, I think of ChatGPT as a tool. Other times, it’s the wise old friend I didn’t know I needed.
The Actual Code
Link to the chaotic PR
I implemented the copy button feature with the following changes;
-
Added copy buttons next to each installation command in
release.handlebars -
Styled the buttons and command containers in
release.css -
Created a new JavaScript file
copy-command.jsto handle the copy functionality (and added the JavaScript file to the main layout)
To be completely honest, this was my first time working with Handlebars. I didn’t even know what it was at first—it just sounded like a 19th-century cowboy alias. A little Googling later, I found out it's a templating engine. Simple enough. It works kind of like a stripped-down frontend framework, just with HTML templates and embedded expressions. Pretty neat once it clicked.
// The Copy button
{{#ifEquals prerelease 'nightly'}}
<pre class='command'>npm install electron-nightly@{{version}}<button
class='copy-button'
title='Copy to Clipboard'
onclick='copyCommand(this)'
><i class='fas fa-copy'></i></button></pre>
<pre class='command'>yarn add electron-nightly@{{version}}<button
class='copy-button'
title='Copy to Clipboard'
onclick='copyCommand(this)'
><i class='fas fa-copy'></i></button></pre>
// The JS for it, surprisingly easy
<script>
function copyCommand(button) {
const command = button.parentElement.textContent.trim();
navigator.clipboard.writeText(command).then(() => {
const icon = button.querySelector('i');
icon.className = 'fas fa-check';
button.style.color = '#4CAF50';
setTimeout(() => {
icon.className = 'fas fa-copy';
button.style.color = '';
}, 1000);
});
}
</script>
there is css code toobut im not putting that here. i mean it’s CSS, nothing special.
What i actually learnt
There’s a certain mindset shift that hits you when you write code that other people - like on the internet* - *will read.
I’ve worked on team projects before, sure. But usually, each person had their own module or micro-universe, and nobody really needed to understand each other's code that deeply. You build your part, push, and move on.
But with Open Source? It’s different.
You’re writing code that becomes part of a living, breathing, shared codebase. That means it needs to be readable, maintainable, and secure. Not just for today, but for whoever picks it up weeks, months, or even years later. People you’ll probably never meet.
And then there’s the human side-communication. Crucial. A minor misunderstanding in open-source collaboration can be the difference between a smooth merge and a three-day Reddit thread titled "Why junior devs shouldn’t touch production."
Key Takeaways:
-
Write Readable Code
-
Communicate with the Team
Conclusion
So yeah, open source? Not just some cool-sounding tech buzzword-it’s a whole ecosystem of shared brainpower, late-night commits, passive-aggressive issue threads, and the occasional unexpected life lesson.
What started as a quick attempt to check a GSoC box turned into me learning how to contribute code that actually matters, communicate with strangers on the internet without starting a war, and most importantly-how to not let a Psyduck ruin my day.
Would I do it again? Absolutely.
Would I write better code next time? Hopefully.
Would I let ChatGPT ghostwrite my PR replies again? Without a doubt.
Here’s to more pull requests, less drama, and becoming a slightly less chaotic developer, one commit at a time.