The Complete GSoC Guide — From Zero to Accepted Contributor

O

Qubits of DPK

March 28, 2026

Core Open Source
Written by a practitioner, not a tutorial.
This guide was built from real experience navigating GSoC 2026 with Apache Fineract — including every mistake, confusion, and hard-won lesson along the way. If you're a first-time applicant, this is the guide that didn't exist when it was needed.

Who This Guide Is For

This guide is for anyone applying to Google Summer of Code — whether you're a student or a professional developer new to open source. It covers the entire journey from registration to proposal submission, including the things most guides skip: how to interact in a community, what to check before raising a PR, and how to survive the waiting game.

Table of Contents

  1. #
    What Is GSoC?
  2. #
    Eligibility — Who Can Apply?
  3. #
    Step 1 — Register on the GSoC Website
  4. #
    Step 2 — Choose Your Organization
  5. #
    Step 3 — Understand the Organization's Ideas
  6. #
    Step 4 — Create Your JIRA Account (Apache Example)
  7. #
    Step 5 — Choose the Right Ticket
  8. #
    Step 6 — Set Up the Codebase Locally
  9. #
    Step 7 — Your First Contribution (PR)
  10. #
    Step 8 — Clean Code Rules Before Every PR
  11. #
    Step 9 — Write Your Proposal
  12. #
    Step 10 — Community Interaction
  13. #
    The Timeline — Key Dates
  14. #
    Common Mistakes to Avoid
  15. #
    After Submission — What Happens Next

1. What Is GSoC?

Google Summer of Code is a global program where open source organizations mentor contributors to work on real projects over 12+ weeks. You get paid a stipend, you get a mentor, and you get a merged contribution to a real-world codebase used by millions.
It is not an internship at Google. It is a paid open source contribution program. Google funds it. The organization and its volunteers mentor you.
Stipend varies by country. Check the official GSoC site for your region's amount.

2. Eligibility — Who Can Apply?

  • Must be 18 years or older
  • Must be a beginner to open source (less than 2 years of open source contribution experience)
  • Must live in a non-embargoed country
  • Can be a student OR a professional — GSoC is open to both
Important: Your years of professional experience do NOT disqualify you. Only your open source contribution history is evaluated. If you have 5 years of industry experience but zero open source commits — you are eligible.

3. Step 1 — Register on the GSoC Website

URL: summerofcode.withgoogle.com

How to Register

  1. #
    Go to the GSoC website
  2. #
    Click Get Started or Register
  3. #
    Sign in with a personal Gmail account (not a company or university email)
  4. #
    Select your role: Contributor
  5. #
    Fill in your profile: name, country, GitHub URL, bio

Common Issue: 403 Error

If you see a 403 Access Denied error:
  • Cause: You are logged into multiple Google accounts in the same browser
  • Fix: Open an Incognito window → sign in with only your personal Gmail → try again
  • The GSoC site does not support multi-account login

Finding Your Target Organization

Organizations participate under umbrella names. For example:
  • Apache Fineract is listed under The Apache Software Foundation — not as "Fineract"
  • Search for the parent organization name, not the sub-project

4. Step 2 — Choose Your Organization

This is the most important decision you make. The wrong organization = zero chance of acceptance regardless of how good your proposal is.

How to Choose

Where to Find Organizations

  • summerofcode.withgoogle.com/programs/YEAR/organizations
  • Filter by technology, category, or size
  • Read their Contributor Guidance section on each org's page

The Honest Truth About Competition

Popular orgs like Mozilla, Linux Foundation, or Apache top-level get 200+ applicants per slot. First-time contributors can have better outcomes at active but less famous orgs where competition is 10-15 applicants per slot.

5. Step 3 — Understand the Organization's Ideas

Every org publishes a list of project ideas. These are the problems they want solved.

What to Look For in a Project Idea

  • Mentor is confirmed — If no mentor is listed, the project may not happen
  • Scope is clear — Vague projects are risky. Clear deliverables = safer bet.
  • Matches your skills — Don't pick something you'd need 3 months of learning just to start
  • Not marked as "draft" — Some ideas are placeholders. Draft = might be cancelled.

Apache-Specific: How Ideas Are Organized

Apache uses JIRA to track GSoC ideas. Filter by label gsoc2026 AND label mentor:
javascript
QUBITS OF DPK
1https://issues.apache.org/jira/issues/?jql=labels+=+gsoc2026+AND+labels+=+mentor
Only tickets with both labels are official mentor-backed ideas. Other tickets tagged gsoc2026 by students are NOT official project ideas.

