A questão que as pessoas mais confundem.
O lance não é que não se pode cobrar pelo software. Mesmo sendo open source, o desenvolvedor pode cobrar pelo software. Só que o código fonte é aberto. A grande e primordial briga é pelo direito de alterar o software, sobre tudo se você paga por ele.
Pense só, se você compra um rádio, você pode desmontar ele fazer alterações, trocar os auto falantes para melhorar o som e etc, a única coisa que você não pode fazer é revender ele e dizer que foi você que inventou. Mas você pode dizer que modificou... tunou como um carro, ou sei lá... é essa a ideia.
É claro que a grande vantagem do software livre é justamente o fato de a maioria deles serem gratuitos. Isso se dá, porque a maioria dos desenvolvedores open source preferem ganhar dinheiro com o suporte do que com a venda do software. Mas existem vários programas open source que são vendidos.
Para o software ser aberto ele precisa ter incluído seu código fonte e deve permitir a sua distribuição também na forma compilada. Se o programa não for distribuído com seu código fonte, deve haver algum meio de se obter o mesmo seja via rede ou com custo apenas de reprodução. O código deve ser também legível e inteligível por qualquer programador.
Para proteger a integridade do autor do código fonte, pode-se usar licença restritiva que impede o código fonte de ser distribuído em uma forma modificada, mas isso apenas se a licença permitir a distribuição de arquivos patch com o código fonte para o propósito de modificar o programa no momento de sua construção. A licença deve explicitamente permitir a distribuição do programa construído a partir do código fonte modificado. Contudo, a licença pode ainda requerer que programas derivados tenham um nome ou número de versão diferentes do programa original. Além disso licença não pode ser discriminatória contra qualquer pessoa ou grupo de pessoas.
etc...
Fonte:
http://opensource.org/licenses
O mais importante é não achar que todo programa gratuito (freeware) é código aberto e também que todo programa código aberto tem que ser gratuito... essas afirmações são errôneas.
A principal ideia é a de que o conhecimento deve ser compartilhado, pois assim alcançamos crescimento, aumentamos a qualidade e a quantidade do conhecimento.
Se um software é compartilhado, a comunidade de programadores pelo mundo inteiro pode trabalhar para seu aprimoramento. Agora quando o programador quer criar uma Coca-Cola e trancar a fórmula a sete chaves, cria-se a estagnação. Ele cria uma "tradição" que impede o desenvolvimento, num mundo onde o experimentalismo é fundamental. É como impedir você de tunar o carro que comprou, ou de trocar o captador de sua guitarra, ou de trocar o auto falante do seu som... ou de instalar o Linux no seu PS3.