Why Do People Write Open Source Software?
M.Broil writes "Two interesting articles try to answer this question. One's at NewsForge, the other's at Cybernaut.com. The two writers reach conclusions that are almost exactly opposite. Which one is right? Or is it possible that different open source coders have different motivations? (That's what I think, anyway.)" I suspect as well that each developer has their own reason, ranging from ego to malcontent to benevolence.
People write oss because of the fun and the experiences they get!
Because opennes implies freedom. Humans like freedom.
Second, because we have bad experiences with Microsoft. Microsoft is closed. Proprietary. Restrictive. Opressive. User hostil. Unreliable.
Etc.
Because it's not there.
it seems to me that people get into OSS for the same reason they might get into local government (i.e. small town politics). if someone is interested in government and politics, they try to do something locally first, because a) people will let them and b) there is less bureaucracy. there is usually little or no pay when involved in local government, but just like working on OSS, it gives a good resume boost and gives valuable experience. i guess the only difference is that local government is not aiming to be a competitor to higher authorities :)
BSD is for people who love UNIX. Linux is for those who hate Microsoft.
...to make the world a better place, and just because you can.
Informatus Technologicus
Yeah... they appear to come to opposite conclusions, but if you read both, they suggest what sounds very familiar; money/fame (NewsForge one suggests money (kind of) and Cybernaut suggests fame (kind of). When we look at companies like Microsoft, Macromedia, and Adobe, open source appears to be some bizarre stuff that geeks do, but at the end of the day, it's backed up by reasons that create much of today's society; money/fame.
As the author of a cryptographic toolkit [libtomcrypt] and a bignum toolkit [libtommath], both of which are written in portable ISO C, build out of the box on any GCC equipped machine and generally perform reasonably decent I have two cents to offer.
As an OSS developer myself I have to say that it is not that I'm not willing to go all the way with a complete product it is often that the end users themselves are not willing to put in the effort to review it.
For instance, combined 500 people have downloaded the recent releases of my libraries. Which doesn't seem like a lot except that crypto libraries are generally not horded that much.
Often I will go months before receiving anything from anyone. Whenever a bug is found I often fix it within a few hours at most. Mostly I find the bugs in the libraries as I wander through it.
Though my projects are "limited" scale I bet similar reasoning applies to larger scale projects. If a developer doesn't get user feedback its not only hard to fix bugs they don't know about but often discouraging to continue development.
Tom
BTW my libs are at http://libtomcrypt.org for the curious....
Someday, I'll have a real sig.
The same as with the drawing, music and painting you mention, OSS is written for many reasons.
Some people feed their ego. Others feel it's a benefit to humanity or computing as a whole. Some will find it just easy to do and code to fill in time. Still more will do it because they have a need for a certain app. Some will practice coding, and others to learn, and yes some because creating anything is just kinda cool.
...this leads to the building of integral applications for a platform, and the building of concept applications for a platform, but there is no building of "in-between" applications...
Then pay them to! What does this have to do with Open Source?
We write Open Source software because THIS IS FUN.
Conversely, if you charged for it, people would bitch about it all the time.
Even the "selfish" reasons that can motivate OSS developers don't involve a monetary transaction. The resume-building aspect can, in economic terms, be considered an investment in human capital, an investment made with time and effort, not dollars. For many would-be IS professionals, they may not have the financial resources to take a certified class in $hotnewtech, but jumping in on an OSS project can provide similar benefits. It's a nice alternative means of building a skilled workforce.
Stop by my site where I write about ERP systems & more
They do not realize that they are taking food out of their future mouths.
What a load of crap.
Among my projects is a class I released to phpbuilder.com's "shared code library". It is a method for web servers to send emails through a remote MTA. (PHP's "mail()" function only works on *nix if you have sendmail installed)
By releasing this library into the public (under the LGPL) I've seen it grow and get better as others have used it, and occasionally, tweaked it to fit their needs.
Why people release software to the public is different for each person. It's really like asking: "Why do people drive on freeways?" or, "Why do people dig with shovels?".
Open source licensing is a tool. Different folks use that tool for different reasons. The point, however, is that we *have* this tool, and isn't it kinda neat?
I have no problem with your religion until you decide it's reason to deprive others of the truth.
Russia and Cuba are both just glorified dictatorships, not communist states - no matter how much they claim otherwise. Their governments ended up hoarding all the resources and not really giving back to the people they governed.
That's because when you have free will, you choose not to live under an unfair system of sharing everything between everyone, no matter what their merit. When most people have free will, they believe they should receive similar to what they give. If you work hard, you get more. If you don't work hard, you get less.
I agree with the scientific discovery part, but your statement about food breaks down.
The difference here is simple. The scientist that makes a discovery is paid somehow to do that. They are just going to make another one later. If they make enough, they continue to be valuable.
Their living is new ideas.
OSS people work differently.
They have problems to solve. They make their money solving problems. These solutions typically require tools to build.
By building better tools they are more able to solve problems. Since they can solve more problems, they will make more money.
When you buy a license to run someones software, you are basically paying them to solve your problem. When you hire OSS capable people, you are paying them to solve your problem.
The difference between the two is profound.
When you purchase software, you do not own the solution. You only pay for the right to make use of their solution that you can use according to their terms. It is not your solution.
Spending your money on someone who can build with OSS means that you own that solution. How it is used and what it does is on your terms.
Given the licensing terms today and the potential per user costs they incurr, OSS provides a much better long term value proposition than closed software does.
Anyone who really understands what that means will become a lot more willing to pay for OSS solutions.
Here is another way to look at things. All the money for all the solutions can either go to Redmond, or it can go to the people you have to hire anyway to make that mess work in the first place.
Which will be cheaper in the long run?
Personally, I would much rather support and educate the folks around me and actually get something rather than pay them what I have to and also pay that big and very hungry gorilla in Redmond.
Stealing food indeed.
Blogging because I can...
Another common one is that they have a tool that gets the job done a hoarding it does them no good, so they release it for the common good. Of course most of them do it because they found value in another open source application they used and figure "hey I got something for nothing why not release this if there is a chance it will help someone." A good example of this from my personal experience is CEPS or Cisco Enterprise Print System, while there is arguably not a lot of new code there (it is based around a number of open source tools), the completed package is definitly worth more than the sum of its parts. The author was very happy at finding open and free solutions he could use to get his job done, and in return released the best print system in existance back to the world for all to use. The author gained something from the open source movement (all the free tools that allowed him to make a super low cost print system that beats every commercial system out there) and the community gained something (this great tool). Everyone wins and it costs him almost no additional time or expense to release his work as open source. To check out the project go to the CEPS page at sourceforge.net
There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
I just love the coding, I don't do it for anything else, except pure love. If someone else wants to make money from what i write, let them. I just want to code. If someone else wants to modify my writings, let them. As long as I'm able to code, no-one can take away the fun from me. If someone wants to write closed source software, let them. It's just fun to write, if I can in any way help some-one else, while I'm having fun, why not. It's just plain and simple fun, let's keep it that way.
They both assume that open source programmers write code for the benefit of others. While this may be the case for many pieces of software, most software is written for the author. If an author needs a feature he writes it.
If he's reasonably nice, but too lazy to arrange payment, he'll often share these changes. I'd wager almost all the device drivers for Linux were written by someone who owned a device that wasn't already supported in the OS.
As an OSS developer myself I have to say that it is not that I'm not willing to go all the way with a complete product it is often that the end users themselves are not willing to put in the effort to review it.
End users don't want to review products. They just want to learn the minimum necessary to use them, to get done what they need to.
Companies have teams of people that they pay to review and test products. This is the only way for them to get large amounts of feedback during development; if they just threw their unfinished product at end users and said "Here, find out what's wrong, and by the way, we won't pay you," the end users would go "Pshh, find out yourself. Then deliver it to us."
The coolest voice ever.
See how much better the general culture of open source makes things? Even little things help, and it is a breath of fresh air if you've been looking for things in fields where thay want to gouge you for every penny.
...because they love what computers could be.
I've always thought that the great thing about computers is their mallability - the way you can change the way they act.
Then comes issues like licensing, and the way that proprietary software can only be extended using special macro languages.. These things drop artificial flexibility barriers onto a completely open system - a very sad waste of the potential of such devices..
Because malleability is the best trait of computer programs over specific, fixed systems, it is only at its best if no such artificial barriers are imposed on the system.
The open source model really just seems like a natural method of software development that avoids such wastage...
My company pays for the service of writing custom embedded software for the product they sell. My previous company paid me for the service of writing custom software for their internal use and for their web site. A vast majority of programmers work this way.
Other than that, I think you make a good analogy. What you fail to mention is that scientists get the benefit of the scientific research of others. My main motivation when I contribute to open source projects is that I want the free software that others contribute. I realize that if everyone just leached off of the system then Linux wouldn't exist at all so I try to do my part.
This space intentionally left blank.
Huh, what about, "needed a feature that wasn't there."
That is the main reason why I contribute to Open Source projects. I need something, it isn't there, I open the source and add it.
Maybe this is a list of why one would start an Open Source project?
The world is neither black nor white nor good nor evil, only many shades of CowboyNeal.
hiding under the pillow of the "Open Source" mantra.
This article should really be titled...
"Why do people write Unix software?"
Right? I mean, that's really what we mean here right? All those things about being creative and experimenting and having fun coding...well, I mean that can all be done with closed source programming too...right? The only difference is that when you are ready, you throw your code to the hounds for inspection, and acceptance.
Anybody can "code". Whether it is closed source, open source, shared source, bla source doesn't matter. I've been coding for years. All my code is closed in the manner that I haven't released it. Yet, I still get joy out of being creative.
Most, so called "open source" coders are simply programmers who want their codebase to "take-off" so they won't be so alone in the world and they can be recognized with fame and possibly fortune. It works that way in the "closed source" world too. How do you think people like the "Woz", McAfee, Norton got started?
If anything you do is included into a greater whole it will give you more security. Open source coding is possibly a "vice" for some people, a "coping strategy" for others. Some people drink too much, smoke too much, do drugs, gamble, talk on the cell phone too much, there are many vices in this world for coping.
I suppose many code "open source" to support and protect their knowledge base. That's what this is really about right? You spend years learning and perfecting your skills in an OS, or language, and you don't want someone to just take all that away. You don't want Microsoft to "win" and Unix/Linux/Open source to just die, right? I mean, that's what E.S.R was doing when he wrote his famous paper right? He was protecting his investment.
Well, what happens when someone who has invested their life in Microsoft products and tools sees that others are encroaching on their turf? Don't they fight? Don't you fight to defend and protect your life and investment? Don't you write more code that people might use freely so that you won't lose everything you have in your head?
In short, there are many reasons people "code". Some learn, some create, some research, some use that code to support an existing infrastructure, some want success, fame, and money. These things have nothing to do with "open-source" per se, except supporting an infrastructure, and even that does not require you to "release" your code.
Off soap box.
-2 cents.
I take it you don't have much of a connection to the scientific field in your daily life.
Sure, there is a vast international academic community that shares their discoveries and operates on a beautiful principle of cooperation (but only within the acadmic community). But for a biotech/pharma company, scientific research is an unnavigable tangle of patents and licences. You think that tech patents have gotten out of hand? For years it's been much worse for biotech - anything and everything is patentable and patented - sequences of only a few amino acids, genomes of whole organisms, very basic research methods, etc. For a long time companies have been submitting patent applications containing hundreds of pages of any sequence they could come up with, in the hopes that some of it might be useful later. In many areas you have to pay off millions of dollars in licenses to large pharma companies just for the privilege of doing research on that particular subject.
No, it's a very long time before a very large portion of scientific discoveries make it to the public domain. And don't forget, it's the industry not academia which does most of the science that directly affects our daily lives.
First, most OSS developers do not think they can make money selling their software. They think that software that sells needs to be super stable and perfect, with a perfect UI.
Oh, btw, I just assumed you were joking here - they are free software developers, not blind morons with no understanding of what software is. Incidentally, please do show me just one example of an application that's "super stable, with a perfect UI", commercial or otherwise.
sic transit gloria mundi
The open source model certainly resembles communism (socialism, actually), but the differences are greater than the similarities. First of all, for the large part free software relies on capitalism, it needs that class of educated and reasonably well to do people who can afford to spend the time doing what they like. Secondly, this model is applied to only a specific product, one for which almost limitless resources exist - the "raw materials" so to speak, for software are time and bandwidth, both of which can be found in abundance in even a moderatly sized group.
There's obviously a lot more to it, all of which kinda points to the fact that you can't just say "free software == communism, ergo it's bad", there's quite a bit of apples vs. oranges here. But, of course, many of the ideals held by many in the open source community are very much the professed (not necessarily practiced in reality) ideals of communism, not all of it is a bad thing, after all.
Incidently, what makes you say that communism failed? There are still plenty of communist countries in the world.
sic transit gloria mundi
There was also a bonus. When starting a job you often have to get a utility library to make life easier. With the open source project under my belt, I could just import it and start using it.
You conclude open source is based on the principles of communism. Not sure how you come to this conclusion. Most open source authors write the software because *THEY* wanted the software, not because someone else did, specifically. It just so happens that the software might be useful to someone else too, so if the source is openned up, a lot of people can work on it, and the original author gains directly from other contributions as well. Communism? No... it's quite selfish, actually. It just happens to be an interesting upshot of this form of selfishness that a lot of people happen to get something out of it.
It might also be worth adding that real success is measured not by a bottom line on a bank statement, but solely by the measure of satisfaction that one has with oneself. Anyone who says anything other than that is probably trying to get you to do something for him.
File under 'M' for 'Manic ranting'
As a potential developer and a user, I can give you my $.02. This is sorta ranty, so I apologize in advance.
Trying to figure out NEEDS as a user is a big problem. I've reviewed (as in looked at) hundreds of programs, dozens in the same software category or function, and let me tell you, it's a damn pain in the ass finding projects (yes, I know of SF.net, freshmeat.net, CPAN, et al.)--not all free software or open source is there of course. Let alone grouping them satisfactorily to test and compare them.
Download, unpack, install, hope the install works, play with, compare, rinse, repeat.
Then, you need to see "why this didn't work", spend days looking over probable function versus actual function, seeing what software program fits best, then implement it.
Need I say it? "ARGH!"
You can go nuts figuring out what to find, what is needed, and what works. Which works best. Gimp? Imagemagick? GD? What if I need to do this later?
So folks either stay with more mainstream stuff (Apache, Gimp, Audacity, blah blah), what is covered in O'Reilly books and the like, or just stare at the code.
I'm sure you write probably damn good software. But after it's all said and done, sometimes the frustration level is sickening enough that you can't really email every damn bug or not that you come across. I've tried on many projects. Half the time, you get no response. The other times, you can stuff like "That's a feature" or "That's planned for future use, this is a late beta". Many times, you find out you know more than the person developing it, esp. code that is in alpha or on Sourceforge.
Worse, and I run into this frequently, I get back "The program isn't meant for that" or, what makes me really feel shitty, "You don't understand the spec" (and I should out, sometimes RFCs and the like aren't enough, e.g. mpeg2 books cost generally over $50 a pop, some nearing a hundred, and the spec itself is over $700, so you end up feeling like a dick when you can't explain what is going wrong or why the damn thing you tried to do turned into a pixelated blotchy mess).
You can lose your hair or turn it grey with this stuff. Ever try to get a spoonfed description of most BSD stuff? You can't really; books out of print, no longer relevant, code changed, blah blah. Linux? Run to the O'Reilly section. Sets you back $25 and you stare and hope you can implement it sufficiently, wondering "oh hell."
So don't feel bad if no one contacts you. I should mention something else. I mentioned a deficiency in good project development and developers who start projects but don't understand them. There's also the other side of that....
It's more than likely that you're just too damn good and don't realize it. iow, you mention 500 d/l your program. You seem to recognize the lib's place. Now, how many of those really understand what you wrote? Can code? Can recognize a bug? Actually uses the software for it's more or less nonguaranteed but intended purpose? Has all that and the time to understand what is going on? Then write in? You'd be lucky if you got a few emails a month regarding the project at all unless your documentation is ridiculously detailed and extensive.
Case in point--OpenBSD. The folks there know their stuff damn well. Many "bugs" and fixes come after the biannual releases; their bugs found when people download the latest releast, not the latest -current to bug test. The developers know this, they have a small but generally wise and active (quiet) community, the developers plead, and yet still, every damn time, wait a month, and you'll apply 5-10 patches, most from minor dippy stuff that should have been caught earlier.
Thus is the software cycle. Gotta love it.
i don't want to be told what I can and can't do on my computer.
writing software for free might be a coder pride thing, but folks, vanity don't pay the rent or the groceries. Unless you're independently wealthy, you have to be doing something to pay for the pork and beans.
;)
Hobby: "An activity or interest pursued outside one's regular occupation and engaged in primarily for pleasure."
Nothing there about needing to be independently wealthy to have one
Liberal (adj.): Free from bigotry; open to progress; tolerant of others.
I don't think its a communist/capitalist comparison, more than a democratic/totalitarianism comparison. OSS is democratic, everybody has a say, everybody is involved in development. Closed source, I.e. Microsoft's empire, keeps a vast amount of freedome from the end user, leaving little to no say in how the product will be like in the future. Now back to your capitalist/communist analogy: who says you can't make money off of GPL'ed or other OSS licensed software. Look at Redhat, IBM, Sun, Novell, Apple, TiVO, and other companies that use/make/help develop OSS software. In fact you can see OSS as having more to do with capitalism: A person develops a program, releases it under GPL. He sells it and makes a profile. Another programmer comes along, takes the source modifies it releases it, makes a profit off of that too. Even though the two projects are very similar, they still compete, which is one of the basis for capitalism.
probably isn't a project that resonates well with most OSS programmers. write a program that'll do the opposite to php and I'll beta test the hell out of it. Might eve get inspired to help you.
Apocalypse Cancelled, Sorry, No Ticket Refunds
I myself make the source code for my software freely available for the purpose of scientific dissemination. I work in a field (computer vision) where complex software is developed and forms the basis of experiments. Publishing papers which describe the algorithm and results is the main output but this has some limitations. Often there isnt the space to describe all the subtle aspects which make the program work. Perhaps the author does not even appreciate themselves what it is which is really driving the process (code can chge an aweful lot from conception to use). Also we want others to build on our work and that process is made much more difficult when everyone has to re-implement algorithms from scratch, possibly from incomplete or inaccurate papers.
Sharing code to explain techniques is something that has happened in experimental science for many years. Mordern open source frameworks such as GNU have made this task much easier by providing tools and standards. The web has also massively improved distribution.
-- "Can't sleep, clowns will eat me!"