Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
Why programming open source?

I'm having trouble understanding why people dedicate their time to an open source project that's free as in beer instead of focusing on a closed source, paid project.

Closed source projects seem to be more commercially viable, so why do programmers open source their code and make it free when there are commercial opportunities for it?

share|improve this question

marked as duplicate by Karl Bielefeldt, Yannis Rizos, Glenn Nelson, Mark Trapp Nov 27 '11 at 1:38

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

2  
You might find "The Magic Cauldron" an interesting read. See a bit down on this page: catb.org/~esr/writings/homesteading –  user1249 Nov 26 '11 at 19:49
    
Hi Kim Jong Woo, Programmers.SE is not a discussion forum: questions here about getting answers, not telling people your ideas. In order to keep it open, I've rewrote your question to focus on getting an answer instead of offering your own opinions and thoughts about the subject. –  user8 Nov 27 '11 at 1:15
    
@ThorbjørnRavnAndersen that article looks great. bookmarked. –  Kim Jong Woo Nov 27 '11 at 2:35
    
@KimJongWoo, when you've read it you will have answers to your next questions too. –  user1249 Nov 27 '11 at 14:28

7 Answers 7

up vote 4 down vote accepted

Even as a purely economic decision (which it isn't, as several others pointed out), the rational function to optimize is your cumulative future value, not your immediate future value. By working on a non-paid project, you may increase:

  • Your competence
  • Your reputation
  • Your devotion to the profession (i.e, to a hiring manager)
  • Your mastery of a potentially profitable domain (e.g., a new language, hardware platform, or domain)
  • Your association with a product for which people will pay support

All of which may maximize long-term economic benefits.

share|improve this answer
    
+1 though also worth pointing out that long term benefits as defined in economic theory can and should include things other than money (satisfaction in making the world a better place? fun?). Anything that you would actively choose to obtain in a trade-off against alternatives can count as an economic benefit. And yes, I Am An Economist. –  mikera Jan 6 '12 at 1:32

This is probably best stated by the Public Domain Manifesto.

Beyond the theory and such, running a business is simply a pain in the butt. Many developers want to build useful software that gets used by people. Selling and supporting software takes an enormous amount of time, energry, and (most likely) skills that most developers simply do not have.

share|improve this answer
    
+1 this is a plausible explanation for the described behavior of why some programmers do not pursue commercial profit, running a business is a different game on it's own. –  Kim Jong Woo Nov 26 '11 at 6:39

There are as many different reasons as there are programmers who make choices. Here are some:

  • You just need the software to get work done.

  • If you open source the software, other people will add features they need and you will likely get them for free.

  • Contributing to open source projects is fun, boosts your ego, and may improve your prospects for a job. (Your resume is verifiable, and companies may well find you.)

  • You hope to make money from donations, paid support, or getting paid to add needed features.

  • The base software that would make your job easier requires you to open source the resulting software. Making a version you could keep proprietary would take more effort.

  • You don't have the ability to support software, and if you are going to charge for it, you pretty much have to do that.

  • Money is just not a big motivator for you.

  • You want your efforts to have as great an effect as possible.

  • You have ulterior motives that will make you money. For example, Google's Android is open source, but promotes Google's search, voice, and location services which are highly profitable.

The last two jobs I've held, both with six-figure salaries, were both offered by companies that found me based on my contributions to open source or free projects.

share|improve this answer
    
+1 This is a very good and comprehensive list. –  Kim Jong Woo Nov 26 '11 at 21:38

Here's one list:

  1. Learning
  2. You realize that the free stuff like linux didn't happen without hard work, and you want it happen again
  3. complexity of software is just fun
  4. it's just better alternative than anything else available
  5. you already have a job, and another one is just not worth it, but keeping your skills up-to-date is still important
  6. Ability to choose your own projects and techniques and conventions you use -- if money is involved, this choice is often taken away
  7. no micromanaging managers
  8. money makes it more difficult to distribute the end result, for no good reason
  9. all distribution channels where money moves are closed and not available - and if they are available, they all limit the end user availability(which is more important) -- last time we tried the money distribution channels, the contracts made it impossible to use other distribution channels -- exclusive contracts.
share|improve this answer

This has been discussed on lots of blogs by many people with different reasons. Here are some of the reasons I can remember:

  • Building up experience
  • Enhancing resume (point to the open source project during interviews)
  • Enhance the free product with an additional monetary offering.
  • Not enough interest to polish it for full commercial release
  • "Moral" reasons as you suggest.
share|improve this answer

Software is a medium of expression. Some people post photos to the web where anyone can see them. Some people, even professional writers, also write a blog. Some people publish web comics. Some people enjoy answering questions on a programming forum. Some people like to write code.

share|improve this answer

In my case, I use lots of open-source software (OSS) at work.

When I need something a little better than what's available, then I evaluate commercial software. Sometimes, I find that developing what's missing from OSS packages is cheaper than the commercial offerings, especially when it demands a lot of customization, since these can be charged by man-days.

In that case, it makes sense to contribute to the OSS to benefit from the already-written base.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.