My first open-source contribution was in 2009, about a year after switching from Java to Ruby. At that time the Java community didn’t put a premium on contributing to open-source, but Ruby clearly did. I felt some serious social pressure to “get something out there”, but I had no idea what I could build that people might want or benefit from.
My job is primarily interfacing with 3rd-party APIs to online ad exchanges, and the first one was Yahoo’s “Yieldmanager”. Their API documentation was good and had a number of code samples, but they were all in Java and PHP. There were zero hits in their support forum when I searched for “ruby” or “rails”, so to do my job, I had to build something myself, translating the samples as I went.
After a few weeks of hacking, I managed to get a general-purpose solution that simplified the interaction with Yieldmanager’s API across all of their services. I wrapped it up in a gem, which is a small program written in ruby, and started using it for all my internal projects.
I wondered if I should open-source it. It felt like a silly idea: who else in the world was using Ruby (nowhere near as mainstream then as it is now) to talk to this specific API on this specific ad exchange that most people had never heard of?
But that social pressure was too strong, GitHub and Rubygems made it too easy, and it seemed like an adventure: what was it like to be an open-source project maintainer?
So on November 14, 2009 the yieldmanager gem was born: https://github.com/billgathen/yieldmanager
And absolutely no one noticed. No issues, no forks, no pull requests. Silence.
Of course, I was scratching my own itch, so I worked on it periodically for months to expand its abilities, dutifully pushing my changes out to GitHub, cutting new gem versions, all the while feeling completely silly. We have an internal git repo at my company where our proprietary stuff lives: why didn’t I just keep it there?
Besides, the code was a mess: it demonstrated every weakness in my Ruby knowledge. I knew I should clean it up, embrace best practices, etc. There were no known bugs, but internally it was pretty ugly. This got worse as the years went by and I became a better Ruby programmer. I began to relish my anonymity because it meant no one could point out how terrible the code actually was.
Then in 2011, someone did notice. Mike Rosengarten (ephekt on GitHub) contacted me with questions about the gem and how to use it. We chatted quite a bit and I basked in the knowledge that my userbase had doubled overnight. He made suggestions, which I did my best to implement. He even submitted a massive pull request aimed at improving reporting performance, which blew my mind. Unfortunately, it was too big for my brain and skills to handle, so I never did merge it and the codebase has moved on to the point where it’s no longer possible. I’ve felt bad about this ever since.
The amazing part is that at the time, Mike worked at Yahoo! He and some teammates were investigating Ruby and looking for a project to demonstrate to the powers-that-be that Ruby should be a “blessed” language at the company. And they were using my code to do it!
I was floored. It was just one team in one department, but for a project I’d thought would never benefit anyone else in the world, to suddenly find out that an internationally-known company was using it to talk to their own systems? That was more than I ever dreamed possible.
I have no illusions about my coding abilities: though I’ve built some apps I’m proud of and I’ve helped a lot of people get a lot of work done, I’ll never get a job at Yahoo.
But my code got hired. And that felt pretty darn good.