El primer vuelo motorizado en otro planeta se realiza gracias a Linux y a software libre.
La ideología dominante vincula a la innovación y el desarrollo de productos de gran envergadura con la labor de grandes compañías privadas y con el ánimo de lucro.
Sin embargo, la historia ha mostrado en numerosas oportunidades que la colaboración y el interés por resolver un problema concreto pueden ser motores de grandes cambios. Nuevos ejemplos de ello se desprenden del primer vuelo controlado desde la tierra sobre la superficie del planeta rojo.
El vuelo en Marte del helicóptero autónomo Ingenuity marcó un hito en la historia aeroespacial merced a convenios del Jet Propulsor Laboratory (JPL) con compañías como Lockheed Martin y Qualcomm. Pero también requirió de la colaboración de miles de desarrolladores de software libre y de código abierto que en muchos casos desconocen su aporte al software usado en el proyecto.
Un pequeño vuelo para la humanidad
El 19 de abril despegó del suelo marciano el mini helicóptero Ingenuity. Había llegado a la superficie del planeta rojo el 18 de febrero a bordo del rover Perseverance.
El helicóptero pesa 1,8kg (en la baja gravedad de Marte serán menos de 700g) y está diseñado para ser resistente al viaje en el Perseverance y al entorno marciano. Puede elevarse hasta 5 metros y recorrer hasta 300m (Especificaciones técnicas NASA).
Los diferentes softwares que permiten que el artefacto haga su tarea fueron construidos con la colaboración de miles de personas de todo el mundo, muchxs de ellxs completamente ajenxs a la Jet Propulsory Laboratory (JPL) que está a cargo de la misión interplanetaria. Esto fue posible porque se trató de Software Libre.
Los integrantes de esa multitud participaron de diferentes maneras: unas 12.000 personas intervinieron escribiendo código en los distintos componentes que se utilizaron en el Ingenuity, informando y/o corrigiendo errores, elaborando documentación, etc. Algunxs participaron en software directamente relacionado con helicópteros, pero otrxs aportaron a diferentes proyectos que nada tienen que ver con el tema pero que terminaron siendo incorporados en el largo proceso de construir el helicóptero, enviarlo, controlarlo, almacenar y analizar la información que se genera u obtiene en la travesía.
Software Libre al rescate
El Perseverance pesa más de 1.000 kg y cuenta con un par de “cerebros” formados por procesadores PowerPC 750 (lanzados en ¡1998!) y dotados de VxWorks, un sistema operativo de tiempo real privativo y desarrollado por la empresa Wind River. Los sistemas operativos son los programas que permiten gestionar el procesador y los dispositivos que utiliza, así como ejecutar el software que se desarrolle para él. Los sistemas de tiempo real se caracterizan por establecer tiempos límite de respuesta.
La situación del pequeño helicóptero es muy diferente. Un artefacto volador en Marte debe ser especialmente liviano (ya que la atmósfera es mucho más tenue que en la tierra) y si se pretende que pueda controlarse a distancia hará falta dotarlo de un “cerebro” y de capacidades de comunicación.
Por eso el Ingenuity consta de un procesador más modesto: un Qualcomm Snapdragon 801, lanzado al mercado en 2014 y que fue incorporado a teléfonos celulares como el Samsung Galaxy S5, el Xiaomi Mi Note Bamboo o el Sony Xperia Z3.
La empresa Wind River no tiene un sistema operativo adaptado a las estrecheces de ese hardware. Por eso, el JPL optó por utilizar una versión empotrada del producto más emblemático del software libre y de código abierto: el sistema operativo Linux.
El control del vuelo se realiza a través de programas desarrollados a partir de otro software libre, un conjunto de plantillas, modelos, y generadores de código elaborados por el JPL bajo el nombre de F’ (F prima).
El papel del software libre es también importante en otras partes del proyecto. Según consigna el escritor y desarrollador Klint Finley, el “ecosistema Python” (conjunto de herramientas de ese lenguaje desarrolladas colaborativamente y que tienen gran presencia en el tratamiento de datos) “jugó un papel clave en todo, desde el control terrestre hasta el modelado de vuelo y el procesamiento de datos”.
El Framework F’
Uno de los desarrollos clave para impulsar el vuelo del Ingenuity es F’ (F prima). Se trata de un marco de desarrollo o framework (algo así como una plantilla para desarrollar programas) libre y de código abierto orientado a la creación de software para sistemas de vuelo pequeños.
“Desarrollar software para naves espaciales es una tarea desafiante”, dicen el ingeniero de software Robert Bochino y otros, en una ponencia presentada en la 32 Conferencia Anual sobre Pequeños Satélites (Utah, Agosto de 2018). Pero, afirman, esa tarea es más desafiante si se realiza en el marco de misiones pequeñas, con presupuestos limitados y objetivos ambiciosos.
El marco de desarrollo facilita la creación de aplicaciones para dispositivos diferentes, corriendo en entornos variados y con sistemas operativos distintos.
F’ también incluye componentes reutilizables genéricos que se distribuyen junto al Framework, así como herramientas para probar unidades y componentes que se desarrollen a partir del marco. Se utilizó anteriormente en la construcción de programas para el ISS-RapidScat (artefacto dedicado a medir velocidad del viento desde la Estación Espacial Internacional), ASTERIA (telescopio espacial para investigación astrofísica instalado en un pequeño satélite CubeSat), entre otras.
El caso de ASTERIA puede dar una idea de la potencialidad del Framework y de su carácter de software libre y de código abierto. En una presentación elaborada por Bochino, Campuzano y Day puede verse que el software de vuelo del artefacto constó de 54 componentes, 17 de ellos creados a partir de piezas de F’ y 22 escritos de manera de que puedan reutilizarse en otros proyectos.
El software permitirá desarrollos no sólo para el JPL, sino para cualquiera que quiera usarlo, sin necesidad de un permiso del Laboratorio, ni de la política exterior de los Estados Unidos.
Una victoria del software libre
En una entrevista para IEEE Spectrum, el Ingeniero de Software senior del JPL Tim Canham expresó sobre el rol del software libre y de código abierto en la misión espacial: “Es una especie de victoria de código abierto, porque estamos volando un sistema operativo de código abierto y un Framework para software de vuelo de código abierto”. Canham virtió esas opiniones en respuesta a la pregunta del medio especializado acerca de los aspectos que pudieran ser de interés para los ingenieros, a juicio del entrevistado.
La historia del software libre del Ingenuity evidencia varias cosas: que es posible desarrollar software complejo y de calidad bajo licencias libres; que éste constituye una gran fuente de recursos para reutilizar en nuevos desarrollos; que posibilita el trabajo conjunto de un gran número de personas con diferentes intereses, habilidades y desde cualquier parte del mundo; y que es particularmente adecuado para contextos con fuertes restricciones de recursos.
Para quienes trabajan con software libre, esos atributos no son extraños. Linux, GNOME, Kubernetes, R o tantos otros dan testimonio de esas cualidades. Sin embargo, las particularidades de este tipo de desarrollos, su filosofía y sus estrategias, siguen fuera de las curricula de las universidades argentina, salvo en el breve e impreciso ítem de “Aspectos Sociales y Profesionales” (véase la Propuesta de Estándares para la Disciplina Informática, REDUNCI, 2017).
Quizás esta experiencia del JPL y la NASA dé un impulso a un debate silenciado e ignorado: la necesidad de que las Universidades e institutos de investigación en la Argentina formen profesionales en Software Libre y destinen recursos para investigar y desarrollar software libre.
Vale la pena plantear al Software Libre como una política de Estado que permitiría vincularse a desarrollos avanzados en distintas partes del mundo, impulsar la industria de software local, sin que sea necesario vincularse con ningún monopolio internacional (ni local).
Nota: ¿Software Libre o de Código Abierto?
Las expresiones Software Libre y Código Abierto se refieren aproximadamente al mismo conjunto de programas. La diferencia entre ambas denominaciones está en el énfasis en aspectos diferentes: en el primero se resalta la libertad del usuario y en el segundo se subraya la conveniencia de adoptar licencias libres.
En esta Web preferimos la expresión Software Libre antes que Código Abierto, porque consideramos vital que los desarrollos de este tipo promuevan otros similares, antes que alimentar modelos privativos. No obstante, reconocemos que la Iniciativa de Código Abierto también rescata principios valiosos, como los que plasman los puntos 5, 6 y 10 de la definición de “código abierto”, referidos a la no discriminación contra personas, grupos o actividades, o a la neutralidad tecnológica que requiere en las licencias.
En algunas ocasiones emplearemos la fórmula “Software Libre y de Código Abierto” (o FOSS, por sus siglas en inglés), cuando consideramos importante destacar que un texto se refiere a estos productos, cualquiera sea la perspectiva desde que se aborda; o cuando se intenta preservar la terminología adoptada por otros autores