You Can Submit Up to 3 Proposals

GSoC allows up to 3 proposals per applicant but only 1 can be accepted. Use multiple slots strategically — don't submit 3 proposals to the same org, spread across ideas where you have real evidence.

6. Step 4 — Create Your JIRA Account (Apache Example)

For Apache Software Foundation organizations, contributions are tracked in JIRA.

How to Create an Apache JIRA Account

  1. #
    Go to issues.apache.org/jira
  2. #
    Click Sign Up or Create Account
  3. #
    Use your real name — this is a public, permanent record
  4. #
    Verify your email
  5. #
    For some Apache projects, you may need to request access separately

What You Use JIRA For

  • Reading project ideas (no account needed to read)
  • Commenting on tickets to show interest
  • Creating your own tickets for contributions you initiate
  • Updating tickets when you raise a PR (link PRs to tickets)

JIRA Ticket Etiquette

  • Do NOT comment on GSoC idea tickets saying "I want to work on this" unless the org explicitly asks for it
  • DO create your own ticket for any work you initiate
  • DO link every PR back to a JIRA ticket in the PR title and description
  • Ticket title format: PROJECTNAME-XXXX: Short description
  • PR title must match: FINERACT-2549: Migrate InstanceModeIntegrationTest to feign

7. Step 5 — Choose the Right Ticket for Your First Contribution

Your first contribution before the proposal deadline is your most important signal to mentors. Choose wisely.

What Makes a Good First Ticket

How to Find Good Tickets (Apache Example)

javascript
QUBITS OF DPK
1https://issues.apache.org/jira/browse/FINERACT-2489
Use this JQL filter to find beginner-friendly unresolved tickets:
javascript
QUBITS OF DPK
1project = "Apache Fineract" AND labels IN 
2(beginner-friendly, beginner) 
3AND resolution = Unresolved 
4ORDER BY created DESC

Claiming a Ticket

  1. #
    Open the ticket
  2. #
    Leave a comment: "I am working on this. Will raise a PR by [date]."
  3. #
    Assign it to yourself if you have permissions
  4. #
    Don't sit on it — if you take a ticket, raise the PR within a week

8. Step 6 — Set Up the Codebase Locally

Mentors can tell immediately whether you've run the code or just read the docs. Set up the project locally before writing a single line of proposal.

Generic Setup Steps

  1. #
    Fork the repository on GitHub (your fork → github.com/YOURUSERNAME/project)
  2. #
    Clone your fork locally
  3. #
    Add upstream remote (critical for staying in sync)
  4. #
    Check out the development branch (usually develop or main)
  5. #
    Run the build to confirm it works locally
  6. #
    Verify the server starts and health endpoint returns OK

For Apache Fineract Specifically

bash
QUBITS OF DPK
1# Start database (MariaDB via Docker)
2docker run --name mariadb -p 3306:3306 \
3  -e MARIADB_ROOT_PASSWORD=mysql -d mariadb:11.5
4
5# Or use docker compose (starts everything)
6docker compose up
7
8# Build (skip tests for speed)
9./gradlew --no-daemon build -x test -x cucumber -x doc
10
11# Run
12./gradlew bootRun
13
14# Verify
15curl -k https://localhost:8443/fineract-provider/actuator/health

9. Step 7 — Your First Contribution (Raising a PR)

A pull request is your proof that you can work in the codebase. It matters more than anything in your proposal.

The PR Workflow

javascript
QUBITS OF DPK
11. Sync your fork with upstream
2   git fetch upstream
3   git rebase upstream/develop
4
52. Create a feature branch
6   git checkout -b feature/TICKET-NUMBER-short-description
7
83. Make your changes
9
104. Run all quality checks (see Section 10)
11
125. Stage and commit
13   git add .
14   git commit -s -m "TICKET-NUMBER: What you changed and why"
15
166. Push to your fork
17   git push origin feature/TICKET-NUMBER-short-description
18
197. Open a PR from your fork to upstream/develop

PR Title Format

javascript
QUBITS OF DPK
1FINERACT-2549: Migrate InstanceModeIntegrationTest from RestAssured to fineract-client-feign
The ticket number at the start is checked by CI. Get it wrong and the build fails immediately.

PR Description Must Include

  • Link to the JIRA ticket
  • What you changed and why
  • Checklist of quality checks passed
  • Any behavioral changes (usually: none for migrations)

GPG Signing Your Commits

Many Apache projects require GPG-signed commits. The -s flag in git commit -s adds a sign-off line. For GPG signing:
bash
QUBITS OF DPK
1git config --global user.signingkey YOUR_GPG_KEY_ID
2git config --global commit.gpgsign true

