I recently had a cool experience with open source software and the worldwide internet community.
A while back I was working at a giant insurance company that had a history of ginormous development teams and projects that grew way beyond original scope, went way over budget, and were occasionally canceled even after completion because the final product didn’t really end up meeting the users’ real needs. A couple of my bosses had read up on agile software development methods, Scrum in particular, and wanted to give it a try. Our team was pumped, and we found a toolset that would fit well with the agile approach (mostly centered around Trac and Subversion)…almost. We couldn’t find anything to display a real-time burndown chart, one of the key elements of Scrum. I dusted off some Python skills I’d used a few years earlier at a game dev job and learned how to write basic plugins for Trac. One weekend and a couple evenings later we had the ScrumBurndownPlugin. It was a quick and simple hack, but it got the job done. The team flourished under the agile approach. We rapid-prototyped and cranked out an application that was/is valued highly and used heavily by the company’s employees. But that’s not really the point of this story. The point is that I wrote the plugin at home, on my own time, so I was free to do with it what I chose.
I decided to release it to the open source community. I’ve used a ton of open source software in my career, but I hadn’t ever contributed before. I put it out on the trac-hacks.org site, and it didn’t take long until teams of people all over the world were finding, downloading, and using my little plugin to help manage their own development projects. I gotta tell you, that was a pretty fun feeling! That fun feeling, however, came with a new problem…feature requests and bug reports. Now I’m the type of person who tends to over-commit. Besides my real job I always have a half-dozen business ideas to work on, lots of friends and family to spend time with, a huge list of books to read, and a few crazy adventures to attempt. People were using my plugin in all kinds of configurations and setups that I had neither the time nor the inclination to debug. It was a simple weekend hack, and that’s it. This is where it gets cool. When I didn’t jump right into fixing the problems, other strangers started taking care of them for me. Every so often I’d get a code patch and an e-mail explaining how somebody somewhere fixed such-and-such issue or enhanced the plugin in some other way. Usually the fixes were pretty simple, so I’d look the code over real quick and apply the patch. How easy is that? Apparently it’s not easy enough for me because eventually I fell way behind even on applying other people’s fixes. We started using Redmine instead of Trac at my new employer, and I just didn’t have time to test anything.
A few months ago I put a note up on the wiki page for the plugin apologizing for being so far behind and suggesting that I’d like to hand the whole thing over to someone who would be faster/smarter/better at maintaining it. That’s where my new Dutch friend, Daan, comes in. Within a week of my post I got an introductory e-mail from him. He had been one of the people who had previously submitted some patches and upgrades. He explained that he had already made a bunch of feature improvements on the plugin that he was using internally at his company, and it would be a pretty natural fit for him to maintain it from now on. I was sold, and we switched the control over to him within a week. Now the plugin is back on track with a growing user base, Daan and I follow each other on Twitter, and we subscribe to each other’s blogs. How freakin’ cool is that?! Did I mention that he’s from the Netherlands, 2300 miles away? I intend to do a lot more traveling before I die, but so far I haven’t managed to make it beyond North America…and even though I know that this global collaboration thing has been happening more and more for quite a while now, it’s a really fun experience when it happens to oneself.
One Comment