My First Open Source Journey

Introduction

Starting with open source can feel overwhelming. Where do you begin? What project should you contribute to? How do you make your first pull request? This is the story of my journey from complete beginner to active open source contributor, and I hope it inspires you to start your own journey!

Table of Contents

  1. Why I Started with Open Source
  2. Setting Up My First Project: Nextcloud
  3. Understanding and Choosing a License
  4. My First Pull Requests
  5. Contributing to Practice Repositories
  6. Key Lessons Learned
  7. Tips for Future Contributors

Why I Started with Open Source

Open source contribution has always intrigued me. The idea of collaborating with developers worldwide, learning from real-world codebases, and making a tangible impact on software used by millions is incredibly motivating.

My goals were:

  • Learn industry-standard development practices
  • Connect with the developer community
  • Build a portfolio of real contributions
  • Understand collaborative software development
  • Gain practical experience beyond tutorials

Setting Up My First Project: Nextcloud

Why Nextcloud?

I chose Nextcloud as my first major project because:

  1. Well-documented – Excellent documentation for new contributors
  2. Active community – Responsive maintainers and helpful community
  3. Real-world impact – Used by millions for file storage and collaboration
  4. Modern tech stack – PHP, JavaScript, Vue.js
  5. Beginner-friendly issues – Tagged issues for first-time contributors

Setting Up the Development Environment

Challenges I Faced

Challenge 1: Large Codebase

  • Problem: Nextcloud is a massive project with thousands of files
  • Solution: Started by reading the CONTRIBUTING.md file and focused on one module at a time

Challenge 2: Development Environment

# Clone the repository
git clone https://github.com/nextcloud/server.git
cd server
# Install dependencies
composer install
npm install
# Set up local development server
php -S localhost:8080
  • Problem: Setting up all dependencies was complex
  • Solution: Used Docker containers to simplify the setup process

Challenge 3: Understanding the Architecture

  • Problem: Didn’t know where to start making changes
  • Solution: Read existing PRs and issues to understand common patterns

Understanding and Choosing a License

One crucial aspect of my project was understanding open source licenses. This was eye-opening!

Why Licenses Matter

A license:

  • Protects your work
  • Defines how others can use your code
  • Clarifies contribution terms
  • Prevents legal issues

Licenses I Considered

License Pros Cons Best For
MIT Simple, permissive, widely used Minimal protection Most projects
GPL v3 Strong copyleft, ensures freedom Restrictive for commercial use Community-focused projects
Apache 2.0 Patent protection, permissive More complex Corporate-backed projects
BSD Very permissive Minimal contributor protection Academic projects

My Choice: MIT License

I chose the MIT License for my project because:

  1. Simplicity – Easy to understand for contributors
  2. Flexibility – Allows both open source and commercial use
  3. Wide adoption – Most developers are familiar with it
  4. Minimal restrictions – Encourages maximum collaboration

Pro Tip: Add a LICENSE file to your repository root. GitHub will automatically detect it!

My First Pull Requests

PR #1: Documentation Fix (MERGED ✓)

Repository: Nextcloud Documentation
Issue: Outdated installation instructions
Changes: Updated PHP version requirements and fixed broken links

What I learned:

  • Always reference the issue number
  • Test all links before submitting
  • Clear commit messages are crucial

PR #2: Bug Fix in User Management (MERGED ✓)

Repository: Nextcloud Server
Issue: User search not working with special characters
Changes: Added proper escaping for search queries

// Before
$query = "SELECT * FROM users WHERE username LIKE '%$search%'";
// After
$query = $this->db->prepare(
    "SELECT * FROM users WHERE username LIKE :search"
);
$query->execute(['search' => '%' . $this->db->escape($search) . '%']);

What I learned:

  • Security matters – always sanitize inputs
  • Write tests for your changes
  • Follow the project’s coding standards

PR #3: UI Enhancement (UNDER REVIEW 👀)

Repository: Nextcloud Server
Issue: Improve accessibility of file sharing dialog
Changes: Added ARIA labels and keyboard navigation

What I learned:

  • Patience is key – reviews take time
  • Be open to feedback and suggestions
  • Iterate based on maintainer comments

Contributing to Practice Repositories

To build confidence, I also contributed to beginner-friendly practice repositories:

1. first-contributions

  • Task: Add my name to contributors list
  • Status: MERGED ✓
  • Time to merge: 2 days
  • Takeaway: Perfect for learning the fork-clone-PR workflow!

2. HyunCafe/contribute-practice

  • Task: Add name and inspirational quote
  • Status: MERGED ✓
  • Time to merge: 3 days
  • Takeaway: Great for understanding markdown formatting and git basics.

3. EddieHubCommunity/hacktoberfest-practice

  • Task: Add GitHub profile to community list
  • Status: MERGED ✓
  • Time to merge: 1 day
  • Takeaway: Active community with fast review cycles – highly recommended!

Key Lessons Learned

