Software: ¿por qué se ignora la portabilidad?

Fuentes: Endian wars and anti-portability: this again?

Este artículo aborda una problemática común en el mundo del software de código abierto: la resistencia a la portabilidad a arquitecturas consideradas 'antiguas' o menos relevantes. El autor, un desarrollador con experiencia en portabilidad, critica esta actitud, argumentando que a menudo se basa en argumentos erróneos y limita el potencial del software.

¿Por qué es importante la portabilidad? La portabilidad significa que un programa puede ejecutarse en diferentes sistemas operativos y arquitecturas de hardware. Esto es crucial para la accesibilidad, la longevidad del software y la detección de errores.

Endianness: El núcleo del problema. El artículo profundiza en el concepto de 'endianness', que se refiere al orden en que se almacenan los bytes de un número en la memoria. Existen dos tipos principales: 'big-endian' (el byte más significativo primero, como lo escribimos los humanos) y 'little-endian' (el byte menos significativo primero). La insistencia en que 'little-endian' 'ganó' es incorrecta y limita el desarrollo. El autor argumenta que ambos tipos son necesarios para un ecosistema de computación saludable, ya que la detección de errores y la seguridad pueden verse afectadas por la elección de un tipo de endianness sobre otro. Por ejemplo, un bug en Git fue detectado gracias a una prueba que falló en un sistema big-endian, algo que no ocurrió en little-endian.

Más allá de la endianness: Arquitecturas 'viejas' y 32 bits. El autor defiende la importancia de mantener el soporte para arquitecturas más antiguas, como Alpha AXP, Itanium, MIPS, SPARC y PowerPC. Aunque algunas de estas arquitecturas puedan no tener un uso comercial generalizado, ofrecen valiosas oportunidades de aprendizaje y pueden revelar errores ocultos en el código base, como el ejemplo del bug de seguridad encontrado en el kernel de Linux en un sistema 586. De igual forma, el soporte para sistemas de 32 bits, aunque limitado en memoria, sigue siendo relevante en regiones con recursos limitados y puede fomentar la eficiencia del código, beneficiando incluso a los sistemas de 64 bits.

En resumen, el artículo aboga por una mentalidad más abierta y tolerante hacia la portabilidad en el desarrollo de software de código abierto, reconociendo el valor de la diversidad de arquitecturas y la importancia de la endianness para la estabilidad y seguridad del software.