Los pros y cons del software de código abierto

SHARE

Si trabajas en investigación, es probable que hayas utilizado alguna vez software de código abierto (OSS, siglas en inglés): software cuyo código está disponible para leerlo y para jugar con él. Puede que no lo sepas, puede que no te importe, pero es muy probable que éste sea el caso. ¿Has utilizado alguna vez Zotero para gestionar tus referencias? ¿U OpenOffice para escribir un artículo? ¿O LaTeX? ¿Alguna vez has creado un programa en Python o R? Además, ¿tienes un teléfono Android? Si has respondido que sí como mínimo a una de estas pregunta, usas software de código abierto.

En investigación, las cosas se ponen incluso más interesantes: no somos solo consumidores de OSS, también somos creadores. Es bastante común que los investigadores escriban sus propios scripts – o programas más sofisticados – para analizar sus datos, ejecutar algunos cálculos o automatizar algunos análisis. En general, hay cuatro cosas que pueden terminar ocurriendo con ese software:

  1. El software se desvanece y muere en un disco duro olvidado en un lugar recóndito una vez ha cumplido su propósito.
  2. El software es realmente útil y crece orgánicamente, con múltiples (y muy a menudo) versiones incompatibles compartidas entre investigadores y colaboradores de forma privada.
  3. El software se lanza como código abierto con la documentación adecuada, las versiones y (con suerte) una próspera y fructífera comunidad de usuarios y desarrolladores.
  4. El software se comercializa, tal vez como parte de un spin-out, o se licencia a una empresa más grande que lo mantiene y sigue desarrollándolo (por una cuota a pagar).

Hay ventajas y desventajas en todas estas opciones – bueno, sinceramente, no creo que haya ventajas en el caso (2) – pero aquí me centraré en qué ocurre dado el caso (3): lanzar tu software de código abierto.

A pesar de mi entusiasmo por el OSS – de hecho, en mi equipo en Imperial [1], ¡todos estamos muy entusiasmados con esto! –, éste es un paso que no debe tomarse a la ligera. No todo es color de rosa y, antes de tomar cualquier decisión, debes conocer los pros y los cons asociados a tu caso específico. A continuación, puedes leer una serie de situaciones a considerar, sin ningún orden en particular, una vez se lanza software de código abierto:

  1. Es posible que no tengas más remedio que lanzar tu software como OSS. Hay dos razones principales para que esto suceda. Por un lado, algunas entidades de financiación exigen que cualquier software desarrollado con sus fondos se publique como código abierto como parte del movimiento global hacia la ciencia abierta, la investigación abierta y la reproducibilidad (¡lee siempre la letra pequeña!). Por otro lado, tu software puede depender de licencias que requieren que publiques tu propio código – un «trabajo derivado», tal y como suena – con el mismo tipo de licencia (de nuevo, ¡lee siempre la letra pequeña!).
  2. Lanzar tu software como código abierto y mantenerlo en buen estado requiere esfuerzo. Mi punto de vista – y es totalmente discutible – es que el código abierto va más allá de poner tu código disponible para todos. El código abierto también implica la voluntad de cuidar tu código, garantizar su sostenibilidad y dar (dentro de lo razonable) soporte a quienes lo necesitan para instalarlo o usarlo. Como puedes imaginarte, estas tareas requiren bastante tiempo (tu tiempo), pero garantizan que tu código esté bien mantenido y actualizado a la vez que das soporte a la comunidad de usuarios.
  3. Crear una comunidad de usuarios y desarrolladores es clave, pero también requiere esfuerzo. Tener una comunidad de usuarios y – en especial – de desarrolladores con los que compartir la carga de trabajo del desarrollo de tu software es el sueño de cualquier OSS, pero require trabajo. No solamente el software debe resolver las necesidades de muchos usuarios (lo que a menudo es difícil en algunos campos de investigación especializados), sino que también debes interactuar y mantener el contacto con la comunidad que lo utiliza hasta que ésta sea autosostenible.
  4. Lanzar tus herramientas como código abierto no es incompatible con su comercialización: podría incluso ser deseable. Existen varios modelos comerciales que garantizan que esto funcione [2], siendo el más común cobrar por soporte, talleres o implementar funciones personalizadas. Crear una comunidad requiere esfuerzo – y, por lo tanto, tiempo y dinero – así que, para ser sostenible, solicitar algunos ingresos por parte de quienes se benefician del software (en contraposición a las entidades de financiación de la investigación) es algo perfectamente razonable, especialmente en áreas muy especializadas.
  5. Al crear una comunidad de usuarios, puedes aumentar el impacto de tu investigación. Cuando alguien no solo puede leer tu artículo, sino que además también tiene la oportunidad de usar el software que has desarrollado y presentado en dicho artículo, puedes aumentar considerablemente el impacto de tu trabajo. Y ya sabes cómo funciona esto: a mayor impacto, más citas, más oportunidades de colaboración y más posibilidades de darte a conocer en tu campo de investigación [3]. Si tu campo es investigación y no logras entender esto, ¡entonces me rindo!
  6. Una comunidad en torno al OSS aumenta la calidad y las capacidades del propio software. No sois únicamente tú y la gente en tu misma órbita quienes encuentran y arreglan errores en código (bugs), piensan y escriben nuevas funciones en el código, las prueban, etc. Hay muchas terceras partes (potencialmente en todo el mundo) con una gama de habilidades y conocimientos especializados que trabajan en el desarrollo del software. No nos engañemos: para que esto funcione, se requiere mucha coordinación y tener una estrategia clara a seguir. Si estos puntos se cumplen, ¡puedes ganar mucho más con menos esfuerzo! No es casualidad (o altruismo) que las grandes empresas tecnológicas como Facebook o Google hagan que gran parte de sus productos sean de código abierto: ganan miles de desarrolladores dispuestos a ofrecer su tiempo para mejorar esos productos para el beneficio de toda la comunidad, así que todo el mundo gana.
  7. Trabajar en OSS es divertido y satisfactorio. Es muy gratificante saber que estás contribuyendo a algo más grande que tu propia investigación privada y que tiene un impacto claro e inmediato. Además, trabajas con otros en lugares distantes y aprendes nuevas habilidades casi sin darte cuenta. Y también hay un montón de oportunidades esperándote. Octubre es Hacktoberfest [4]: una celebración de OSS, una iniciativa para crear y promover comunidades y herramientas de buena calidad. Si tienes algún código que necesite ver la luz, ¡ahora es el momento de publicarlo y aprovechar el impulso de una comunidad tan maravillosa!

Hay muchos otros aspectos que también deberías considerar – ¡ni siquiera he mencionado los diferentes tipos de licencias de código abierto! –. Sin embargo, si tuvieras que quedarte con un único mensaje, debería de ser éste: tener un próspero OSS requiere una comunidad de usuarios y desarrolladores a su alrededor, así que ve preparándote para invertir tiempo en él si quieres aprovechar al máximo tu herramienta de código abierto.


Por Diego Alonso Álvarez (@[email protected]), Ingeniero de Software de Investigación (RSE), Jefe de Equipo. RCS-ICT, Imperial College London.

Más información:

  1. [Disponible solo en inglés] Imperial College London, 2022, Research Software Engineer team. Lee más sobre el equipo de RSE aquí.
  2. [Disponible solo en inglés] Business Models for Open-Source Software. Fuente: Wikipedia. Disponible online aquí.
  3. [Disponible solo en inglés] Making Research Software Open and Shareable (2022). Fuente: Imperial College London. Disponible online aquí.
  4. [Disponible solo en inglés] Hacktoberfest (2022). Disponible online aquí.

SHARE