Este es un clásico que ya se ha comentado anteriormente en El Proxy, pero en nunca está de más recurrir a un vídeo didáctico como este.
A grandes rasgos podríamos decir que el software libre se centra en la ética mientras el código abierto en la práctica, convergiendo ambos en muchas ocasiones al promulgar que las tripas del software deberían ser accesibles para todo el mundo. De ahí que habitualmente se confundan o se hable de «software libre de código abierto» aunque parezca redundante.
Por supuesto, como persona ajena a la programación yo me quedo con la parte filosófica del software libre, pues me parece no solo óptimo en el desarrollo de software sino lo más defendible a nivel ético.