DEV Community

Cover image for I Didn’t Get GSoC. I Wrote a Grails Guide Anyway.
Sanjana
Sanjana

Posted on

I Didn’t Get GSoC. I Wrote a Grails Guide Anyway.

Last year, in my first year of BTech, I heard about Hacktoberfest.
Tooooo lateee.
By the time I found out what it was, people were already posting screenshots, "6 successful PRs, green squares, the whole thing". I didn't even knew what I was looking at, but I wanted that feeling. PRs felt like something big, something people with extreme knowledge did. Not first-year-me with four Git commands and a lot of confidence.
Then January came. GSoC
I asked people about it. Watched YouTube videos. Sat in sessions where people talked about raising PRs, like it was a separate sport inside open source.
"org, repo, issue, PR"...Ohh myyy godddd, that was a lot!!
Those words felt heavy. Like a door with no handle. All i knew was
PR = Pull Request
That was basically my entire vocabulary.
I wanted to do it. I also found it boring in the way hard things are boring when you don't know where to start, so I gave up.
Later that year I decided to give GSoC my 100%.
I picked an org 52°North and tried to act like I belonged there. I asked them to assign me an issue.
Three months. No reply.
Around that time, a professor in college told me something I still remember:
"I know students like you. You don't actually want to do it. You're just here because of the crowd."
Maybe he was wrong. Maybe he was right about half of it.
Either way, it landed on my head.
I switched orgs. Apache
I stopped waiting for someone to hand me an issue and started treating open source like a real job.
I installed GitHub on my phone. There were stretches where I slept 2–3 hours, sat through 7–8 hours of college, and spent whatever was left on issues and PRs. Classes became secondary. Exams became secondary. This became primary.
Not because I had some cinematic dream of "cracking GSoC."
But because when you give something your full effort, you start expecting something back. That's normal human behaviour.
Results day
GSoC results came.
The projects I applied to?
None of them were even listed.
Not rejected. Not waitlisted. Just… not there.
(I have a lot of bad luck. More than a black cat - just kiddinggg.)
That one hurt differently from failing an exam. I hadn't half-assed this. I had actually shown up.
The plot twist nobody warns you about
A few weeks later — internship offer
From the same project I'd been contributing to.
The one that never even got a GSoC slot.
So no, it didn't play out like the Instagram reel. No acceptance letter. No "GSoC contributor" badge. But the work was real. The PRs were real. The maintainers who reviewed my code were real.
Hardwork paid off. Just not in the shape I rehearsed in my head.
Then they asked me to write a guide
Somewhere between all the PRs and the late nights, I ended up writing documentation.
Not a random README. A full Grails 8 guide, Data Access with GORM, with a sample app, tests, and chapters meant to live on the Apache site. Two open PRs: the sample code and the guide prose.
I thought the hard part would be learning GORM — domains, associations, queries, all of that.
It was not.
The hard part was finding out my first draft was wrong in quiet ways, the kind where everything looks fine until someone who actually knows Grails reads it.
Green tests lied to me (kind of)
I had a search feature. Unit tests passed. I felt clever.
Turns out I was matching titles in a case-sensitive way. Fine in a small in-memory test. Not fine for how people actually search on PostgreSQL. Someone reviewing my work pointed that out. I switched to ilike and wrote an integration test that hits a real Postgres database through Testcontainers.
Same story with validation. Bad input was coming back as a 500. It should have been 422. One missing validate() call. Easy fix once you see it. Invisible if you only trust green unit tests.
And then there was HQL. The guide talked about it. The tests were named after it. The code???
Not HQL at all, just a where query wearing the wrong label. The app worked. The docs did not. Fixing that meant real executeQuery, honest naming, and tests that run against an actual database.
None of this showed up in any tutorial I watched. It showed up in review.
Same feeling, different tool
Last post I wrote about Git, four commands, fake confidence, then a merge conflict that humbles you fast.
This felt like that.
Except instead of CONFLICT (content), it was comment #5 on my PR. Or ./gradlew integrationTest failing at 2am.
I am starting to recognise the pattern. The moment I feel like I know something is usually the moment I am about to learn I do not.
What I would tell first-year me
You do not need to be the smartest person in the room to write a guide or open a PR. You need to be okay looking dumb long enough to get less dumb.
A first draft is not the finished thing. Mine got better only after someone tore it apart... politely, but thoroughly, and I actually fixed what they pointed out.
Both PRs are still in review. That feels right. First guide. Still learning. Still doing it in public.
If you have ever worked hard on something and had the outcome look nothing like what you pictured, same. Keep going anyway.

Top comments (0)