Software maintenance woes

One of the reasons I spend so much of my spare time writing software, even though that’s the same thing I do for a living, is that I’m incredibly picky about the software I use. I hesitate to say I’m a perfectionist, because that’s not quite true, but I’m almost never satisfied with the way other developers implement things. There’s always something missing or something that could have been done better or something that’s completely unnecessary. So, inevitably, I end up writing my own software to meet my needs.

Since I like sharing and enjoy feedback, I release a lot of my software publicly. Of course, this means writing documentation and managing some kind of stable release cycle and answering questions and all of that; things which I don’t particularly enjoy. And once I stop having a use for something I’ve written, I don’t usually bother continuing to maintain it, which I often feel bad about because this frequently means abandoning users.

The effect of all of this is that there are a million things I want to write in order to meet some need I have, but at the same time I have far too many projects to maintain already. So I shelve the things I want to write in order to keep my grasp on the things I’ve already written, but which I don’t really enjoy maintaining.

I need to find a solution for all of this. In the past, I’ve tried passing projects to other maintainers, but that’s always ended badly (I have yet to meet anyone who shares all of my quasi-perfectionist ideas about project management, much less coding). I’m also extremely wary of popularity; a few of my past open source projects have achieved a fair amount of popularity, resulting in way more work—and way less benefit—than I had ever expected. Successfully running even a small open source project with a lot of users is a huge task.

I feel bad for saying this, but I release my software as open source so that other people can benefit from my code, not because I want to encourage contributions. While code contributions can be (and have been) a huge help, they can also be a huge pain in the ass, and I’m enough of a perfectionist that I’d usually rather write everything myself.

So my conundrum is this: do I keep writing software for myself and just not release it? Or do I continue releasing software publicly and just try not to feel bad about being unable to maintain it?