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.

3×

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()