Editorial note: Yesterday, I sent a draft of this post to Mattt Thompson, the author of the article this is a reply to. He was kind enough to send a very gracious reply. I thought about reformulating the post in an attempt to express or explain our differences of opinion more directly, but decided that I would be doing him a disservice by doing so. Instead, with his permission, this post contains my original draft, followed by his reply. Please do read both.
Before I start, I want to affirm that I’m a big fan of NSHipster, and of Mattt Thompson. Both are big assets to the Cocoa community, and I don’t mean anything here to detract from that.
Having said that (and you can perhaps see this coming by now) the latest NSHipster article, Stewardship, concerned me when I read it. I’ve tried to get my feelings about it to fit in 140 characters since I read the article yesterday, but have failed, so I’m replying here. Again, no animosity is intended; if the article hadn’t been from a source I respect so much, I doubt I’d be bothered to reply at all.
Go ahead and read Stewardship too, if you haven’t already, or this might not make much sense.
Perhaps Stewardship isn’t intended to be concerned with all open source, and is just about open source projects - which in my mind is a higher bar. If that’s true, I find less to fault in it. An open source project is generally understood, I think, to be a grander thing than some open source code. It’s easy, though, to read the article as being intended to apply to all open source code. It starts, after all, like this:
It’s not enough to dump a pile of source code somewhere and declare it “open source”. To do so misses the point entirely.
That’s very easy to read as “you should follow the steps laid out here, or you shouldn’t share your code”.
I disagree with this. If someone wants to post code they wrote online, code that they find useful and think others might find useful too, they should go ahead and do it. There should be no expectations placed upon them - beyond, perhaps, that they accompany it with a license stating how it can be used.
There is, I think, a growing sense of entitlement in the Cocoa community - perhaps in the programming community generally - when it comes to open source code. I think this is bad for the community overall, and I think that the Stewardship article could contribute to this atmosphere.
If you find code online that’s useful to you, that’s really great. It’s wonderful, yes, if the author is responsive and friendly. If it’s stewarded in a manner akin to the one presented in Stewardship, all the better. The people who wrote the code you want to use don’t owe you anything, though. No matter how you find their code to be, they’ve already given you more of their time and effort than they had to. You have no right to expect more.
I don’t want people to be put off posting code by the idea that there is a big checklist of things they have to do first, and if they don’t fill all the boxes first they’re somehow being irresponsible. I don’t want people who do post code to be harangued afterwards about not having followed this checklist beforehand - and I fear that might happen. The Cocoa community - of which, again, NSHipster is a wonderful, valuable part - is a friendly, welcoming one. I would not like ideas like the ones that could be drawn from the Stewardship post to change that for the worse.
As I said in my note at the top, I sent the above post to Mattt yesterday, and we had a brief, friendly, conversation about it by email. I think we do have a genuine difference of opinion, specifically with respect to obligations. It’s perhaps exaggerated by semantics though, and I can understand and respect what he has to say on the matter. To avoid further editorialising and perhaps inadvertently misrepresenting his opinions his very eloquent full reply is below.
In writing that article, this tension between freedom and obligation that you identified is indeed something that I thought a lot about. The way I reconciled this was to create a distinction between “giving something away for free” and the social act of “contributing open source software” (where the former is a necessary, but not sufficient condition for the latter).
Within programmer communities, people freely give away things ranging from Stack Overflow answers and forum posts to gists and blogs. While this may include code (from snippets all the way to reference implementations), it is still not “software”. Code by itself is just encoded knowledge, and like any other knowledge, any notion of obligation to its originator is contingent on the social context (“say thanks”, “be respectful”, etc.) Software has a license, and users; a context and ecosystem and purpose. What I’m arguing in my Stewardship article is that Software does indeed oblige the creator to the responsibilities outlined.
Whether this creates a sense of entitlement is a good question, and we should remember to check this as a community. However, I’d say that having a README, license, and reasonable integration with a package manager is as essential to the value of software as the code itself.
Stewardship creates a virtuous cycle, where well-written software attracts good people, who then go on to contribute good software. When things suck and software doesn’t work, the best people leave; everyone in the community loses.
Yes, stewardship raises the bar for contribution, but it also lowers the bar for participation. I believe that this tradeoff is essential to the success of a programming community.
Thanks again to Mattt for his reply. I am glad to be part of a community where things like this can be respectfully discussed - even if opinions are hard to change - and I’ll certainly still be looking forward to reading the next NSHipster article.