We’re in a golden age of reusable open source code. With GitHub and Maven Central it’s never been easier to create and share code.
This is excellent! Android developers have access to a steady stream of new projects. I keep up by following some Android developers on Twitter and by subscribing to Android Weekly and #AndroidDev Digest.
Releasing a new open source project is fun. Take your most reusable code, polish it off, and publish it to the world! Give back to the development community and earn your reputation.
Free as in puppy
There’s a catch. When you release an open source library you implicitly volunteer to be the ongoing maintainer of that library. It’s an unpaid job that imposes real time commitments.
The work as maintainer is to earn trust. This comes by implementing features, fixing bugs, answering Stack Overflow questions, and by responding to (often inane) GitHub issues. If you succeed your userbase will grow and hopefully it’s mostly fun.
Another option is to not do the work. This feels bad in the same way that ignoring street poverty feels bad. Users of my code ask me for things “Please help with this problem...” and I avoid making electronic eye contact as I pretend to not notice.
I struggle with this. I’m maintaining a few open source projects and have trouble balancing the needs of my users with my other obligations. It seems like every time I respond to a request two more spring up in its place.
The worst is when somebody has invested significant time in solving a problem and I don’t like their solution. “Sorry, I refuse to accept your code that you tried your best at because I have a vague idea of something better. Also, I don’t have time to actually build that something better.”
As a user of open source, it’s easy to see that a project’s owners aren’t participating. I took a quick survey of 18 Android open source projects announced one year ago. 40% of them appear as abandoned and had received no commits in the past six months.
Adding a big “DEPRECATED!” headline on an abandoned open source projects feels great. It sets expectations for people looking at the project. It elevates any other projects that you’re running.
You don’t have to take the project down or explain why. You aren’t a bad person. Just say “This project is deprecated”. Anyone who’s still interested retains access to the code. Maybe your trash will be their treasure!