¿Cuándo usar os.name, sys.platform o platform.system?

Hasta donde yo sé, Python tiene 3 formas de averiguar en qué sistema operativo se está ejecutando:

os.namesys.platformplatform.system()

Conocer esta información a menudo es útil en importaciones condicionales, o usar una funcionalidad que difiere entre plataformas (p. Ej.time.clock() en Windows v.s.time.time() en UNIX).

Mi pregunta es, ¿por qué 3 formas diferentes de hacer esto? ¿Cuándo se debe usar una forma y no otra? ¿De qué manera es la 'mejor' (más a prueba de futuro o menos probable que excluya accidentalmente un sistema particular en el que su programa realmente puede ejecutarse)?

Parece quesys.platform es más específico queos.name, permitiéndole distinguirwin32 decygwin (en lugar de solont) ylinux2 dedarwin (en lugar de soloposix) Pero si es así, ¿qué pasa con la diferencia entresys.platform yplatform.system()?

Por ejemplo, que es mejor, esto:

import sys
if sys.platform == 'linux2':
    # Do Linux-specific stuff

¿o esto? :

import platform
if platform.system() == 'Linux':
    # Do Linux-specific stuff

Por ahora me quedaré consys.platform, por lo que esta pregunta no es particularmente urgente, pero estaría muy agradecido por alguna aclaración al respecto.