1. Read CONTRIBUTING.md First

Every project has guidelines. Reading them saves time and shows respect to maintainers.

2. Start Small

My first PRs were:

  • Documentation fixes
  • Typo corrections
  • Adding comments
  • Small bug fixes

Don’t try to refactor the entire codebase on day one!

3. Communication is Key

Before working on an issue:

  1. Comment on the issue expressing interest
  2. Ask for clarification if needed
  3. Propose your approach
  4. Wait for maintainer approval
  5. Then start coding

4. Write Clean Commits

Bad commit:

git commit -m "fixed stuff"

Good commit:

git commit -m "fix: Resolve user search issue with special characters
- Added proper input sanitization
- Updated tests for edge cases
- Fixed SQL injection vulnerability
Fixes: #12345"

5. Be Patient with Reviews

Timeline What to Expect
0-2 days Automated checks run
2-7 days Initial maintainer review
1-2 weeks Back-and-forth on changes
2-4 weeks Final approval and merge

Remember: Maintainers are volunteers with day jobs!

6. Handle Rejection Gracefully

Not all PRs get merged, and that’s okay!
When your PR is rejected:

  • Thank the reviewer for their time
  • Ask for feedback on what to improve
  • Learn from the experience
  • Move on to the next contribution

7. Test Everything

Before submitting:

# Run tests
npm test
# Check code style
npm run lint
# Build the project
npm run build
# Test manually in browser

Tips for Future Contributors

Getting Started Checklist

  • [ ] Create a GitHub account
  • [ ] Set up Git on your computer
  • [ ] Learn basic Git commands (clone, branch, commit, push, PR)
  • [ ] Find beginner-friendly projects
  • [ ] Read project documentation
  • [ ] Join project communities (Discord, Slack, Forums)
  • [ ] Start with “good first issue” labels
  • [ ] Make your first contribution
  • [ ] Celebrate!

Finding Projects to Contribute To

Websites:

  • Good First Issue
  • First Timers Only
  • Up For Grabs
  • CodeTriage

GitHub Search:

label:"good first issue" is:open is:issue language:JavaScript

Essential Git Commands

# Fork and clone
git clone https://github.com/YOUR_USERNAME/project.git
cd project
# Create a branch
git checkout -b fix-issue-123
# Stage and commit changes
git add .
git commit -m "fix: description of fix"
# Push to your fork
git push origin fix-issue-123
# Update your fork with upstream changes
git remote add upstream https://github.com/ORIGINAL_OWNER/project.git
git fetch upstream
git merge upstream/main

Writing Good PRs

Template:

## Description
Brief description of what this PR does

## Related Issue
Fixes #123

## Changes Made
- Change 1
- Change 2
- Change 3

## Testing
- [ ] Tested locally
- [ ] Added unit tests
- [ ] Updated documentation

## Screenshots (if applicable)

![ ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q2dj7v3v4s6ix2z0uz57.png)

## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review of code completed
- [ ] Commented complex code sections
- [ ] Updated documentation
- [ ] No breaking changes

My Statistics After 3 Months

Metric Count
Repositories contributed to 8
Pull requests submitted 15
Pull requests merged 12
Issues opened 5
Comments on discussions 47
Stars received 23

What’s Next?

My journey is just beginning! Here’s what I’m planning:

  1. Contribute to larger projects – Dive deeper into complex issues
  2. Become a maintainer – Help review others’ PRs
  3. Create my own OSS project – Give back to the community
  4. Mentor new contributors – Share what I’ve learned
  5. Participate in GSoC – Apply for Google Summer of Code

Final Thoughts

Open source contribution has been one of the most rewarding experiences of my developer journey. It’s not just about code – it’s about:

  • Community – Meeting amazing developers worldwide
  • Learning – Exposure to real-world codebases
  • Impact – Contributing to software used by millions
  • Career – Building a portfolio that speaks for itself
  • Growth – Becoming a better developer every day

If you’re thinking about starting – just do it! Your first contribution doesn’t have to be perfect. The community is welcoming, and everyone started where you are now.

Useful Resources

  • GitHub Open Source Guide
  • How to Contribute to Open Source
  • First Contributions
  • The Beginner’s Guide to Contributing to Open Source
  • Nextcloud Developer Documentation

Let’s Connect!

I’d love to hear about your open source journey!

Have questions? Drop a comment below, and I’ll be happy to help!

Summary

Key Takeaways:

  1. Start with documentation and small fixes
  2. Choose projects that interest you
  3. Read and follow contribution guidelines
  4. Be patient with the review process
  5. Learn from feedback and keep improving
  6. Give back to the community

Your turn: What’s stopping you from making your first contribution? Let me know in the comments!

Thank you for reading! If you found this helpful, please share and follow me for more content about open source, web development, and my coding journey!

OpenSource #GitHub #Beginners #WebDevelopment #CodingJourney #FirstContribution #Nextcloud #DevCommunity

Similar Posts