NOTE: See Consumer-Developers and Contributor-Developers for a more carefully thought out exploration of the problem underlying this post.
I fear there’s been a misunderstanding.
Judging from your comment, I see that you [read my email/looked at my source code/downloaded my library]. I’m glad to hear you’ve taken an interest in what I’m doing: it means that I’m probably doing something interesting or useful, which is good. But the [demand for a fix/unconstructive feedback/derogatory discouragement/flame] you sent me implies that you don’t really get our relationship.
Now, I don’t want to go all Zed Shaw on you, but the way you’ve come at me is like a girlfriend who’s asking me to fix her stopped-up toilet. The reality is that you just took the toilet I set out on the curb with a “FREE” sign, installed it in your house, discovered it’s stopped up, and now you’ve come back and asked me to fix it like I owe you something. You’re not my girlfriend: you’re someone who took my free toilet. Plunge it yourself.

Now, I appreciate you taking my free toilet. That is, I find it a bit gratifying that you’re taking an interest in the open source project. But the reality is that I’m an open source developer: nobody’s paying me to do this work, so insofar as this project is concerned, I work for myself and for free. I’m doing it because I find it interesting or useful to release my project. I wrote CacheMap for JConch because I got tired of re-writing that code at client sites, and I wanted to be able to pull it in. I wrote the Perl text cipher libraries because I wanted a simple way to obfuscate cookie values for a Perl CGI script. GORM Labs was just seeing how hard it was to push that codebase. And I wrote Autobase because I saw Grails heading the route of Rails migrations, and I hate Rails migrations to a point which is downright unhealthy for my soul. Note that nowhere in these explanations do I refer to you: it’s nothing personal, you just don’t factor in to my decision to work on these things.
Now, I’ve done a lot of dreary work on these projects and I don’t have a monetization plan for any of this software, so I figured I might as well share it. I tend to share under the WTFPL, because most of the code that I crank out is stuff that someone else could crank out pretty quick if they decided to bother, so it really doesn’t have a ton of value. If you want to take my code and use it in your framework or application, have a blast. If you want to create derivative works, be my guest. I’d appreciate an e-mail or a hat-tip in the source code or a link to SmokejumperIT, but whatever. The reality of the situation is that it’s a rare open source project I’d bother enforcing the licensing on, so any license I’d drop on there is really just a recommendation anyway1.
But the tone of the WTFPL should give you a pretty good hint about my attitude towards free support: I’m not going to do it. Sure, I may do a bit of work here or there because I am (in the end) a nice guy or I might find the problem interesting, but the way you came at me—as if I owed you something and should have jumped up and fixed your bug right away—shows that you expected much more. And there’s a reason why I don’t do free maintenance: I tried doing things that way before, and I ended up losing a contract and getting nothing out of it. To be clear: I used to care more and put in more free work on my open source projects, but then I found myself having spent too much time on free, not-feeding-me-and-my-family work and losing out on my contractual, feeding-me-and-my-family work. Worse, I found myself growing to hate my open source projects, because they weren’t interesting or fun anymore. At one point, I seriously considered stopping all my open source development altogether because my heart just wasn’t in it. And the only thing I got out of that bleak situation was fewer JIRA tickets and the occasional complement. Forget that noise.
Now, all of this may seem a bit harsh, but let’s analyze the relationship a bit closer. For me to do work for you, there’s got to be some kind of social bond; some kind of give-and-take; a bi-directional relationship wherein both parties have given and received. At the point when you’ve come at me with your comment, our relationship consists of one point of interaction: I’ve put work into a project and released it, and you’ve taken the project. See the lopsidedness? You’re not doing me a favor by taking the project: I have no social bond with you because you decide to take my free toilet. If you want me to do some work, a kind of quid pro quo is required up-front: some sign that you’re in the relationship, and the relationship will be give-and-take. I don’t keep careful books on how much I’ve given or taken from people, but in your case, I don’t have to: I’ve given something, you’ve given nothing, and now you’re demanding more. That’s not the kind of relationship I care to be a part of.
There’s lots of ways you can build a better relationship with me. You could try the sycophant route: stroking my ego and telling me how awesome I am and my project is. You could try the buddy route: buy me lunch or a beer and chat me up and then ask me to do some work later. You could do something awesome which I want to support (like GroovyMag or G-Func), and then sell me that I’m helping that awesome thing by helping you out. You could even go The Traditional, and hire me as a consultant to work on your project, putting me in a situation where building out the open source project is useful to me.
The best way to get me to help out, though, is to show that you’re interested in driving the open source project forward, too. That not only do you have a consumer relationship to the project, but you’re willing to be a producer. If Vaclav Pech came to me and asked me to do some work, I’d do it: but the guy put in serious hours building out the BackgroundThread plugin. And Hamlet D’Arcy produces such astoundingly useful stuff that I’d bend over backwards for him.
But you? You haven’t done anything for me except [knock my interest/critique from your armchair/whine about the API/complain it doesn't work]. That’s not helpful, and you haven’t sold me on the idea that I should care. Given that you’ve already got a gripe, you’ve even got an obvious piece of work to be doing: fix your gripe, and then share the fix with me2. I even make it easy: my code is mostly on GitHub, where you can fork the project at the push of the button. For my stuff in Subversion, feel free to create yourself a branch and go nuts. Whenever you’re done, let me know and I’ll take the fix: that’ll go a long, long way towards improving our relationship.
And if you don’t care to improve the relationship, that’s fine with me, too. Just don’t bitch about my free toilet being clogged.
Sincerely and on behalf of all open source developers who care to opt-in to this license,
~~ Robert.
PS: Have you taken a look at my Retainer service arrangement? It’s nominally for Grails, but we can do that for any open source project of mine you’re using.
1 Note that if you encounter an open source library of mine that’s licensed under something different, I actually mean it. Or it’s a derivative work of someone else who may actually mean it. Either way, you probably want to be paying attention: GPL means GPL.
2 If your gripe is that I shouldn’t be implementing the functionality or working on the project at all, how about you just go away altogether? I have no vested interest in you using my code, so I really don’t care if you don’t want to.
Related posts:
Pingback: Sealed Abstract » Why the GPL sucks
Pingback: Arto Bendiken (bendiken) 's status on Friday, 24-Jul-09 22:33:10 UTC - Identi.ca
Pingback: Enfranchised Mind » My Stuff in August GroovyMag and Grails Podcast #91
Pingback: Enfranchised Mind » Open Letter to Burt Beckwith
Pingback: Proc#curry | Chain Links #014
Pingback: Cry for Help | Enfranchised Mind
Pingback: Arto Bendiken (bendiken) 's status on Wednesday, 16-Sep-09 15:02:11 UTC - Identi.ca
Pingback: Updated GORM Labs and JQuery PeriodicalUpdater | Enfranchised Mind
Pingback: Consumer-Developers and Contributor-Developers | Enfranchised Mind
Pingback: Enfranchised Mind » Marc Palmer: “Do we need a commercial market for Grails Plugins?”
Pingback: Does Grails have a problem? « The MetaSieve Blog
Pingback: Why the GPL sucks | Sealed Abstract
Pingback: Essai sur les logiciels, les systèmes d’exploitation et sur les licences libres | Méchant Geek