diferencia entre codigo abierto y software libre