A maioria dos softwares que você compra ou baixa da Web vem na versão "pronta para rodar" compilada. Compilado significa que o código atual do programa que o desenvolvedor criou, conhecido como código fonte, funcionou através de um programa especial chamado compilador, que traduz o código fonte em uma forma que o computador entende (veja Como funciona a programação em C para detalhes sobre compiladores).

É extremamente difícil modificar a versão compilada da maioria das aplicações e quase impossível ver exatamente como o desenvolvedor criou diferentes partes do programa. A maioria dos fabricantes de softwares comerciais vêem isso como uma vantagem que impede outras empresas de copiar seu código usando-o como um produto de competição. Isso também dá a essas empresas controle sobre a qualidade e os recursos encontrado em um produto em particular.

O software de código aberto, ou open source, está no lado oposto do espectro. O código fonte está incluído com a versão compilada e modificações e personalizações são, na verdade, encorajadas. Os desenvolvedores do software que suportam o conceito acreditam que ao permitirem a qualquer interessado modificar o código fonte, a aplicação será mais útil e livre de erros no longo prazo. Para ser considerado software de código aberto pela indústria de desenvolvimento de software, certos critérios devem ser seguidos:

  • O programa deve ser livremente distribuído (ele pode ser parte de um pacote que é vendido, contudo, como a Red Hat fez com o Linux);
  • O código fonte deve estar incluído;
  • Qualquer um pode fazer modificações no código fonte;
  • A licença não pode exigir a exclusão de outro software ou interferir com a operação de outro software.
http://informatica.hsw.uol.com.br/questao435.htm