The gsoc-fineract-evidence Tag

For Apache Fineract GSoC candidates, tag your PR with the label gsoc-fineract-evidence. This is the official signal that your PR is submitted as GSoC contribution evidence. The label makes it easy for mentors to find all candidate contributions.

10. Step 8 — Clean Code Rules Before Every PR

Every project has style enforcement. Ignore it and your PR gets rejected automatically by CI. Learn the rules before you write a single line.

Universal Rules

  • One logical change per commit — don't mix formatting fixes with feature changes
  • Meaningful commit messages — "fix" is not a message. "FINERACT-2549: Replace requestSpec with feign client in InstanceModeIntegrationTest" is.
  • No commented-out code — delete it or don't commit it
  • No debug print statements — remove all System.out.println before PR
  • No new warnings — your change should not increase the warning count

Apache Fineract Specific — Run Before Every PR

bash
QUBITS OF DPK
1# Step 1: Fix all formatting
2./gradlew spotlessApply
3
4# Step 2: Check for bugs
5./gradlew spotbugsMain spotbugsTest
6
7# Step 3: Check style
8./gradlew checkstyleMain checkstyleTest
9
10# Step 4: Full build (no tests)
11./gradlew --no-daemon build -x test -x cucumber -x doc
Never skip this sequence. This is what the CI runs. If it fails locally, it fails in CI.

Commit Sign-Off

The -s flag adds a Signed-off-by line to your commit:
bash
QUBITS OF DPK
1git commit -s -m "FINERACT-2549: Your message"
This is required for Apache contributions. It certifies that you have the right to submit this code under the project's license.

One Commit Per Logical Unit

Don't mix unrelated changes in one commit. If you migrated a test AND fixed a bug, those are two commits:
javascript
QUBITS OF DPK
1commit 1: FINERACT-2549: Migrate InstanceModeIntegrationTest to feign
2commit 2: FINERACT-2550: Fix NPE in LoanTransactionHelper

11. Step 9 — Write Your Proposal

The proposal is submitted on the GSoC website — never sent directly to the organization.

Proposal Structure (What Mentors Want)

The Single Most Important Rule

Show proof, not intention.
"I will implement X" is weak.
"I implemented X at [company] for [reason] and it produced [result]. I will apply the same pattern here because [specific connection]." is strong.

What Mentors Actually Read First

  1. #
    Your name
  2. #
    Your GitHub — they will click it immediately
  3. #
    Your contributions to their codebase
  4. #
    Then — and only then — your proposal text
A mediocre proposal with 3 merged PRs beats a perfect proposal with zero contributions.

Proposal Size

Pick the size honestly. Saying Large for a 1-week task looks naive. Saying Small for a full system build looks like you don't understand scope.

GSoC Website Fields

  • Title — Short, specific, includes the project name
  • Abstract — 160+ characters, self-contained summary
  • Proposal body — Full proposal (paste from your document)
  • Project Technologies — Enter each as a SEPARATE tag, not a comma-separated list
  • Project Topics — Same — separate tags
  • JIRA link — Direct link to the ticket(s) your proposal addresses
  • Project Size — Small / Medium / Large
  • PDF attachment — Upload a formatted version

Save as Draft First

Always Save Draft before submitting. You can edit a draft. You cannot un-submit a submission (though you can update it before the deadline). Submit your final version at least 3 days before the deadline — never on deadline day.

12. Step 10 — Community Interaction

Open source communities run on trust. Trust is built by how you communicate — not just what you code.

The Communication Channels (Apache Example)

Your Introduction Email

Send one to the mailing list. Keep it:
  • Under 300 words
  • Specific about your background
  • Specific about which project idea interests you and why
  • Ending with 1-2 technical questions that prove you've read the codebase
Generic "Hi I'm a student eager to learn" emails are ignored. Specific technical questions get replies.

How to Ask Good Questions

Bad: "Can you help me get started?"
Good: "I'm studying FINERACT-2439. I noticed the BFF's auth question: should the BFF register as an OAuth client against Fineract's own server, or maintain a separate identity layer? I lean toward the separate layer because tying consumer auth to m_appuser was the original flaw. Is this the intended direction?"
The second version shows you've read the code, you understand the history, and you have a reasoned opinion. That gets a real answer.

Things That Hurt You in a Community

  • Asking the same question twice without trying to find the answer yourself first
  • Pinging maintainers privately — keep everything public
  • "Can you review my PR?" — let the PR speak for itself
  • Raising PRs to tickets marked "No one should work on this unless assigned"
  • Tagging wrong JIRA tickets in your PRs

