Talks

From User to Maintainer: The Open Source Journey

Bengaluru

From User to Maintainer:

The Open Source Journey

Punyapal Shah

About Me

Punyapal Shah

Punyapal Shah

mrpunyapal.dev @mrpunyapal
SPEAKER INTRO

Laravel Engineer & Consultant

Building open source tooling, architecture, and high-performance Laravel systems.

PEST & PINKARY CORE TEAM FOUNDER OF LARAVEL ARTISANS
Creator & maintainer of 20+ open source packages
Contributed to 120+ open source repositories across the ecosystem
Consulting and engineering for global client production applications

The Evolution

01 • USER
Builds real projects and depends on OSS tools.
02 • CONTRIBUTOR
Fixes bugs and improves open source tools.
03 • AUTHOR
Extracts reusable solutions into new packages.
04 • MAINTAINER
Protects compatibility and manages releases.
○ User ● User ○ Contributor ○ Author ○ Maintainer

The Foundation: Why

● User ○ Contributor ○ Author ○ Maintainer
WHY CONTRIBUTE

Career Proof and Real Experience

Real work speaks louder than a resume
Public proof of how you write and test code
Learn production architecture from popular packages
Give back to the tools and community you rely on daily

The Foundation: What

● User ○ Contributor ○ Author ○ Maintainer
CONTRIBUTION TYPES

Contribution is Not Just Writing New Features

Submitting targeted bug fixes for reported issues
Adding failing tests for edge cases you faced
Creating a small repo that easily reproduces a bug
Fixing wrong documentation and outdated examples

The Foundation: How

● User ○ Contributor ○ Author ○ Maintainer
01 • FORK
Fork upstream repository to your personal account.
02 • CLONE
Clone repo locally and run composer install.
03 • BRANCH
Create a dedicated atomic git branch for your fix.
04 • TEST
Write tests and ensure all test suites pass locally.
05 • PR
Submit clean PR with clear before/after context.
● User ✓ User ○ Contributor ● Contributor ○ Author ○ Maintainer

Real World Proof

✓ User ● Contributor ○ Author ○ Maintainer
Real World Proof 1
Real World Proof 2
Real World Proof 3
Real World Proof 4

Bug Reports That Matter

✓ User ● Contributor ○ Author ○ Maintainer
INCOMPLETE REPORT

"Package breaks when using array filters. Fix immediately."

No stack trace. No test. Maintainer cannot reproduce.

MINIMAL REPRO REPO

"Created a clean repo with 1 failing Pest test."

Pinpoints the exact bug. Maintainer can clone and fix quickly.

Conventional Commits

✓ User ● Contributor ○ Author ○ Maintainer
PREFIX MEANING STANDARD MESSAGE EXAMPLE
FEAT New feature feat: add support for social login
FIX Bug fix fix: resolve redirect loop issue
CHORE Maintenance chore: bump composer dependencies
DOCS Documentation docs: update contributor setup guide
REFACTOR Code cleanup refactor: simplify container binding logic

Pull Request Do's

✓ User ● Contributor ○ Author ○ Maintainer
BEST PRACTICES
Keep your PR small, clear, and focused on one issue
Always add test cases for what you changed
Explain clearly why this change is needed
Check CONTRIBUTING.md before writing code
Test locally on supported PHP and Laravel versions
Match the code style of the repository

Pull Request Don'ts

✓ User ● Contributor ○ Author ○ Maintainer
COMMON MISTAKES
Don't club 3 different bug fixes into a single PR
Don't rewrite entire files without discussing first
Don't format unrelated files in the same PR
Don't open a PR without running tests locally
Don't take code review comments personally
Don't tag maintainers on Twitter/LinkedIn for quick reviews
✓ User ● Contributor ✓ Contributor ○ Author ● Author ○ Maintainer

When to Build a Package?

✓ User ✓ Contributor ● Author ○ Maintainer
EXTRACTION RULE

The 3× Rule

If you have written the exact same helper or utility across 3 different client projects, extract it into a package.

Package Ideation

✓ User ✓ Contributor ● Author ○ Maintainer
PROBLEM-FIRST DESIGN

Solve your own daily headache first.

The best packages are created because the author needed them for daily work, not because they sat down to brainstorm an imaginary idea.

Author vs Maintainer

✓ User ✓ Contributor ● Author ○ Maintainer
PACKAGE AUTHOR
Writes initial code and features
Solves their own immediate problem
Publishes v1.0.0 and tags releases
Focuses on moving fast and shipping
Often moves on once the code works
PACKAGE MAINTAINER
Reviews issues and other people's PRs
Protects stability for the wider ecosystem
Manages upgrade matrices and SemVer
Focuses on backwards compatibility
Commits to long-term trust and maintenance
✓ User ✓ Contributor ● Author ✓ Author ○ Maintainer ● Maintainer

The Hardest Word in OSS

✓ User ✓ Contributor ✓ Author ● Maintainer
PROTECTING YOUR TIME

Protecting Your Time

Every PR you merge is code you have to maintain for the next 5 years. Learn to say "No" politely to keep the project clean and focused.

No.

Do Not Force Open Source

✓ User ✓ Contributor ✓ Author ● Maintainer
ETHICS & INTENT
Don't contribute just to add your name to a repo or chase clout
Fix things because you use the package daily and hit a real bug
Never use AI to search for fake issues and spam maintainers with AI PRs
Contribute because you genuinely want to give back to the community

Semantic Versioning

✓ User ✓ Contributor ✓ Author ● Maintainer
MAJOR RELEASE
v2.0.0
Breaking API changes
Dropping old PHP or Laravel versions
Requires a step-by-step upgrade guide

Semantic Versioning

✓ User ✓ Contributor ✓ Author ● Maintainer
MINOR RELEASE
v1.3.0
New features added
100% backwards compatible
No manual code changes needed by users

Semantic Versioning

✓ User ✓ Contributor ✓ Author ● Maintainer
PATCH RELEASE
v1.2.4
Bug fixes and security patches
No new public features
Safe for automatic composer update

Maintainer Tooling

✓ User ✓ Contributor ✓ Author ● Maintainer
GITHUB ACTIONS

Automate All Repetitive Work

Test matrix running across PHP (8.3, 8.4, 8.5) & Laravel (12, 13)
Automated static analysis using PHPStan / Larastan
Automated refactoring & upgrades with Rector
Automated code styling using Laravel Pint

Earning Maintainer Trust

✓ User ✓ Contributor ✓ Author ● Maintainer
COMMUNITY ADVANCEMENT

Trust is earned through consistency.

Reviewing other people's PRs, helping debug community issues, and writing thorough tests is how contributors naturally become core maintainers.

The Complete Cycle

✓ User ✓ Contributor ✓ Author ● Maintainer
User
Builds with OSS tools
Contributor
Fixes bugs & improves OSS
Author
Creates new packages
Maintainer
Protects compatibility & releases
The cycle continues

Your Next Step

● Action Item
ACTION PLAN

How to start this week:

1.Pick one package you use at work every single day
2.Look at its GitHub issues for reproducible bugs
3.Submit a failing test or a documentation improvement

Questions & Discussion

Punyapal Shah

Thank You!

Punyapal Shah

Pinkary QR Code

// Presented at Laravel Bengaluru $this->backToTalks()