Over half a year ago (that’s way to long to get back to this), I posted an blog entry on what I have observed in open source attitudes. I received a number of comments, the most interesting which is Daniel’s. What I found the most fascinating was the two opposite views I got in the comments.
First, there were the developers, who seemed to largely agree with my comments. Then there were the users, who took offense at some of my comments, or the way that open source developers have treated them in the past.
Now that I have had some more time to think through the issue more, I have some additional comments. In addition to working on Fire, Adium, and Perian, I have also added Sapphire to the list. Here are some of the things that I have learned:
In my previous post, I listed three reasons why a developer might release their program under an open source model. These were:
- The software uses another piece of code or library which requires the work as a whole to be released under an open source license (GPL being most notable here).
- The developer hopes to interest more developers to join his efforts.
- The developer fundamentally believes that all software should be free and is trying to lead by example.
One person attributed these 3 reasons as “blackmail, lonely, and zealot.” While the third is accurate of what I was trying to convey, I don’t think the first two are.
In the case of 1, I have actually known of a program that had part of it released under an open source license specifically to get around the license restriction of the extensive libraries he used. If he had his way, it would all be closed source. This is what came to my mind first, and so I listed it first.
With 2, I was referring to a reason to open source a project, not why to work on the project in the first place.
Anyway, I would like to add a few others to the list which I hadn’t considered:
- A work for potential employers to view
- The developer was feeling altruistic
- The developer wishes to cease involvement with the project but doesn’t all the work to go to waste
- The developer wants others to learn from the designs and algorithms he made
I didn’t realize the potential of the first until I interviewed with a few companies. Instead of asking me about my work experience in the interview, they asked me about my open source projects. I would surmise that they view work on an open source project as more indicative of my passions. If they were able to find a project within their company that lined up with the passions I displayed in these projects, then I would be a much more productive worker for them.
The last three are somewhat similar, but I have seen each distinct forms in the past.
Now, on to the piece that was missing in my first post. Why does a developer work on an open source project in the first place?
- The project is something fun.
- The project’s output (program) is something the developer uses himself.
- He wishes to see some sort of enhancement for his own use.
- He is being paid.
If a developer finds himself working on a project, and he doesn’t find any of the above reasons describing his situation, he should seriously consider abandoning the project. Why work on something that will not benefit you, isn’t paying you, and is simply not fun?
The other side of this issue is the perspective of the users. They can be roughly split into four camps.
- Those who use the software and love it
- Those who use the software, and love it minus a small pet peeve, but are appreciative of what they already have.
- Those who use the software, love it, but demand that things go their way.
- Those who used the software, hated it, and vowed to never use it again.
Those in camp 1 are, in some ways, the best users. On the other hand, those in the second camp are also great, because while they wish for something to be changed, they are still appreciative. Camp 2 users can actually be better than camp 1 when they come up with insightful suggestions, and when they present a bug report, more often than not, the developer will be happy to address them.
Camp 4 users may provide a “This software sucks because of …” comment and you never hear from them again. They may be a bit of a hit to the ego, but just ignore the comment and it’s over.
It is camp 3 that is the destruction of open source software. While they are often a small minority, unfortunately they are the most vocal. They will often take the attitude of the selfish jerk who things that his way is the only way things should ever be done. He will often tell the developers that something must be done in an archaic fashion against the developers thoughts, and may even go as far as to insult them hoping it’ll help get it done. “It is so easy,” and, “this is useless,” are examples of such phrases one may seen being used by such people.
If camp 3 users were eliminated, open source software would be a much richer field. So, what can be done about them? First, watch the google video: How Open Source Projects Survive Poisonous People (55min, 111MB).
In addition to the things specified in this video, I have started employing the phrase “patches welcome.” This has become my way of saying:
No. I have no reason to do what you say, and it will take a considerable amount of time that I do not have. The same is true of all the other developers, and your persistence in demanding this is becoming a nuisance. If you really want it so badly, then you are going to have to do it yourself, find/pay someone to do it for you, or spend the time learning the skill set so that you can do things on your own.
A common response to this is something along the lines of “I don’t know how to program.” This is akin to saying “I can’t do this for myself so you are obligated to do it for me.” No one is entitled to have a program designed for him just the way he likes without paying for it. Don’t bother arguing this point; you’ll just appear foolish. How many people think that you could go up to an professional tax preparing service, tell them that they don’t know how to do their taxes, and have them fill out the forms for free? Not going to happen, is it? So why do people expect the same of open source developers?
So, what is a developers response to seeing reports from users in any of the 4 camps? I cannot answer for them all, but I can tell you mine. When I am perusing through the ticket tracking system, and I see a report/suggestion, I’ll apply the following criteria in decided whether I will work on it or not:
- Is it a quick change (5-10 min. tops including debugging)?
- Did this person show any appreciation for the work I have already done?
- Is this something I want myself?
- Will this be something fun?
- Am I being paid or will this benefit me in some other way?
If the answer to all of those is no, there is no way I will work on it. Anyone who would expect me to do otherwise should get out of their communist mindset. I will not adhere to working according to my ability and pay according to my need. Too many have fallen into the trap of believing this to be a good idea; I will staunchly appose them.
In conclusion, open source software (OSS) can be a beautiful thing, if kept in the proper context. It is starkly different from commercial software in that the developers (in most cases) are unpaid volunteers. Users of OSS, treat the developers with appreciation and respect, and you may convince them to direct the program down your chosen road. If they don’t, do not be upset, insult them, or become more demanding/annoying, but instead thank them for their work and ask if it can be revisited in the future. If you have the cash, you can even offer to pay a bounty on it, open to anyone who submits the accepted solution. Those are the best roads to take, and are most likely to get the results you desire. Follow another, and take your chances.