El software de código abierto o Open Source, es software cuyo desarrollo es realizado de forma abierta y colaborativa, permitiendo el acceso del público en general a su código fuente. De esta forma, es incentivado un modelo de desarrollo global y descentralizado, donde se busca obtener ventajas en el proceso de desarrollo de soluciones tales como velocidad, seguridad, mayor innovación, disminución (o distribución) de costos, interoperabilidad, intercambio de ideas, conocimientos, entre otros.
También, cuando hablamos de Open Source es necesario aclarar a qué nos estamos refiriendo, porque existe otro concepto cercano, pero con un significado distinto, el Software Libre o Free Software. Richard Stallman acuñó este término a principios de los años 80, haciendo énfasis en mantener y garantizar lo que él llamó las cuatro libertades esenciales:
1. Ejecutar el programa,
2. Estudiar y modificar el código fuente del programa,
3. Redistribuir copias exactas,
4. Distribuir versiones modificadas.
Aunque estas libertades incentivan e impulsan un modelo de desarrollo abierto, el movimiento del Software libre tiende a referirse a temas más sociales y filosóficos (https://www.gnu.org/philosophy/free-sw.html), que tienden a restarle importancia a los beneficios prácticos para la industria, que se obtienen de un modelo de desarrollo abierto y colaborativo.
Es por ello, que el término Open Source surgió a finales de los años 90 en Palo Alto, California, (https://opensource.org/history) cuando el código fuente de Netscape fue liberado de forma abierta. Allí hicieron énfasis en los beneficios prácticos y orientados al negocio, que podría traer el hecho de “enganchar” potenciales desarrolladores y usuarios para crear nuevas características y mejorar el código fuente existente.
De esta manera fue concebida la OSI (Open Source Initiative) con el fin de educar y abogar por la superioridad y los beneficios de un proceso de desarrollo abierto y sus beneficios para la industria, alejándose de las connotaciones más filosófico-sociales que la “etiqueta” Software Libre trae consigo.
De esta forma, podemos entender que el término Open Source se centra en las ventajas practicas del desarrollo abierto y colaborativo que acercan y hacen amigable este enfoque para la industria.
A pesar de estas diferencias, en términos generales podemos decir que la totalidad del Software Libre es software Open Source y que muchos proyectos Open Source también pueden ser considerados como software libre, por lo que puede hablarse del término FOSS (Free and Open Source Software) que hace referencia a ambos en un solo concepto.
En la actualidad el software Open Source tiene mayor importancia de la que podríamos imaginar, ya que grandes iniciativas, ejecutadas con este enfoque, han tenido un impacto monumental en darle forma al ecosistema tecnológico y al mundo actual.
Algunos ejemplos de software Open Source son el Kernel de Linux, y sistemas Unix (Tipo BSD). Estos sistemas operativos son ejecutados en la mayoría de los servidores que soportan los servicios y portales de internet que usamos a diario. El sistema operativo Android, que está en el “corazón” de smartphones, tablets, relojes y electrodomésticos inteligentes, también es de código abierto.
Es inimaginable pensar en desarrollo tecnológico moderno hoy, sin hacer uso de proyectos y herramientas Open Source ya que desde los lenguajes y plataformas de programación usados a diario lo estamos utilizando. Es el caso de Java, NodeJs (Javascript/ECMAScript), Python, .NET Core, compiladores de C/C++, y una innumerable cantidad de frameworks y librerías usadas en el desarrollo de casi cualquier aplicación.
Para darnos una idea general de su gran impacto vamos a dar un recorrido por distintas áreas:
“Linux se convirtió en la fuerza impulsora detrás de los avances en potencia informática que han impulsado la investigación y la innovación tecnológica” — The Linux Foundation
Linux Foundation hace referencia al hecho que el 100% del top 500 de los supercomputadores a nivel mundial se ejecutan actualmente bajo el sistema operativo Linux. Linux empezó lentamente a dominar el segmento de la computación de ultra alto rendimiento cuando en 1998 apareció por primera vez en la lista. Para noviembre de 2017 los últimos dos sistemas No-Linux (Dos supercomputadores chinos que ejecutaban AIX) fueron desplazados del Top 500.
Otro caso bastante interesante es Erlang/OTP, el lenguaje y plataforma de código abierto creado inicialmente por el equipo de Joe Amstrong en Ericson. Este se hizo famoso entre otras cosas por ser la base del sistema AXD301 reconocido por alcanzar una mítica disponibilidad de 99.9999999% (9 nueves), que para entenderlo un poco, serían únicamente 0.6 segundos de indisponibilidad tras 20 años de servicio continuo.
En 2018 en una conferencia (CodeBeam 2018) Cisco entrega los siguientes datos del uso de Erlang:
· 90% de todo el tráfico de Internet pasa a través de nodos controlados por Erlang
· Cisco entrega al año más de 2 millones de dispositivos con Erlang en ellos.
No es un secreto que el ecosistema de herramientas, frameworks y librerías ampliamente usados en Machine Learning e Inteligencia artificial, están casi absolutamente basados en proyectos Open Source, pasando por herramientas como:
· TensorFlow (originalmente liberado por Google) cuenta con más de 2200 contribuidores directos y unos 25.000 indirectos.
· Keras, Theano, Caffe, el Toolkit de Microsoft CNTK, scikit-learn
· Torch y Pytorch
· MXNet
· Pandas
· El lenguaje de programación Python
En conclusión, podríamos afirmar que podría llegar a ser inviable tener una estrategia adecuada de machine learning sin el uso intensivo de proyectos y herramientas Open Source.
Cuando hablamos del mundo de la automatización en el desarrollo, ya sea de pruebas, verificaciones, despliegues o aprovisionamiento de la infraestructura, salen a la luz herramientas OpenSource indispensables.
Entre ellas, encontramos SonarQube; para el análisis de la calidad,
Hygeia; para la visualización de la adopción y madurez; Cucumber, Selenium y Junit; para la automatización de pruebas, Gradle y Maven; para la gestión de dependencias, ejecución de tests y compilación de los proyectos.
Hasta este punto sólo nombrado algunas herramientas, nos podemos dar cuenta que muchas de ellas son indispensables, otras son
habilitadoras e incluso algunas no tienen siquiera un equivalente de código cerrado y se han vuelto estándares para apoyar los procesos de automatización propios de DevOps.
Casi cada una de las herramientas, frameworks y librerías usadas en el desarrollo de aplicaciones modernas orientadas a microservicios, son proyectos Open Source. Desde el mismo lenguaje, ya sea Java, Python, Javascript/NodeJs, Kotlin o Exlir e incluso en el Framework, ya sea SpringBoot (uno de los más populares), Spark, Django, Express ó Jakarta EE (El nombrado sucesor de Java EE).
Además, no podemos olvidarnos de que Docker, Kubernetes y el mundo de los contenedores es un ecosistema que no tendría sentido sin la naturaleza abierta del Open Source como bloque de construcción básico de un gran catalogo de “imágenes” y componentes. Sería impensable poder construir arquitecturas modernas sin apalancarnos en un ecosistema que nació de forma nativa siendo Open Source.
Acá tenemos un muy claro ejemplo del Open Source como motor de la innovación. Blockchain ó mejor dicho su primera implementación conocida (Bitcoin) nació en forma de un proyecto de código abierto publicado por primera vez el 3 de enero del 2009.
Fue su modelo de desarrollo abierto y colaborativo lo que ayudó a atraer el interés de una comunidad global que impulsó su desarrollo y adopción. No sólo en el proyecto original (bitcoin) sino, materializándose dicha innovación en una amplia variedad de proyectos derivados y alternativos que sentaron las bases del uso de la tecnología para una amplia variedad de necesidades y casos de negocio.
Todos éstos nuevos blockchains tenían en común el hecho de ser proyectos de código abierto con modelos de desarrollo descentralizados y colaborativos; tanto así que se hace difícil encontrar ejemplos de blockchain de código cerrado (no confundir con blockchain públicos vs privados), ya que incluso los proyectos de blockchain privados o internos se basan en blockchain open source.
Todos los ejemplos permiten visualizar que el Open Source tiene una importancia superlativa en el desarrollo moderno de tecnología y se encuentra inmerso en una amplia variedad de aspectos que incluso pueden pasarse por alto o darse por sentado.
Es una realidad que, aunque trae consigo muchas ventajas y a veces es inevitable que sea utilizado, abre también la puerta a un conjunto de nuevos retos de los cuáles las organizaciones deben ser consientes y afrontar de forma correcta y disciplinada para poder obtener y maximizar las ventajas al tiempo que se mitigan posibles riesgos, que pueden ser de licenciamiento (legales), soporte, calidad, seguridad, gobierno y estandarización.
Tomado de: