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?
Comments
Letting the children go...
That said, it would be a good idea to work on your ability to let a project go and live its own life (possibly in the hands of another developer taking over the project) without you being in control. No two developers are the same, so of course things won't get done exactly the way you prefer when someone else adds to the code you've written. Part of the problem is that few developers are as talented as yourself, of course, which doesn't make things easier for you.
This is something you're going to be doing on a regular basis throughout your life, however, so strengthening this skill wouldn't be a bad thing. You should of course be selective in whom you hand your babies over to, and see to it that you give proper instruction to the new caretaker, but from there, things are out of your hands. This doesn't have to be a problem, really. It's just part of life.
Re: Letting the children go...
I think there are scads of developers more talented than me. I just seem to have a knack for simplifying things combined with an intolerance for sloppiness. I hate to argue with a compliment, but I always feel a little guilty when people compliment me on my code. I'm very good at writing elegant code to solve simple problems, but I quickly get out of my league when I start tackling complex concepts.
Re: Letting the children go...
As you well know, I know very little about programming, though I am trying to learn because I too find the programs out there are often not quite what I want. That said...Is there any way you can have an "original" byline, so that when modifications are made it is clear that the program is somehow different from the original, but you still receive credit for that original? I do think GreyStork is right, especially since you really don't seem to enjoy the maintenance, but do enjoy the creation.
Re: Letting the children go...
If a project is kept somewhere like Sourceforge, you can usually keep track of its history and it's always very clear who is in charge at any given time. Of course, Sourceforge has its own set of other problems, but still...
I have a funny feeling…
Sorry for the excessive amount of emails about Poseidon I sent you in the past week. I publish some open source stuff myself and I know what a pain it is responding to users.
Re: Letting the children go...
Don't get me started on SourceForge. I have several projects there, and it's been my experience that dealing with SourceForge's bugs and working around its shitty design is more work than it's actually worth. Until recently, I used SourceForge merely for their CVS repository, but since their public CVS servers broke several months ago and apparently still haven't been fixed, I finally just set up my own CVS server.
Re: I have a funny feeling…
Believe me, if there were more users like you, I'd be much less bitter.