Recently I caught a conference talk by @rbin of SendGrid where he outlined some benefits of the "Open Source" movement for the uninitiated. Whilst it was a good talk, something about it lodged in my mind. For me the virtues of Open Source aren't as clear as the speaker made out and I'd like to articulate why, based on some quotes and tweets:
Exhibit A: Steve Klabnik on Open Source
Open source is a mega-capitalist conspiracy to reduce programmer wages. ... it's yet another method to drive down costs. ...
The other day I was hanging out with two people and there was somebody there using a jackhammer outside where we were. I said, "Nobody asked the jackhammer dude to work on an open jackhammer project on Saturdays, that would be totally absurd." But that's what we do. Programmers as a class systematically devalue their own labor, doing it for free without being asked to.
It's not universally bad - it's really cool that you can get all this software for free. But, value is being generated from your labor and it's not being captured by you, and that's unsustainable. I'm only able to do open source work now because I'm getting a real salary from Mozilla. They're a one-of-a-kind organization that can afford to pay people for open source stuff ... but the whole world can't work for Mozilla.
He goes on to say how an open source portfolio is now a key job selection criteria which is setting the balance in favour of those who have the free time to work on those projects.
Here we have one of the most prolific Open Source contributors of all time calling out Open Source as a (mostly) bad idea. Particularly when viewed from a marxist standpoint. This begs a questions about when and where "Open Source" steps over the line into being bad, which I'll try to answer.
Exhibit B: Heather Gold - "Designing for conversation"
Nothing brings people together like a shared problem. This is what holds people together. Part of the reason we solve problems isn't just to build a bridge to get across the river - it's because the feeling of doing it together is awesome. That's probably one of the best feelings we have in life.
If we can agree on this premise, I think it's the best explanation of why we as programmers choose to give up our labour for free. Collaborating on a shared problem is awesome. It feels great. Github is built on the fact that having a pull request accepted, or code you've written being used by others, is a universally good feeling. But this feeling is open to abuse when other forces get involved.
Evil #1 - the "awesome feeling" gets co-opted by evil actors
Here I'm mainly talking about corporate hack days. A while ago, I saw a tweet about Unilever running a weekend hackathon. This upset some people and ISTR it making it onto Hacker News.
The problem here is that Unilever have a market cap of around $74 Billion dollars. They could afford to pay every single attendee of that hackathon a handsome wage for their time and ideas and yet they don't.
As programmers, we need to become aware of these issues like Klabnik is telling us to. Hackathons are not evil by nature - at least with doing a hackathon for charity or the government where you can cite some feeling of civic or moral duty. Even at a stretch, a corporate hackathon might be worthwhile if it presents some valuable opportunity for learning. I can fully see that if I was interested in learning how email tech works at scale, attending a hackathon hosted by SendGrid would be a good use of my time. The same can't be said for Unilever in my opinion. If you're attending a hackathon or contributing to an open source project ask yourself - "do these people value my input with the proper respect?"
Evil #2 - we programmers lose sight of the "awesome feeling"
A topical example. Nick Sutterer is the developer of the popular Active Form plugin for Rails. He recently tweeted this:
What appears to have happened is that some other developer has decided Active Form is better than the current defaults in Rails and copied the project wholesale without attribution. The incentive to be a "core rails" committer is a strong one and I can see that, for those without a moral compass, stealing code from another established project is a tempting option. The result? Another dev has "sold out" @apotonick in order to improve their rep in the Open Source world.
What's interesting to me is that some of the comments appear to be questioning this action on the technicalities of the licence involved. That might be appropriate in a commercial transaction, but in an act of social collaboration? I'm not sure. Everyone is giving their time for free and that needs to be respected - the other dev has denied @apotonick the feeling of pride and satisfaction that would have come from seeing his project merged into Rails. We should all learn from this example - the "Open Source spirit" is built on a bedrock of attributing people properly for their hard work. If we don't call this kind of behaviour out then the whole thing will crumble.
Evil #3 - Open Source != sustainable
As a rule, working for free isn't sustainable. That said, in an ideal world we all have a bit of leisure time to spend as we please. If I feel like contributing to an awesome Open Source music programming project and I have the time, that's my perogative. I think this third evil arises when the motivations for contributing get mixed up. When we're not clear about the boundary between hobby projects and work projects things start to come unstuck. If I start out writing a new super fast web framework as a hobby project (perhaps to learn more or because I thought I could do better than what's out there) that's fine. But let's say that project gets picked up and used by thousands of businesses around the world. This project has made the leap from bedroom hacking to critical infrastructure - success? It is a success of sorts. The good feeling of having your contribution used in the world is undeniable. However, Open Source doesn't have a notion of responsibility here - it's quite likely that people will hold you personally responsible for your projects bugs and failures.
Here's a real world example of TJ Holowaychuk who was so prolific that this Quora post questions whether he really exists. He wrote a massive amount of widely used node js infrastructure and then left it to the community to maintain. To reiterate, that's his right to spend his time as he pleases and there's nothing wrong with that. Perhaps he needed to take a paying job? Whatever the reason, he's one of a string of dropouts from the Open Source community which suggests that burnout is a real hazard both to the individual and to the businesses that rely on their work.
What's the solution here? Speaking with some tech people at Wikipedia they seemed to be intrinsically aware of this. Their tools for wikimedia users and developers are built on the premise that if it becomes valuable infrastructure then the Wikimedia foundation will shoulder the responsibility if you choose to abandon the project. For this reason they require that you host on their infrastructure (for free) and publish the source of your work. This helps to take some of the heat off.
Another solution might be GitTip and other ways of recognizing contributions financially. Whilst these are good, I suspect that they lead to a real world undervaluation of a person's contribution.
The last point is that for Open Source to be sustainable, it should probably be sponsored or supported by an organization. The idea of Wordpress contributing back to ElasticSearch through open source is an entirely natural one. Joint ventures and partnerships are common in the business world. Steve Klabnik is supported by Mozilla and appears to be comfortable with this arrangment. I think that as developers, we should develop a sense of which projects are appropriate for hacking on personally and which are better suited to some kind of organisational sponsorship. Secondly we need to be honest about this, both with the community and ourselves.