How to Handle Feedback on Your PR

  1. #
    Read it fully before responding
  2. #
    Address every comment — even ones you disagree with
  3. #
    If you disagree, explain why — don't just silently do it your way
  4. #
    Reply with exactly what you changed: "Done — removed the helper method and replaced with direct feign call on line 47"
  5. #
    Re-request review once all comments are addressed
  6. #
    Never take reviewer feedback personally — it's about the code, not you

13. The Timeline — Key Dates (GSoC 2026)

Your Personal Timeline (Work Backwards)

javascript
QUBITS OF DPK
1Week 1 (application opens):
2Subscribe to mailing list
3Join community chat
4Post introduction email
5Set up codebase locally
6
7Week 2:
8Raise first PR
9Fill Contributor Interest Form
10Draft proposal
11
12Week 3:
13Address PR feedback
14Get mentor response on mailing list
15Refine proposal with mentor input
16
17Week 4 (3 days before deadline):
18Submit final proposal
19Raise second or third PR if time allows

14. Common Mistakes to Avoid

Registration

  • Registering with a university email that doesn't have Gmail access
  • Not subscribing to the mailing list before emailing it (your email goes to spam)
  • Applying without checking if the organization's ideas have confirmed mentors

Proposals

  • Referencing a ticket number that doesn't exist — mentors check immediately
  • Proposing to work on a ticket marked "don't work on unless assigned"
  • Generic proposals with no specific technical design
  • Copying another applicant's proposal structure word for word
  • Submitting on the deadline day — site traffic spikes, submissions fail

Contributions

  • Raising a PR that references the GSoC idea ticket — those are mentor-assigned
  • Raising a PR without running the formatter first — instant CI failure
  • Taking a ticket and not delivering for 2 weeks — bad signal
  • Mixing multiple issues in one PR — makes review harder
  • Not GPG-signing commits when required

Community

  • Sending private DMs to mentors for technical help — keep it public
  • Asking "how do I start?" without reading the documentation first
  • Disappearing after submitting the proposal — stay active until March 30

15. After Submission — What Happens Next

Between Submission and March 30 (For this year 26’)

Don't go quiet. Continue contributing:
  • Raise more PRs if you have time
  • Respond immediately to any PR feedback
  • Stay active in the community chat
  • Update your proposal if mentor gives feedback
Mentors decide between candidates who look equally strong on paper by looking at:
  1. #
    Quality of contributions (merged > open)
  2. #
    Responsiveness to feedback
  3. #
    Community presence
  4. #
    Evidence that you understand the codebase

If You're Selected

  • Community bonding period: read the codebase deeply, set milestones with mentor
  • Weekly progress updates on mailing list or chat
  • Small PRs often — don't build for 3 weeks and drop a massive PR
  • Ask early if you're stuck — mentors prefer early questions over late surprises

If You're Not Selected

  • It's not permanent. Many contributors apply 2-3 times before acceptance.
  • Your PRs don't disappear — merged contributions stay in the codebase forever
  • You can continue contributing as a community member with no GSoC label
  • Apply again next year with stronger contributions on the record

Quick Reference Checklist

Before Submitting Your Proposal

Subscribed to organization mailing list
Introduction email sent to mailing list
Joined community chat (Matrix/Slack/Discord)
Filled Contributor Interest Form (if org has one)
Codebase forked and running locally
At least 1 PR raised on the codebase
JIRA ticket created for your contribution
Proposal reviewed by at least one mentor on the mailing list
JIRA links in proposal are verified real tickets
All technologies entered as separate tags on GSoC site
Project size selected (Small / Medium / Large)
Saved as draft on GSoC site — not lost

Before Every PR

Branch created from latest upstream develop
spotlessApply run (or your project's formatter)
All linting checks passed locally
Full build passes (no compilation errors)
Commit message includes ticket number
Commit is GPG-signed (-s flag)
PR title starts with ticket number
PR description includes JIRA link, what changed, checklist
gsoc-fineract-evidence label added (Apache Fineract only)

A Note to the Reader

This guide was built from a real GSoC 2026 application to Apache Fineract. The applicant was a 4-year backend engineer, not a student — and still found the process confusing, underdocumented, and full of unwritten rules.
Every mistake in this guide was made in real-time. Every tip is something that had to be learned the hard way.
If this helps you skip even one of those mistakes, it was worth writing.
Good luck. The codebase is waiting.