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.
Why do they only half write it?
Go calculate something
People write oss because of the fun and the experiences they get!
Just to piss off Microsoft.
You are being MICROattacked, from various angles, in a SOFT manner.
some write for recognition, some write for pleasure, some write just cause they are anti-corporation/microsoft.
I personally write cause it passes the time, and because some projects I can submit and get marks in my classes at university for the projects I do.
I guess to answer you have to examine (or almost have to) a persons beliefs and lifestyle. I believe open source is the way to go for most things, some I don't however.
This one of those "well DUH!" kinda articles.
Does it really take people that long to understand that someone may want to create something just for the sheer joy of creating something useful or helpful? How the hell do you explain drawing, music, painting, etc.? Jesus, corporate-boneheads must think everybody is a greedy, sonuvabitch driven only by monetary compensation.
blue
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.
One last final point: Open source was doomed from the beginning. Yes, it's a blanket statement that sounds ridiculous. Keep reading. Open source is based on the very principles of communism: everyone works on it, everyone owns it. The very thing that led to the collapse of Communism leads to the inability of open source to become popular: workers then tend to migrate quickly, and not work hard, since they can't gain anything from working on one thing hard.
Actually, I disagree that communism failed because people got tired of contributing. In my opinion, there really hasn't been a "ideological" communist state to exist yet. 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.
Getting back to open source software, however, a key difference is that you can LEAVE an open source project whenever you feel like. Do some people have the attention span of mayflies? Sure. But sometimes they just need a break to be able to get back into the project. Since this is their personal interest, it's less likely to be subjected to permanent disinterest. Somewhere, somebody loves everykind of project.
blue
I wrote mine and released it OSS for one reason - laziness.
One was a simple addressbook, 2 were games, and one a graphics prog - the latter for Commodore 64s.
I released them all as free software, source included, and didn't know what the GPL was at the time. All the same it was open source, simply because I couldn't be bothered with the marketing/distribution/etc. I may have sold them as shareware or donationware had I a strong enough urge to, but for me the majority of the fun was in writing the programs themselves. Getting money for them seemed more work than I could be bothered putting into it
I'm sure nobody can say why exactly people write open source software because different people are quite likely to have different motives. That said, I think we can look to Slashdot posters for equivalence on at least a few levels.
I say this because I've often wondered to myself, "Self, why do you spend at least a few minutes each week drafting comments to slashdot postings?" And the answer, just for me, varies depending on the day, the post, and my mood.
Some days I post to avoid work and flex, perhaps, a different part of my brain. The same might be said for some authors or contributors to open source software.
Other days, I post because an article catches my interest and I have something compelling to say. Again, the same might be said about open source programmers. They contribute to projects about which they are passionate.
Other days, I post to get a rise out of others or to simply be an attention-seeking karma whore. Surely, some open source programmers contribute for recognition, status, or props from their peers.
My bet is that most people write open source software for many reasons and that, even for an individual, those reasons change from one day to the next.
I think there are a few reasons.
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 and a large advertising budget... Though, shareware shows that this does not have to be the case.
They do not realize that they are taking food out of their future mouths.
Think about this.
When someone makes a scientific discovery, usually, thier discovery becomes part of the public domain and everyone can use it without paying royalties. On the other hand, when someone writes closed source software, they must be paid whenever anyone wants to use that software.
Open source software (via the GPL in particular) causes software development to resemble scientific research, as you give your "inventions" to the public domain, allowing others to improve and advance the "science". The progess is then cumulative (or can be), as other programmers add to existing sofware and improve on it.
Its a conspirary to bring down microsoft. All these "open source" developers are employees of SUN Microsystems, IBM and HP in an attempt to bankrupt Microsoft. GNU is just another department of SUN. SCO was in it too.
There are no more that 500 "open source" programmers...
Linus Torvalds was an agent initially working for KGB and then CIA when the wall went down in Finland. Alan Cox is part of MIT and the Israeli intelligence service.
everybody's doing it.
my boss tells me: We need a program that does foo
So i write the program that does foo, and if i decide that it could potentially be useful to someone else except me, i release it as open-source. I get enough money from my job, and have to write the program anyway. It's not like i'm obsessed with the thought of one day writing the killer program that everyone simply has to have and that i'm gonna become a millionaire from selling it.
Why open-source? Because my software will be customized for our machines, our OS and it may not work anywhere else. So instead of someone else reinventing the wheel, he could just as well check freshmeat, get my program and it would hopefully work with some minor modifications.
Hostes alienigieni me abduxerunt. Qui annus est?
For example, this project was part of code we build at a startup (now defunct). Since then I used it in two other jobs. The team that build this software to start with, is still using it at several different companies.
So, rather than building the same thing again and again, I got to build it once and then since it's open source, I get to use it as long as I need.
...richie - It is a good day to code.
fame, notoriety, power and cold hard cash. ...not to mention the many lucrative job oppurtunities!
...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?
In my own case I do it for two reasons...
1. To show my customer that I can bring them a wealth of functionality with no additional cost (which goes a LONG way towards explaining why we keep getting awarded our military contract year after year even though our expense is a little higher than our competition)
2. To level the playing field and to empower the little guy. Here's a great example, travel agents are being put out of business slowly but surely by airlines and GDSs (SABRE, WorldSpan, etc) by the way of no commissions, etc.
Orbitz, a collusion between carriers to control the distribution channel for tickets, does things like sends ticket holders a notification if their flight is late and so on. Travel Agents have not had that ability until now. They CAN use such CRS solutions like Virtually There and so on but SABRE strips the customer data and will market to their customers behind their backs bypassing the payment of any commisions. This lack of commission is pretty huge. Imagine if your travel agency was turning 10 million dollars worth of revenue for the airlines to get nothing in return?
I created a Perl app called TripTiger that parses CRS terminal data and stores it on the travel agent's web server and stores it in a MySQL database.
The CRS cannot harvest their customers emails, I can have a Perl script running via a cron job to check flight information and send notifications but MOST importantly travel agencies can now control their customer data.
TripTiger is FREE to all trave agencies and they don't have to host with my service at all. It's more important to keep them in business by demonstrating their value to the customer and this helps.
Open Source hasn't crashed the travel technology party and I am trying to help make that happen. Otherwise travel agencies aren't going to be in business much longer.
By the way, I have placed TripTiger on Sourceforge but am having some difficulty with file uploads if anyone can offer advice. I have the spirit just not a master at the mechanics yet.
We write Open Source software because THIS IS FUN.
What is the "open source" you speak of?
/me steps off soapbox and returns to coding
What open source needs to do:... blah blah blah
Sorry, but this concept really drives me up a wall. What centralized 'open source' organization are you talking about? Open source isn't a single group. It isn't a solid movement. It isn't a company or even a consistent culture. Heck, I'm on open source developer, but I have no connections with most major projects individuals think of when they say 'open source.' Sure you have the FSF and the Apache Software Foundatation. There are larger projects like Gnome and KDE and the Linux Kernal. We also have some companies like Red Hat and SuSE. But they all distinct entities! They often disagree with one another. They often disagree internally! So let's repeat it again: There is NO open source master plan!
Despite what anyone tells you, the 'open source' you speak of is a loose connection of individuals each with their own interests and reasons for contributing. And no open source developer has any obligation to make a peice of software any better for you as a user anymore than you do! I'm doing this as a hobby. Because I like it. Because I want to. Because it's fun. And if I don't want to build "in-between" programs like games or media servers, then that's fine. Who are you to tell me I should. Heck, I don't even have to make my software, which I write and give away FOR FREE, any more user friendly than I want it to be. If you want something more user friendly, then WRITE IT YOURSELF!
I can't stand it when open source users cry about why "open source" is going to fail or why the software sucks. Well, the beauty of it is, if you really think that, go over to sourceforge and start your own! Or maybe you could spend some time writing some documentation, or funding the project (in which case the developer would have an obligation to listen) or maybe even submit some code yourself.
But one last time: OPEN SOURCE IS NOT A SINGULAR MOVEMENT. Each developer does it for his or her own reasons and in most cases that means that they'll write and develop what they want to. No one beyond ESR or RMS has ever promised anything more. Linus sure hasn't. So before you claim the movement will never work, you might want to check if there's really a movement to begin with.
Who said Freedom was Fair?
Personally, I think that programming is fun. Sure, it's not as good as gaming, but sometimes I really don't feel like racking my mind with anything but code. Making it open source lets people comment on my poor programming habits, which in turn makes me a better programmer. I think. :)
Plus, it's amusing to see the reactions when I give my classmates [I'm twelve ;) ] a link to the source code.
You know you're a nerd when you can mathematically prove that you have no life.
Off-the-shelf games have a terribly short life span. Other software does as well, but I reached this line of thought through the avenue of games. The general industry now uses a model of approximately "realease slightly premature, patch twice, move on to another product".
As such, if there's a particular type of game that you like to play a lot, over a period of many years, you have what I see are two choices: play a series of disconnected commercial games that come somewhat close to giving you the feeling of having played that sort of game for a while, or play an open source game of your chosen genre.
That's the reason to play. The reason to code is to put back into the community -- either you want to see a change to match your style, or you just want to do something to make sure that this product is still around for you in a few years.
This is such a simple subject it's very easy to over complicate it. While there are a variety of reasons to write any software, the overwhelming motivation for most open source software is obvious.
Someone wants an app that does X in a certain way Y. They could only find an app that does X-3 and it does it in a round about way Z. So they write an app that does X in the certain way Y and release it with the source so that others can modify it to suit their needs as well. Perhaps their mods will be benefitial to the original author as well.
Linux, Perl, blah blah blah, all started this way. It's not complicated or difficult to understand.
What's difficult to understand is why so many people release shareware that does one simple thing and expect people to pay them 20 bucks for it.
http://www.bcg.com/media_center/media_press_relea
OVERALL HACKER MOTIVATIONS
Note: Question asked for top three motivators of F/OSS participation
I live in Soviet Canuckistan you insensitive clod!
Well I've seen lots of dupe articles, but a dupe comment (although I notice you removed the opening paragraph that made you sound really stupid).
I guess you didn't get enough responses to your Communism troll that time.
> So, projects die as they become less "hot" to work on.
:-D)
...or they are finished, no more work required. That happens too, you know.
So do commercial products. If noone bought Windows, do you think they'd continue selling it?
I am an OSS developer. Here's my three reasons why:
1. I want to make the world a better place by contributing with free software. It may not be much, but it helps.
2. Credit. Dislike it if you will, but being an OSS developer is a nice way to show off your code. Read some of the the OpenBSD sources and be impressed. Those guys really know how to code, and the proof rests within the source.
3. I am a "hobby communist". I believe in the communist system - and don't be afraid, communism isn't about torture and repression. The theory behind real communism is sharing the goods.
(But hey, don't get me wrong, not all OSS developers are communists
So, projects die as they become less "hot" to work on.
Reduce the cost of your tools and increase the productivity of your labor.
I've worked as a contractor on a number of database and batch environments in and around a small city. The amount of duplicated effort is astounding. Everyone has their own half-baked, written-from-scratch solution that is expensive to maintain and lacking in some respects. As a contractor, I have the advantage since I can apply some of what I learn at company X to company Y.
However, for legal reasons I need to very careful not to re-use code from one place to another. I'm also very careful not to reveal trade secrets that might seem obvious to everyone but a lawyer. Really, I think most companies see sharing of code as a legal thicket instead of a common-sense approach to saving effort.
(Now, I'm not saying a company should give away all its code, just the dull-but-imporant stuff unrelated to the core business.)
I think most of the primary contributors to significant open source projects do so with the backing of a company with an enlightened view of self-interest. I really hope this view catches on, since it would make the workdays of slobs like me that much more rewarding.
Assuming, of course, they're employed.
The one thing that has bothered me about OSS (I like the concept, don't get me wrong) is that 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.
They say the first thing to go is your penis. Well, it's either that or your brain. I forget which...
No... its been my experience that every human being thinks and acts exactly the same.
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.
Why do people wash their own cars? Cook their own food? Play their own music? Why do people pick up litter on the beach? There are plenty of reasons to do things besides wrapping them up in plastic and putting them on a store shelf. Saving money. Making money indirectly or otherwise fulfilling job or academic requirements. Enjoyment.
Why does this question even get asked? Why are people always questioning the motivation of this particular hobby or activity? It seems like someone out there would prefer that people *didn't* write open source software...
I'm currently developing mod_highlight for Apache. It will have functionality similar to the highlighting in Google's cache. The reason I'm developing it as free software is out of good will. I sincerely hope that others can benefit from my work, and I look forward to receiving their feedback so that I can make my product better.
The NewsForge article concludes that we go open source because "there's something in it for me." And yes, that's true. My #1 marketing plan has always been, "Get it distributed; get it used; get it accepted." Open source is a great way to "get it distributed," especially for customers with thin wallets.
On the other hand, Maslow's hierarchy of needs in the Cybernaut article also applies. At this point in my career life-cycle (I'm 53), I've drawn a line and said (financially), "Enough is enough!" So, it doesn't bother me to "give it away" as much as it would have 10-20 years ago.
Communism has never collapsed, because... ...it has never even existed. USSR was a socialist country, so were all its satellites. Socialism was suppposed to be just a preliminary stage before communism, which never was.
Communism doesn't mean that "everyone works on it", it means only that everyone owns it. In USSR, everything belonged to the state which was supposed to belong to the people, so theoretically I as a citizen of the USSR (only a child back then) owned a microscopic share of everything, but didn't work anywhere.
The idea that communism is "everyone gets paid the same, no matter what they do" is wrong. Being equal didn't, according to (Neo-)Marxist theory mean "finishing the same" (=getting paid the same), but having the same starting position - equal opportunities to get a good education etc. It's kind of the same in the Open Source community - you get your name higher in the list, if you do more work (correct me if I'm wrong), and some people get paid for working on some certain thing.
Why do some projects get "less hot" do work on? Maybe it's because there's nothing more to do?
Hell is not other people; it is yourself. - Ludwig Wittgenstein
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...
Don't forget the fame. The late night stints on Letterman and Leno. The crazy autograph signings. The lucrative pizza and soft drink sponsorships. Sure, the groupy hax0r-chicks chasing you to your hotel room every night are great, but you gotta keep those other perks in mind too.
-Joe G.
Get off my virtual lawn, you damned virtual kids!
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.
...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...
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.
No... its been my experience that every human being thinks and acts exactly the same.
Me too!
I've had this sig for three days.
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'
Disclaimer: Not a coder, just an observer...
Doesn't the OSS community work as a culture where one's motivation comes, in part, from emulating what others have done? A culture isn't centralized, it doesn't have committees or even goals. In many ways, "it just works"...
There are obvious leading figures and groups, of course. And, surely, some people start coding because they read The Cathedral and the Bazaar or they look up to RMS or Linus. Others are just part of it because it works...
On the other hand, contrary to a "real" society, (almost) nobody's born into it. Come to think of it, we also choose our affiliations IRL, so the difference isn't so great...
Alexandre http://enkerli.wordpress.com/
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.
For the same reason cavemen painted on caves. Certain artists/creators have a desire to share their work with the world, to express themselves through their medeium. This idea is not peculiar; this idea is human. It's where the term humanitarian comes from.
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!"