Open Source
I fix the projects I use myself. Everything below is counted straight from GitHub.
62 are still waiting for review, 14 were closed without a merge. Of the ones already decided, 79% got in.
PRs went to 107 repositories. The merged ones added 6 989 lines in 84 commits.
The biggest is icsharpcode/ILSpy with 26 149 stars. All the repositories I sent anything to have 550 359 together.
Fastest was valeriansaliou/sonic: 22 min from opening to merge. That's the record among the last 50 PRs.
Languages
| Language | Merged PRs | Repos | Commits | Lines added | % |
|---|---|---|---|---|---|
| PHP | 15 | 15 | 23 | 784 | 28.8 |
| Go | 13 | 13 | 22 | 652 | 25 |
| C# | 8 | 6 | 13 | 4 911 | 15.4 |
| Rust | 5 | 4 | 9 | 182 | 9.6 |
| JavaScript | 5 | 3 | 6 | 130 | 9.6 |
| Other (3) | 6 | 6 | 11 | 330 | 11.5 |
Where these pull requests come from
It starts with a bug
I'm working on something of my own and suddenly a thing doesn't behave the way it should. Often it isn't my code at all, but a library I'm building on. I could work around it and move on, but I'd rather fork the project, fix the bug at the source and send the fix upstream. Then it works for everyone who uses that library, not just for me.
Usually it's the easy-to-miss problems
Most of the time it's an easy-to-miss problem: nothing crashes, one thing just quietly does the wrong thing. ILSpy didn't recognise the type test in a Visual Basic exception filter, sonic leaked a client slot after a failed channel read, and Scramble split PhpDoc summaries wrong in files with CRLF line endings. Sometimes I only fix the docs, like the write_buffer_size option in sonic or which proxy schemes actually work in email-verifier.
Every change gets a maintainer's review
Sending code is only half of it. Every PR is read by someone who knows the project inside out, and they decide whether the change is right and fits. Since 5 September 2026, maintainers have merged 52 PRs from me. Some of them went into 11 projects that have over 10,000 GitHub stars each. A merge usually takes 38 hours from opening (median).
The project picks the language
My merged code lives in 47 repositories with 307 525 stars on GitHub between them. The biggest are ILSpy, PHPMailer, autoprefixer, monolog, and sonic. I write in whatever the project is written in, so my merged changes now span 8 languages, mostly PHP, Go, and C#.
Where my changes landed
Repositories that merged my code (47), largest first.
- icsharpcode/ILSpy .NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform! 26 149 2 merged PRs
- PHPMailer/PHPMailer The classic email sending library for PHP 22 299 1 merged PR
- postcss/autoprefixer Parse CSS and add vendor prefixes to rules by Can I Use 22 226 1 merged PR
- Seldaek/monolog Sends your logs to files, sockets, inboxes, databases and various web services 21 403 1 merged PR
- valeriansaliou/sonic 🦔 Fast, lightweight & schema-less search backend. An alternative to Elasticsearch that runs on a few MBs of RAM. 21 353 2 merged PRs
- briannesbitt/Carbon A simple PHP API extension for DateTime. 16 596 1 merged PR
- PuerkitoBio/goquery A little like that j-thing, only in Go. 14 996 1 merged PR open: 1
- App-vNext/Polly Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. From version 6.0.1, Polly targets .NET Standard 1.1 and 2.0+. 14 235 1 merged PR
- hajimehoshi/ebiten A dead simple 2D game engine for Go 13 512 1 merged PR
- filp/whoops PHP errors for cool kids 13 231 1 merged PR
Latest pull requests
Newest submissions, merged ones and those waiting for review.
- properties-window: Fix permission checkboxes needing two clicks with multiple files linuxmint/nemo waiting for review 25 Sept
- fix(downloader): allow remote downloads without a Content-Length pelican/wings waiting for review 25 Sept
- Fix plugin update crashing after the rows are refreshed pelican/panel merged 25 Sept
- docs: clarify write_buffer_size valeriansaliou/sonic merged 24 Sept
- Treat 's before a copula as possessive spencermountain/compromise waiting for review 24 Sept
- Keep the case in toSingular spencermountain/compromise waiting for review 24 Sept
- Keep "never" when going to the infinitive spencermountain/compromise waiting for review 24 Sept
- Give "be" a past participle spencermountain/compromise waiting for review 24 Sept