How to make your first Android open-source contribution
Making your first open-source contribution can feel confusing.
You open GitHub.
You search Android repositories.
You see thousands of files.
You see issues, pull requests, branches, build errors, contribution rules.
And then the question comes:
“Where do I even start?”
Most beginners start from the wrong place.
They look for a famous repository, pick a random issue, make a big code change, and open a pull request.
Then nothing happens.
No review.
No merge.
No feedback.
The problem is not always your code.
Sometimes the project is inactive.
Sometimes the issue is outdated.
Sometimes the change is too large.
Sometimes the maintainer never agreed with your approach.
So if you want your first Android contribution to be useful, start with the right mindset.
Open source is not about collecting a badge.
It is about joining an existing project respectfully and making maintainers’ lives easier.
Start with project health, not stars
A popular project is not always a beginner-friendly project.
Before picking an issue, spend 10 minutes checking the repository.
Ask:
Was code merged recently?
Do maintainers reply to issues and PRs?
Is there a CONTRIBUTING.md file?
Can you build the project locally?
Are beginner issues actually active?
Are there hundreds of ignored pull requests?
Is the issue list maintained?A repository with 500 stars and active maintainers can be better than a repository with 50,000 stars and 300 stale pull requests.
For your first contribution, you need a project where someone is likely to review your work.
Some Android repositories you can explore:
Thunderbird for Android
NewPipe
Mihon
Signal Android
Now in Android
Jetpack Compose samples
Material Components Android
WordPress Android
Firefox AndroidBut do not choose only by name.
Choose by activity, documentation, and issue quality.
Read the contribution guide
Before touching code, read:
README.md
CONTRIBUTING.md
CODE_OF_CONDUCT.md
Issue templates
Pull request templates
Build instructions
Architecture notesMany projects have rules like:
Discuss big features before coding
Use a specific branch
Run a specific formatter
Add tests for bug fixes
Attach screenshots for UI changes
Avoid unrelated refactoringIf you ignore these rules, even a technically correct PR can be rejected.
A good contributor follows the project’s process.
Build the project unchanged
This is important.
Before fixing anything, first build and run the project exactly as it is.
If the project does not build, do not immediately assume the repo is broken.
Check:
JDK version
Android Studio version
Gradle version
local.properties
API keys
Emulator/device requirements
Build variant
Environment setupIf the documentation is wrong or outdated, that itself can become your first contribution.
A documentation fix that helps future contributors is valuable.
Choose a small useful issue
Your first contribution does not need to be a big feature.
In fact, it should not be.
Good first contributions are usually small and focused.
Examples:
Fix a small crash
Improve setup documentation
Add a missing test
Fix an accessibility label
Reproduce a bug with logs
Test an existing pull request
Fix a UI edge case
Update outdated screenshots
Improve an error message
Handle an empty stateAvoid:
Large architecture rewrites
Random file renaming
Mass formatting
Changing code style
Updating many dependencies
Adding features nobody requested
Refactoring unrelated filesMaintainers are not looking for big noisy patches.
They are looking for useful, reviewable changes.
Reproduce the issue before coding
If an issue says:
App crashes when opening SettingsDo not jump directly into code.
First reproduce it.
Find:
App version
Branch
Device or emulator
Android version
Exact steps
Expected behavior
Actual behavior
Logs or stack trace
Screenshots or screen recordingA useful comment looks like this:
I reproduced this on Pixel 7 emulator, Android 15.
Steps:
1. Open Settings
2. Tap Account
3. Rotate the device
The crash happens with this stack trace:
...
I think the issue is related to state restoration in AccountScreen.
I can work on a focused fix and add a regression test if this scope is okay.This is much better than:
Can I work on this?Because it gives maintainers evidence and a clear plan.
Agree on scope before large work
For small typos or obvious one-line fixes, you can directly open a PR.
But for bigger changes, comment first.
Ask before you spend hours coding.
A good scope comment includes:
What you reproduced
Where you think the issue is
What you plan to change
What you will not change
How you plan to testThis avoids wasted work.
Sometimes maintainers already know a better approach.
Sometimes the issue is no longer relevant.
Sometimes the project is moving in another direction.
A short discussion can save you days.
Make the smallest possible fix
This is one of the most important rules.
If the issue is about one crash, fix that crash.
Do not also:
Refactor the whole screen
Rename variables across the module
Change formatting
Update dependencies
Rewrite navigation
Move files aroundA good first PR has:
One problem
One focused fix
One clear test plan
No unrelated cleanupSmall PRs are easier to review.
Easy-to-review PRs are more likely to get feedback.
Test like an Android developer
For Android projects, testing is not only running the app once.
Depending on the change, mention:
Device or emulator used
Android version
Build variant
Screen tested
Commands run
Before/after screenshots
Screen recording for UI changes
Unit tests
Instrumentation tests
Regression testExample PR testing section:
Tested on:
Pixel 7 emulator, Android 15
Verified:
- App launches successfully
- Settings screen no longer crashes on rotation
- Account data still loads correctly
- Added regression test for state restorationIf you could not run a test, say that honestly.
Maintainers trust clear communication more than fake confidence.
Write a clear pull request description
Your PR description should answer four questions:
What was broken?
What changed?
Why this approach?
How was it tested?Example:
Before:
Settings screen crashed when rotating the device after opening account details.
After:
Account state is restored safely and the screen no longer crashes.
Why:
The existing ViewModel already owns account state, so this change keeps state handling there instead of adding UI-level caching.
Testing:
Tested manually on Pixel 7 emulator Android 15 and added a regression test.For UI changes, attach screenshots or a short video.
For bug fixes, link the issue.
For behavior changes, explain the tradeoff.
Respond well to review
Getting review comments does not mean you failed.
It means someone is spending time on your contribution.
When feedback arrives:
Read carefully
Ask if something is unclear
Make requested changes
Avoid arguing emotionally
Explain tradeoffs calmly
Push small follow-up commitsDo not defend your first version just because you wrote it.
The goal is not to prove you are right.
The goal is to improve the project.
Be patient
Open-source maintainers are often volunteers.
A week without review can be normal.
Do not spam:
Please review
Please merge
Any update?
Hello?Follow the project’s etiquette.
If the PR becomes stale, politely ask once after a reasonable time.
And remember:
A PR not being merged does not always mean it was bad.
Priorities change.
A simple roadmap
Here is a beginner-friendly roadmap:
1. Pick an active Android repository
2. Read README and CONTRIBUTING guide
3. Build the project locally
4. Find a small active issue
5. Reproduce the issue
6. Comment with evidence and proposed scope
7. Make the smallest fix
8. Add test or proof
9. Open a clear pull request
10. Respond calmly to reviewFinal thought
Your first open-source contribution should prove one thing:
You can enter an existing codebase without creating chaos.
That skill matters a lot in real jobs too.
Because professional engineering is not just writing code.
It is reading unfamiliar systems, understanding constraints, communicating clearly, making small safe changes, and improving the product without making maintainers’ lives harder.
One careful contribution teaches more than five random pull requests.
Start small.
Be useful.
Respect the project.
Finish what you start.
Comments (0)
No comments yet. Be the first to share your thoughts!
Leave a Comment
Get the latest updates
Join our newsletter and never miss an article.