Why do programmers make complex programs for free?

I studied Python and PHP, and I can imagine how diffcult it might be to code an complex program. Let’s take free video players as an example. I am sure there are thousands lines of codes written to create these software. But why would a skilled programmer write thousands lines of codes (investing a lot of time) and distribute his software for free?

  • It’s a fun hobby
  • We want to build something for ourselves, but once built there’s no reason not to share it
  • It keeps our skills up
  • It’s good advertising for future employers
  • You can sometimes make money off technical support, customization, or “premium” editions
  • It feels good to share with other people
  • It also feels good to earn the admiration and respect of others

I got my current job (14+ years) because of a free utility I wrote and gave away.

Programmers love to code. At least I did from my very first class. I used to sit in the CS lab 12 to 14 hours straight without eating just coding projects. It was the ultimate puzzle and challenge.

Even after getting hired I was at the office coding on weekends for fun. It took several years before the thrill began to turn into drudgery. It’s just a 5 day a week job for me now. After 20 plus years I’m just not as into it anymore.


Distributing the program for free doesn’t mean the programmer isn’t getting paid. I know many developers who write code for their employers or clients, that is then distributed as free open source software.

Most successful open source projects have more than one contributing developer. By working together they can make something bigger than they could alone. And by making it open source, they avoid the overhead of a startup and don’t risk losing control.

Well for your example, video players,
there’s already a myriad of them free ,or bundled.
Windows Media Player

And then there all the DVD player software that get bundled,
and the ones bundles with video cards, and the ones bundles with cameras, and with computers…

So a for sale item has to be somewhat unique or standout…

But you know, even if it is standout and unique, and excellent, it might not sell just because people don’t want to pay…
Or its hard to get known. Its hard to advertise the advantage you offer.

Further side issues are things like patents and copyright … its quote complicated. (perhaps if they collect payment they will get sued ? but they might get sued even if they don’t collect payment ? )

Donald Knuth wrote the mathematical text processing program TeX (with the help of a graduate student) primarily to typeset his own books. He then gave it away to the world. You are free to take it and sell it and a few people have, at least one (for the Mac) quite successfully. He trademarked the name and while you can modify it and distribute it under a new name, you cannot call any variant by the original name. Of course, he is quite well known for this and other works. More interesting is all the free programming that operates inside the basic TeX to improve its functionality. These are not modifications of the original program but packages of macros that operate outside. I have done this myself. Primarily for my own use, but having done it, why not open it up to the world?

Here is a related question. I am a retired mathematician in the 15th year of my retirement. I am still doing and publishing research even though there is not the slightest possibility of gaining anything thereby. Why do I do that? I guess I enjoy doing it. I can find no other answer. Believe it or not, sometimes you do things for the sheer joy of doing them.

Almost every piece of freeware I use has a “premium” pay analogue (and nearly all of them are frequently asking if I’d like to upgrade.) Some (like Spybot) use a “donations” model. For really awesome free programs I often will buy the pay version just so say thanks.

I get paid to write open-source software. I got the job because I wrote open-source software. The circle of life!

First off, “freeware” is not free software, and not open source. They all have different motivations.

In really general terms, Free software is motivated by freedom. Specifically the freedom of the user to run the program for any purpose, to study the program, modify it and run modified versions, and share it with others. It is a philosophical and ideological stance.

Open source is motivated by business interests (you can make more money on your hardware if the software is free and hackable) and technological superiority (any programmer on earth can, potentially, make your program better, and what’s better than a million programmers you don’t have to pay?).

Both of the former have a community aspect. It’s like a gardening club, or a knitting circle. Why would anyone make sweaters and grow food for free? Well, they like their hobby, they like their circle of friends that come with the hobby, and they feel what they produce themselves is better than what they could buy. Remember, for these programmers, they are also users. So they “work for free” the same way you or I might do home repairs “for free”: they are the primary recipients of the value they produce.

Freeware is basically a way to get more ad revenue, or else they hope to convert “free” users into paying users somewhere down the line. There is no source code included with freeware. So it isn’t “free as in freedom” or open as in open source. You just don’t have to pay for it.

why do people climb mountains? because it’s there.

Why do programmers make complex programs for free? because it’s going to be there.