El código abierto y el software libre tienen que ver con derechos: usar, estudiar, compartir y adaptar. El software gratuito generalmente significa simplemente que algo es de uso gratuito.
Dominio público significa que ya no existe ninguna restricción de derechos de autor, o que el titular de los derechos ha renunciado a ella en la medida de lo legalmente posible. Eso es diferente del código abierto.