The word “free” in “Free Software” is about freedom and not about price. The fact that the majority of Free and Open Source Software are also gratis makes the concept somewhat confusing. The interesting thing is that FOSS makes a lot of sense economically and it's actually much more intuitive than the proprietary software model that we are used to deal with. There is nothing wrong with both models, it's just a matter of choice, as a user and as a developer.
To understand the concepts, even if you are not a software developer, it's important to know what software is. If you want to go directly to the money talk just scroll down.
With proprietary software developers need to produce software without making any money at first. Once the software is ready they charge for every copy they can sell. It doesn't strike us when we see the finished box on a shelf but it's actually very expensive to produce software and very cheap to copy it. In other words, proprietary software needs copyright, patents and control mechanisms to ensure their revenue, without them, it wouldn't work financially.
With FOSS there is no definitive way of financing development. We will see later in this post several ways for FOSS developers to make money. It's often the case though that developers create FOSS because they need a software to do something and release it to the public in order to get help from other developers.
Philosophically speaking the main difference between Free/open and proprietary development is actually quite simple. FOSS is created to be used whereas proprietary software is created to be sold. FOSS developers want people to participate in order to make better software. Proprietary software developers want people to pay a licence in order to be able to do something. The consequences are usually subtle but tangible. Proprietary software tends to be more beautiful and user friendly whereas FOSS has a reputation of looking 'unfinished' but offering powerful features.
Software is a tool that you use to create other things (with some exceptions, like games for example). The idea behind freedom and openness of software is basically to give you the control over your tools. Let's just compare it to other tools we use regularly:
Free and Open
FOSS is like a hammer. When you buy a hammer, the hammer belongs to you. You can use it whenever you want, you can lend it to your neighbour, you can replace the handle if it's broken and eventually give it to someone else when you don't need it anymore. The four freedoms of Free Software grants you the right to treat software like a tool, or a recipe.
Proprietary software is like a passport. The passport might be in your pocket but (in most countries) it remains property of the government. It is strictly forbidden to lend it to someone or modify it. There is also an obligation to prove that you are entitled to use it. When you 'buy' a proprietary software, it still does not belong to you. It remains the property of the company who created/bought it. The price you pay for the software is a sort of rent, you pay for a licence to use it.
FOSS is not at all about giving away your work for free, it's about sharing your tools (to make them better tools) and selling your work, selling the things that you make with your tools. Proprietary software is about renting the tools that you make for other people to build things with it.
A big difference between software and hard objects is that software can be duplicated at virtually no cost. That's just the nature of software. Whether companies try to protect against duplication or not, software is copied all the time. Proprietary software just make illegal the act of copying. With FOSS, software is seen as something available in abundance with no commercial value in itself but able to empower the user to produce marketable stuff.
There is nothing wrong with either approaches but they lead to different views and mind sets. FOSS encourages collaboration, freedom and openness. Proprietary software leans towards competition, enforcing control over the users and selfishness.
Developers are hired to create Free Software:
If you need a custom software you can hire a developer to create that particular software for you. The software will belong to you and you will be free to sell it or share it with others, or not (you are never forced to share, you can just as well keep it for yourself). The developer gets paid and you get your software. When developing FOSS, developers have at their disposal a huge repository of preexistent software that they can reuse, they don't have to start from scratch, allowing them to create rather big software with relatively little effort.
But what if I need a really big software that would need more development power than I can afford?
With crowd funding the cost of development is shared among several people. If the software is useful to many people then the chances of cooperating to fund its development will raise. Once the software is ready and used by many people, each user can hire a developer for small modifications, improvements or fixing bugs. The best part is that everybody benefits from everybody else's work, as a community; FOSS is built on top of what already exists.
But if the software is now available to everybody, how can I make money out of it?
There is no cost involved in creating a copy of a software and it's fair not to charge for it. Services on the other hand are needed and valuable all the time. In the end, the more popular a software is, the more jobs it will create. Developers can sell further development, training, support or sell services that are part of a software (e.g. sell music through a free media player).
But what if I just want to develop and not go into another business just to make money?
When you or your company publish a Free Software you are also advertising your skills. People that appreciate your software might consider to hire you (or your employees) to develop other programs. Instead of investing in advertisement, you can invest in programming and in the things you do best.
But I just want to work on my software, I don't want to be hired! Read on...
Many FOSS projects earn money exclusively through donations. This leaves the user free to give something or nothing at all. Although users know that, in the short run, the software won't be any better independently of the amount of money they chip in, in the long run, projects that receive a lot of donations will be able to put more manpower into it. Donations though are not a rocket science and I don't blame those who don't count on altruism to fill their fridge. Nevertheless, it works for some projects.
Delay opening the source code
An interesting way to fund the development of a software without being proprietary is to determine the costs of development and revealing the source code only after the amount is reached, either through donations or sales. ('Blender' did this).
Another (controversial) method of making money with a (partly) Open Source model is to separate "core" from "extensions". With this model companies might offer a FOSS program for free and sell proprietary extensions (or the other way around). It is controversial because, on the one hand, it does not respect the 'freedom' aspect of FOSS and, on the other hand, the proprietary extensions could not be as popular as eventual FOSS extensions.
I hope this post was useful to better understand the FOSS economy and to exorcise the idea that FOSS developers work for free or that it's wrong to make money with FOSS. Feel free to share your ideas on how to make money with FOSS in the comments!
Wikipedia article about business models for open source
GNU article about selling Free Software
Harvard Business School Q&A on mixing open source and proprietary software
How to make money with Free Software (informit.com)
A very good article written by a programmer about free distribution