El software de código abierto ( OSS ) es un software informático que se publica bajo una licencia en la que el titular de los derechos de autor otorga a los usuarios los derechos de uso, estudio, modificación y distribución del software y su código fuente a cualquier persona y para cualquier propósito. [1] [2] El software de código abierto puede desarrollarse de manera colaborativa y pública. El software de código abierto es un ejemplo destacado de colaboración abierta , lo que significa que cualquier usuario capaz puede participar en línea en el desarrollo, lo que hace que el número de posibles contribuyentes sea indefinido. La capacidad de examinar el código facilita la confianza pública en el software. [3]
El desarrollo de software de código abierto puede aportar perspectivas diversas más allá de las de una sola empresa. Se estima que en 2024 el valor del software de código abierto para las empresas será de 8,8 billones de dólares, ya que las empresas tendrían que gastar 3,5 veces más de lo que gastan actualmente sin el uso de software de código abierto. [4]
El código fuente abierto se puede utilizar para estudiar y permite a los usuarios finales capaces adaptar el software a sus necesidades personales de una manera similar a como lo permiten los scripts de usuario y las hojas de estilo personalizadas para los sitios web, y eventualmente publicar la modificación como una bifurcación para usuarios con preferencias similares y enviar directamente posibles mejoras como solicitudes de extracción .
La definición de la Iniciativa de Código Abierto (OSI) es reconocida por varios gobiernos a nivel internacional [5] como la definición estándar o de facto . OSI utiliza la Definición de Código Abierto para determinar si considera que una licencia de software es de código abierto. La definición se basó en las Pautas de Software Libre de Debian , escritas y adaptadas principalmente por Perens . [6] [7] [8] Perens no basó su escrito en las "cuatro libertades" de la Free Software Foundation (FSF), que solo estuvieron ampliamente disponibles más tarde. [9]
Según la definición de Perens, el código abierto es una licencia de software amplia que pone el código fuente a disposición del público en general con restricciones laxas o inexistentes sobre el uso y la modificación del código. Una "característica" explícita del código abierto es que impone muy pocas restricciones sobre el uso o la distribución por parte de cualquier organización o usuario, con el fin de permitir la rápida evolución del software. [10]
Según Feller et al. (2005), los términos "software libre" y "software de código abierto" deberían aplicarse a cualquier "producto de software distribuido bajo términos que permitan a los usuarios" utilizar, modificar y redistribuir el software "de cualquier manera que consideren adecuada, sin exigirles que paguen a los autores del software una regalía o tarifa por participar en las actividades enumeradas". [11]
A pesar de haberlo aceptado inicialmente, [12] Richard Stallman de la FSF ahora se opone rotundamente a que el término "código abierto" se aplique a lo que ellos denominan "software libre". Aunque está de acuerdo en que los dos términos describen "casi la misma categoría de software", Stallman considera que equiparar los términos es incorrecto y engañoso. [13] Stallman también se opone al pragmatismo profesado por la Open Source Initiative , ya que teme que los ideales del software libre de libertad y comunidad se vean amenazados al comprometer los estándares idealistas de la FSF para la libertad del software. [14] La FSF considera que el software libre es un subconjunto del software de código abierto, y Richard Stallman explicó que el software DRM , por ejemplo, puede desarrollarse como código abierto, a pesar de que no da libertad a sus usuarios (los restringe), y por lo tanto no califica como software libre. [13]
En su ensayo de 1997 The Cathedral and the Bazaar (La catedral y el bazar) , el influyente colaborador de código abierto Eric S. Raymond sugiere un modelo para desarrollar OSS conocido como el modelo bazar . [15] Raymond compara el desarrollo de software mediante metodologías tradicionales con la construcción de una catedral, con un trabajo aislado y cuidadoso por parte de individuos o pequeños grupos. [15] Sugiere que todo el software debería desarrollarse utilizando el estilo bazar, con diferentes agendas y enfoques. [15]
En el modelo tradicional de desarrollo, al que llamó modelo catedral , el desarrollo se lleva a cabo de manera centralizada. [15] Los roles están claramente definidos. [15] Los roles incluyen personas dedicadas al diseño (los arquitectos), personas responsables de gestionar el proyecto y personas responsables de la implementación. [15] La ingeniería de software tradicional sigue el modelo catedral. [15]
Sin embargo, el modelo de bazar es diferente. [15] En este modelo, los roles no están claramente definidos. [15] Algunas características propuestas del software desarrollado utilizando el modelo de bazar deberían exhibir los siguientes patrones: [16]
Los usuarios deben ser tratados como co-desarrolladores: Los usuarios son tratados como co-desarrolladores y por lo tanto deben tener acceso al código fuente del software. [16] Además, se anima a los usuarios a enviar adiciones al software, correcciones de código para el software, informes de errores , documentación, etc. Tener más co-desarrolladores aumenta la velocidad a la que evoluciona el software. [16] La ley de Linus establece que dada la cantidad suficiente de ojos, todos los errores son superficiales. [16] Esto significa que si muchos usuarios ven el código fuente, eventualmente encontrarán todos los errores y sugerirán cómo solucionarlos. [16] Algunos usuarios tienen habilidades de programación avanzadas y, además, la máquina de cada usuario proporciona un entorno de prueba adicional. [16] Este nuevo entorno de prueba ofrece la capacidad de encontrar y solucionar un nuevo error. [16]
Lanzamientos tempranos : la primera versión del software debe lanzarse lo antes posible para aumentar las posibilidades de encontrar codesarrolladores de manera temprana. [16]
Integración frecuente: los cambios de código deben integrarse (fusionarse en una base de código compartida) tan a menudo como sea posible para evitar la sobrecarga de corregir una gran cantidad de errores al final del ciclo de vida del proyecto. [16] [17] Algunos proyectos de código abierto tienen compilaciones nocturnas donde la integración se realiza automáticamente . [16]
Varias versiones: Debería haber al menos dos versiones del software. [16] Debería haber una versión con más errores y más funciones, y una versión más estable con menos funciones. [16] La versión con errores (también llamada versión de desarrollo) es para los usuarios que desean utilizar de inmediato las últimas funciones y están dispuestos a aceptar el riesgo de utilizar código que aún no se ha probado exhaustivamente. [16] Los usuarios pueden actuar como co-desarrolladores, informando de los errores y proporcionando correcciones de errores. [16] [18]
Alta modularización: La estructura general del software debe ser modular permitiendo el desarrollo paralelo en componentes independientes. [16]
Estructura de toma de decisiones dinámica: existe la necesidad de una estructura de toma de decisiones, ya sea formal o informal, que tome decisiones estratégicas en función de los requisitos cambiantes de los usuarios y otros factores. [16] Compárese con la programación extrema . [16]
El proceso de desarrollo de código abierto comienza con una elicitación de requisitos donde los desarrolladores consideran si deben agregar nuevas características o si es necesario corregir un error en su proyecto. [18] Esto se establece comunicándose con la comunidad de OSS a través de vías como informes y seguimiento de errores o listas de correo y páginas de proyectos. [18] Luego, los desarrolladores de OSS seleccionan o se les asigna una tarea e identifican una solución. Debido a que a menudo hay muchas rutas posibles diferentes para las soluciones en OSS, la mejor solución debe elegirse con una cuidadosa consideración y, a veces, incluso con la retroalimentación de los pares . [18] Luego, el desarrollador comienza a desarrollar y confirmar el código. [18] Luego, el código es probado y revisado por pares. [18] Los desarrolladores pueden editar y desarrollar su código a través de la retroalimentación de la integración continua . [18] Una vez que el liderazgo y la comunidad están satisfechos con todo el proyecto, se puede lanzar parcialmente y se pueden documentar las instrucciones del usuario. [18] Si el proyecto está listo para ser lanzado, se congela y solo se producen correcciones de errores graves o reparaciones de seguridad. [18] Finalmente, el proyecto se lanzó en su totalidad y solo se modificaron algunas correcciones de errores menores. [18]
La implementación de un estándar en código abierto puede aumentar la adopción de ese estándar. [19] Esto crea lealtad entre los desarrolladores, ya que se sienten empoderados y tienen un sentido de propiedad del producto final. [20]
Además, se necesitan menores costos de marketing y servicios logísticos para el OSS. [21] El OSS puede ser una herramienta para promover la imagen de una empresa, incluidos sus productos comerciales. [22] El enfoque de desarrollo del OSS ha ayudado a producir software confiable y de alta calidad de manera rápida y económica. [21]
El desarrollo de código abierto ofrece el potencial de acelerar la innovación y crear valor social. [23] En Francia, por ejemplo, una política que incentivaba al gobierno a favorecer el software libre de código abierto aumentó a casi 600.000 las contribuciones de OSS por año, generando valor social al aumentar la cantidad y la calidad del software de código abierto. [23] Esta política también condujo a un aumento estimado de hasta el 18% de las nuevas empresas tecnológicas y un aumento del 14% en el número de personas empleadas en el sector de TI. [23]
El código abierto puede ser muy confiable cuando cuenta con miles de programadores independientes que prueban y corrigen errores del software. [16] El código abierto no depende de la empresa o el autor que lo creó originalmente. [24] Incluso si la empresa fracasa, el código continúa existiendo y siendo desarrollado por sus usuarios. [24]
El OSS es flexible porque los sistemas modulares permiten a los programadores construir interfaces personalizadas o añadirles nuevas capacidades y es innovador porque los programas de código abierto son el producto de la colaboración entre un gran número de programadores diferentes. [16] La mezcla de perspectivas divergentes, objetivos corporativos y metas personales acelera la innovación. [25]
Además, el software libre puede desarrollarse de acuerdo con requisitos puramente técnicos. [26] No requiere pensar en la presión comercial que a menudo degrada la calidad del software. [26] Las presiones comerciales hacen que los desarrolladores de software tradicionales presten más atención a los requisitos de los clientes que a los requisitos de seguridad, ya que dichas características son algo invisibles para el cliente. [26]
En el desarrollo de software de código abierto, se utilizan herramientas para respaldar el desarrollo del producto y el proceso de desarrollo en sí. [18]
Los sistemas de control de versiones como el sistema de control de versiones centralizado (CVCS) y el sistema de control de versiones distribuido (DVCS) son ejemplos de herramientas, a menudo de código abierto, que ayudan a gestionar los archivos de código fuente y los cambios en esos archivos para un proyecto de software con el fin de fomentar la colaboración. [27] Los CVCS están centralizados con un repositorio central, mientras que los DVCS están descentralizados y tienen un repositorio local para cada usuario. [27] El sistema de versiones concurrentes (CVS) y más tarde Subversion (SVN) y Git son ejemplos de CVCS. [27] Los repositorios se alojan y publican en instalaciones de alojamiento de código fuente como GitHub . [27]
Los proyectos de código abierto utilizan utilidades como los rastreadores de problemas para organizar el desarrollo de software de código abierto. Los rastreadores de errores más utilizados son Bugzilla y Redmine . [18]
Herramientas como listas de correo e IRC proporcionan medios de coordinación y discusión de errores entre desarrolladores. [18] Las páginas web del proyecto, las páginas wiki, las listas de hojas de ruta y los grupos de noticias permiten la distribución de información del proyecto enfocada en los usuarios finales. [18]
Los roles básicos de los participantes de OSS pueden clasificarse en varias categorías, comenzando con el liderazgo en el centro del proyecto que tiene control sobre su ejecución. [28] A continuación están los colaboradores principales con mucha experiencia y autoridad en el proyecto que pueden guiar a los demás colaboradores. [28] Los colaboradores no principales tienen menos experiencia y autoridad, pero contribuyen regularmente y son vitales para el desarrollo del proyecto. [28] Los nuevos colaboradores son los menos experimentados pero con tutoría y orientación pueden convertirse en colaboradores regulares. [28]
Algunas de las posibles formas de contribuir al software de código abierto incluyen funciones como programación , diseño y prueba de interfaz de usuario, diseño web , clasificación de errores , diseño y prueba de accesibilidad, diseño de UX , prueba de código y revisión y prueba de seguridad . [28] Sin embargo, existen varias formas de contribuir a proyectos de OSS incluso sin habilidades de codificación. [28] Por ejemplo, algunas formas menos técnicas de participar son la redacción y edición de documentación , la traducción , la gestión de proyectos , la organización y coordinación de eventos, el marketing, la gestión de lanzamientos, la gestión de la comunidad y las relaciones públicas y la divulgación. [28]
La financiación es otra forma estupenda que tienen las personas y las organizaciones de contribuir a los proyectos de código abierto. Grupos como Open Collective ofrecen a las personas un medio para contribuir mensualmente a sus proyectos favoritos. [29] Organizaciones como Sovereign Tech Fund pueden contribuir con millones de dólares para apoyar las herramientas que utiliza el gobierno alemán . [30] La National Science Foundation estableció un programa Pathways to Enable Open-Source Ecosystems (POSE) para apoyar la innovación de código abierto. [31]
La adopción de software de código abierto por parte de la industria está aumentando con el tiempo. [32] El OSS es popular en varias industrias, como las telecomunicaciones , la aeroespacial , la atención médica y los medios de comunicación y entretenimiento debido a los beneficios que proporciona. [33] La adopción de OSS es más probable en organizaciones más grandes y depende del uso de TI de la empresa, las eficiencias operativas y la productividad de los empleados. [32]
Es probable que las industrias utilicen OSS debido a la funcionalidad de back-office, soporte de ventas, investigación y desarrollo, características del software, implementación rápida, portabilidad entre plataformas y evitación de la gestión de licencias comerciales. [32] Además, el menor costo del hardware y la propiedad también son beneficios importantes. [32]
Existen organizaciones que contribuyen al desarrollo y expansión de movimientos de software libre y de código abierto en todo el mundo. [28] Estas organizaciones se dedican a objetivos como la enseñanza y la difusión de la tecnología. [28] Como lo enumera un ex vicepresidente de la Open Source Initiative , algunas organizaciones estadounidenses incluyen la Free Software Foundation , Software Freedom Conservancy , la Open Source Initiative y Software in the Public Interest . [28] Dentro de Europa, algunas organizaciones notables son la Free Software Foundation Europe , los proyectos de código abierto EU (OSP) y OpenForum Europe (OFE). [28] Una organización australiana es Linux Australia, mientras que Asia tiene Open source Asia y FOSSAsia. [28] Free and open source software for Africa (FOSSFA) y OpenAfrica son organizaciones africanas y Asia Central y del Sur tiene organizaciones como FLISOL y GRUP de usuarios de software libre Perú. [28] Fuera de estas, existen muchas más organizaciones dedicadas al avance del software de código abierto. [28]
Los productos FOSS generalmente se licencian bajo dos tipos de licencias: licencias permisivas y licencias copyleft . [34] Ambos tipos de licencias son diferentes a las licencias propietarias en que pueden permitir que más usuarios accedan al software y permiten la creación de trabajos derivados según lo especificado por los términos de la licencia específica, ya que cada licencia tiene sus propias reglas. [34] Las licencias permisivas permiten a los destinatarios del software implementar los derechos de autor del autor sin tener que usar la misma licencia para la distribución. [34] Ejemplos de este tipo de licencia incluyen las licencias BSD , MIT y Apache . [34] Las licencias copyleft son diferentes en que requieren que los destinatarios usen la misma licencia para al menos algunas partes de la distribución de sus trabajos. [34] Las licencias copyleft fuertes requieren que todos los trabajos derivados usen la misma licencia mientras que las licencias copyleft débiles requieren el uso de la misma licencia solo bajo ciertas condiciones. [34] Ejemplos de este tipo de licencia incluyen la familia de licencias GNU y las licencias MPL y EPL . [34] Las similitudes entre estas dos categorías de licencias incluyen que proporcionan una amplia concesión de derechos de autor, requieren que los destinatarios conserven los avisos de derechos de autor y que se proporcione una copia de la licencia a los destinatarios junto con el código. [34]
Un precedente legal importante para el software de código abierto se creó en 2008, cuando el caso Jacobson v Katzer hizo cumplir los términos de la licencia Artistic , incluida la atribución y la identificación de modificaciones. [34] El fallo de este caso consolidó la aplicación de la ley de derechos de autor cuando no se cumplieron las condiciones de la licencia. [34] Debido a la similitud de la licencia Artistic con otras licencias de software de código abierto, el fallo creó un precedente que se aplicó ampliamente. [34]
Algunos ejemplos de licencias de software libre / licencias de código abierto incluyen las licencias Apache , las licencias BSD , las licencias públicas generales de GNU , la licencia pública general reducida de GNU , la licencia MIT , la licencia pública Eclipse y la licencia pública de Mozilla . [34]
Existen varias áreas grises dentro de la regulación del software que tienen un gran impacto en el software de código abierto, como por ejemplo si el software es un bien o un servicio, qué se puede considerar una modificación, la gobernanza mediante contrato vs. licencia, la propiedad y el derecho de uso. [34] Si bien ha habido avances en estas cuestiones, a menudo conducen a aún más preguntas. [34] La existencia de estas incertidumbres en la regulación tiene un impacto negativo en las industrias involucradas en tecnologías en su conjunto. [34]
Dentro de la historia legal del software en su conjunto, hubo mucho debate sobre si protegerlo como propiedad intelectual bajo la ley de patentes , la ley de derechos de autor o establecer una regulación única. [34] En última instancia, la ley de derechos de autor se convirtió en el estándar y los programas de computadora se consideraron una forma de trabajo literario, con algunos ajustes de regulación única. [34]
El software generalmente se considera código fuente y código objeto , y ambos son protegibles, aunque hay variedad legal en esta definición. [34] Algunas jurisdicciones intentan expandir o reducir esta conceptualización para sus propios fines. [34] Por ejemplo, el Tribunal de Justicia Europeo define un programa de computadora como no incluyendo la funcionalidad de un programa, el lenguaje de programación o el formato de los archivos de datos. [34] Al limitar las protecciones de los diferentes aspectos del software, la ley favorece un enfoque de código abierto para el uso del software. [34] Estados Unidos especialmente tiene un enfoque abierto para el software, y la mayoría de las licencias de código abierto se originan allí. [34] Sin embargo, esto ha aumentado el enfoque en los derechos de patente dentro de estas licencias, lo que ha visto una reacción violenta de la comunidad OSS, que prefiere otras formas de protección de la propiedad intelectual . [34]
Otro problema incluye las medidas de protección tecnológica (TPM) y las técnicas de gestión de derechos digitales (DRM) que fueron reconocidas legalmente a nivel internacional y protegidas en el Tratado de la Organización Mundial de la Propiedad Intelectual (OMPI) de 1996. [34] A los defensores del software de código abierto no les gustaban estas tecnologías porque limitaban a los usuarios finales potencialmente más allá de la ley de derechos de autor. [34] Europa respondió a tales quejas poniendo las TPM bajo controles legales, lo que representó una victoria para los partidarios del OSS. [34]
En las comunidades de código abierto, en lugar de poseer el software producido, el productor posee el desarrollo del software en evolución. [35] De esta manera, el futuro del software es abierto, lo que dificulta la propiedad intelectual dentro del OSS. [35] La concesión de licencias y la marca pueden impedir que otros lo roben, preservando su condición de bien público . [35] El software de código abierto puede considerarse un bien público, ya que está disponible para todos y no disminuye su valor para los demás cuando lo descarga una persona. [35] El software de código abierto es único en el sentido de que se vuelve más valioso a medida que se utiliza y se contribuye a él, en lugar de disminuir el recurso. Esto se explica por conceptos como la inversión en reputación y los efectos de red . [35]
El modelo económico del software de código abierto se puede explicar como que los desarrolladores contribuyen con su trabajo a los proyectos, creando beneficios públicos. [35] Los desarrolladores eligen proyectos en función de los beneficios o costos percibidos, como una mejor reputación o valor del proyecto. [35] Las motivaciones de los desarrolladores pueden provenir de muchos lugares y razones diferentes, pero la conclusión importante es que el dinero no es el único incentivo ni el más importante . [35]
Como la teoría económica se centra principalmente en el consumo de recursos escasos, la dinámica del OSS puede resultar difícil de entender. En el OSS, los productores se convierten en consumidores al cosechar las recompensas de contribuir a un proyecto. [35] Por ejemplo, un desarrollador se vuelve bien considerado por sus pares por su contribución exitosa a un proyecto de OSS. [35] Los beneficios sociales y las interacciones del OSS también son difíciles de tener en cuenta en los modelos económicos. [35] Además, la innovación tecnológica crea discusiones y perspectivas de valor que cambian constantemente, lo que hace que el modelo económico no pueda predecir el comportamiento social. [35]
Aunque el OSS es teóricamente un desafío para los modelos económicos, se puede explicar como una actividad social sostenible que requiere recursos. [35] Estos recursos incluyen tiempo, dinero, tecnología y contribuciones. [35] Muchos desarrolladores han utilizado tecnología financiada por organizaciones como universidades y gobiernos, aunque estas mismas organizaciones se benefician del trabajo realizado por el OSS. [35] A medida que el OSS crece, los sistemas híbridos que contienen OSS y sistemas propietarios se están volviendo más comunes. [35]
A mediados de la década de 2000, cada vez más empresas tecnológicas comenzaron a utilizar OSS. [24] Por ejemplo, Dell comenzó a vender computadoras con GNU/Linux ya instalado. [24] La propia Microsoft lanzó un sistema operativo basado en Linux a pesar de su animosidad previa con el movimiento OSS. [24] A pesar de estos avances, estas empresas tienden a utilizar OSS solo para ciertos propósitos, lo que genera preocupaciones de que las corporaciones se estén aprovechando de OSS y no estén recibiendo nada a cambio. [24]
Si bien muchos gobiernos están interesados en implementar y promover software de código abierto debido a los muchos beneficios que brinda, un gran problema a considerar es la ciberseguridad . [36] Si bien las vulnerabilidades accidentales son posibles, también lo son los ataques de agentes externos. [36] Debido a estos temores, el interés gubernamental en contribuir a la gobernanza del software se ha vuelto más prominente. [36] Sin embargo, estos son los trazos generales del problema, ya que cada país tiene sus propias interacciones politizadas específicas con el software de código abierto y sus objetivos para su implementación. [36] Por ejemplo, Estados Unidos se ha centrado en la seguridad nacional con respecto a la implementación de software de código abierto debido a la amenaza percibida del aumento de la actividad de software de código abierto en países como China y Rusia, y el Departamento de Defensa está considerando múltiples criterios para usar OSS. [36] Estos criterios incluyen: si proviene y es mantenido por fuentes confiables, si continuará siendo mantenido, si hay dependencias de subcomponentes en el software, seguridad e integridad de los componentes e influencia gubernamental extranjera. [36]
Otro problema para los gobiernos en relación con el código abierto son sus inversiones en tecnologías como sistemas operativos , semiconductores , nube e inteligencia artificial . [36] Todas estas tecnologías tienen implicaciones para la cooperación global, lo que nuevamente abre problemas de seguridad y consecuencias políticas. [36] Muchos países tienen que equilibrar la innovación tecnológica con la dependencia tecnológica en estas asociaciones. [36] Por ejemplo, después de que a la empresa china de código abierto Huawei, dependiente del sistema operativo, se le impidiera utilizar el sistema Android de Google en 2019, comenzaron a crear su propio sistema operativo alternativo: Harmony OS . [36]
Alemania creó recientemente un Fondo Tecnológico Soberano para ayudar a respaldar la gobernanza y el mantenimiento del software que utilizan.
En los primeros tiempos de la informática , como en los años 1950 y 1960, los programadores y desarrolladores compartían software para aprender unos de otros y hacer evolucionar el campo de la informática. [37] Por ejemplo, Unix incluía el código fuente del sistema operativo para los usuarios. [37] Con el tiempo, la comercialización de software en los años 1970-1980 comenzó a impedir esta práctica. [37] Sin embargo, los académicos todavía solían desarrollar software de forma colaborativa. [37]
En respuesta, el movimiento de código abierto nació del trabajo de entusiastas programadores expertos, ampliamente conocidos como hackers o cultura hacker . [38] Uno de estos entusiastas, Richard Stallman , fue una fuerza impulsora detrás del movimiento del software libre , que más tarde permitiría el movimiento de código abierto . [17] En 1984, renunció al MIT para crear un sistema operativo libre, GNU , después de que la cultura de programación en su laboratorio fuera sofocada por el software propietario que impedía que el código fuente se compartiera y mejorara. [17] GNU era compatible con UNIX, lo que significa que los entusiastas programadores aún estarían familiarizados con su funcionamiento. [17] Sin embargo, rápidamente se hizo evidente que había cierta confusión con la etiqueta que Stallman había elegido para el software libre , que describió como libre como en libertad de expresión, no cerveza gratis, refiriéndose al significado de libre como libertad en lugar de precio. [17] Más tarde amplió este concepto de libertad a las cuatro libertades esenciales. [17] A través de GNU, aparecieron las normas de código abierto de incorporación de código fuente de otros, correcciones de errores de la comunidad y sugerencias de código para nuevas características. [17] En 1985, Stallman fundó la Free Software Foundation (FSF) para promover cambios en el software y ayudar a escribir GNU. [17] Para evitar que su trabajo se usara en software propietario, Stallman creó el concepto de copyleft , que permitía el uso de su trabajo por parte de cualquier persona, pero bajo términos específicos. [17] Para ello, creó la Licencia Pública General de GNU (GNU GPL) en 1989, que se actualizó en 1991. [17] En 1991, GNU se combinó con el núcleo Linux escrito por Linus Torvalds , ya que faltaba un núcleo en GNU. [39] El sistema operativo ahora se conoce habitualmente como Linux . [17] A lo largo de todo este período, hubo muchos otros proyectos y licencias de software libre en ese momento, todos con ideas diferentes de lo que era y debía ser el concepto de software libre, así como la moralidad del software propietario, como Berkeley Software Distribution , TeX y el X Window System . [40]
A medida que se desarrollaba el software libre, la Free Software Foundation comenzó a buscar cómo llevar las ideas del software libre y los beneficios percibidos a la industria del software comercial . [40] Se concluyó que el activismo social de la FSF no era atractivo para las empresas y que necesitaban una forma de cambiar la marca del movimiento del software libre para enfatizar el potencial comercial de compartir y colaborar en el código fuente del software. [40] El término código abierto fue sugerido por Christine Peterson en 1998 en una reunión de partidarios del software libre. [17] Muchos en el grupo sintieron que el nombre software libre era confuso para los recién llegados y frenaba el interés de la industria y aceptaron fácilmente la nueva designación de código abierto, creando la Iniciativa de Código Abierto (OSI) y la definición OSI de lo que es el software de código abierto. [17] La definición de la Iniciativa de Código Abierto (OSI) ahora es reconocida por varios gobiernos a nivel internacional como la definición estándar o de facto . [39] La definición se basó en las Pautas de Software Libre de Debian , escritas y adaptadas principalmente por Bruce Perens. [41] La definición de OSI se diferencia de la definición de software libre en que permite la inclusión de software propietario y permite más libertades en su licencia. [17] Algunos, como Stallman, están más de acuerdo con el concepto original de software libre como resultado porque adopta una postura moral fuerte contra el software propietario, aunque hay mucha superposición entre los dos movimientos en términos del funcionamiento del software. [17]
Mientras que la Iniciativa de Código Abierto buscaba alentar el uso del nuevo término y evangelizar los principios a los que se adhería, los vendedores de software comercial se vieron cada vez más amenazados por el concepto de software distribuido libremente y acceso universal al código fuente de una aplicación , con un ejecutivo de Microsoft llamando al código abierto un destructor de propiedad intelectual en 2001. [42] Sin embargo, mientras que el software libre y de código abierto (FOSS) históricamente ha jugado un papel fuera del desarrollo de software privado convencional, compañías tan grandes como Microsoft han comenzado a desarrollar presencias oficiales de código abierto en Internet. [42] IBM, Oracle y State Farm son sólo algunas de las compañías con una participación pública seria en el competitivo mercado de código abierto actual, marcando un cambio significativo en la filosofía corporativa con respecto al desarrollo de FOSS. [42]
El futuro de la comunidad de software de código abierto, y de la comunidad de software libre por extensión, ha sido exitoso, si bien no ha sido confuso en cuanto a lo que representa. [24] Por ejemplo, Android y Ubuntu son ejemplos de hitos de éxito en el ascenso del software de código abierto a la prominencia desde los márgenes de la innovación tecnológica tal como existía a principios de la década de 2000. [24] Sin embargo, algunos en la comunidad los consideran fracasos en su representación del OSS debido a problemas como la minimización del centro OSS de Android por parte de Google y sus socios, el uso de una licencia Apache que permitió la bifurcación y resultó en una pérdida de oportunidades de colaboración dentro de Android, la priorización de la conveniencia sobre la libertad en Ubuntu y las características dentro de Ubuntu que rastrean a los usuarios con fines de marketing. [24]
El uso de OSS se ha vuelto más común en los negocios, con un 78% de compañías informando que ejecutan todas o parte de sus operaciones en FOSS. [24] La popularidad de OSS ha aumentado hasta el punto de que Microsoft , un detractor de OSS, ha incluido su uso en sus sistemas. [24] Sin embargo, este éxito ha generado preocupaciones que determinarán el futuro de OSS ya que la comunidad debe responder preguntas como qué es OSS, qué debería ser y qué se debe hacer para protegerlo, si es que necesita protección. [24] En general, si bien la revolución libre y de código abierto se ha desacelerado hasta un equilibrio percibido en el mercado, eso no significa que haya terminado, ya que deben llevarse a cabo muchas discusiones teóricas para determinar su futuro. [24]
El software de código abierto se diferencia del software propietario en que está disponible públicamente, la licencia no requiere tarifas y se permiten modificaciones y distribuciones bajo especificaciones de licencia. [43] Todo esto funciona para evitar un monopolio en cualquier producto OSS, que es un objetivo del software propietario. [43] El software propietario limita las opciones de sus clientes a comprometerse a usar ese software, actualizarlo o cambiar a otro software, lo que obliga a los clientes a ver sus preferencias de software afectadas por su costo monetario. [43] El escenario ideal para el proveedor de software propietario sería un bloqueo , donde el cliente no cambia o no puede cambiar de software debido a estos costos y continúa comprando productos de ese proveedor. [43]
En el caso del software propietario, las correcciones de errores solo las puede proporcionar el proveedor, el cambio de plataforma requiere otra compra y la existencia del producto depende del proveedor, que puede discontinuarlo en cualquier momento. [38] Además, el software propietario no proporciona su código fuente y los usuarios no pueden modificarlo. [17] Para las empresas, esto puede representar un riesgo de seguridad y una fuente de frustración, ya que no pueden especializar el producto según sus necesidades y puede haber amenazas ocultas o fugas de información dentro del software a las que no pueden acceder ni modificar. [17]
Según la definición de OSI, el código abierto es una licencia de software amplia que pone el código fuente a disposición del público en general con restricciones relajadas o inexistentes sobre el uso y la modificación del código. [44] Una característica explícita del código abierto es que impone muy pocas restricciones al uso o la distribución por parte de cualquier organización o usuario, con el fin de permitir la rápida evolución del software. [44]
Richard Stallman , líder del movimiento de software libre y miembro de la Free Software Foundation, se opone a que el término código abierto se aplique a lo que ellos denominan software libre. [13] Aunque está de acuerdo en que los dos términos describen casi la misma categoría de software, Stallman considera que equiparar los términos es incorrecto y engañoso. [13] Cree que la principal diferencia es que al elegir un término sobre el otro, los demás sepan cuáles son los objetivos de uno: desarrollo (código abierto) o una postura social (software libre). [45] Sin embargo, existe una superposición significativa entre el software de código abierto y el software libre. [13] Stallman también se opone al pragmatismo profesado por la Open Source Initiative , ya que teme que los ideales del software libre de libertad y comunidad se vean amenazados al comprometer los estándares idealistas de la FSF para la libertad del software. [45] La FSF considera que el software libre es un subconjunto del software de código abierto, y Richard Stallman explicó que el software DRM , por ejemplo, puede desarrollarse como código abierto, a pesar de cómo restringe a sus usuarios, y por lo tanto no califica como software libre. [13]
La FSF afirmó que el término código abierto fomenta una ambigüedad de otro tipo, ya que confunde la mera disponibilidad del código fuente con la libertad de usarlo, modificarlo y redistribuirlo. [13] Por otra parte, el término software libre fue criticado por la ambigüedad de la palabra libre, que se consideró desalentadora para la adopción empresarial, y por el uso ambiguo histórico del término. [45]
Los desarrolladores han utilizado los términos alternativos Software Libre y de Código Abierto ( FOSS ), o Software Libre/Libre y de Código Abierto (FLOSS), en consecuencia, para describir el software de código abierto que también es software libre . [28]
El software puede distribuirse con código fuente , que es un código que es legible. [46] El software está disponible en código fuente cuando este código fuente está disponible para ser visto. [46] Sin embargo, para estar disponible en código fuente o FOSS , el código fuente no necesita ser accesible para todos, solo para los usuarios de ese software. [46] Si bien todo el software FOSS está disponible en código fuente porque este es un requisito establecido por la Definición de Código Abierto , no todo el software disponible en código fuente es FOSS. [46] Por ejemplo, si el software no cumple con otros aspectos de la Definición de Código Abierto, como la modificación o redistribución permitidas, incluso si el código fuente está disponible, el software no es FOSS. [46]
Una tendencia reciente dentro de las empresas de software es el código abierto, o la transición de su software propietario anterior a software de código abierto mediante su lanzamiento bajo una licencia de código abierto . [47] [48] Ejemplos de empresas que han hecho esto son Google, Microsoft y Apple. [47] Además, el código abierto puede referirse a la programación de software de código abierto o la instalación de software de código abierto. [48] El código abierto puede ser beneficioso de múltiples maneras, como atraer más contribuyentes externos que aportan nuevas perspectivas y capacidades de resolución de problemas. [47] Las desventajas del código abierto incluyen el trabajo que se debe hacer para mantener la nueva comunidad, como hacer que el código base sea fácilmente comprensible, establecer canales de comunicación para nuevos desarrolladores y crear documentación para permitir que los nuevos desarrolladores se unan fácilmente. [47] Sin embargo, una revisión de varios proyectos de código abierto encontró que, aunque un proyecto de código abierto recientemente atrae a muchos recién llegados, es probable que una gran cantidad abandone pronto el proyecto y también es probable que sus bifurcaciones no tengan impacto. [47]
Otros conceptos que pueden compartir algunas similitudes con el código abierto son shareware , software de dominio público , freeware y visores/lectores de software que están disponibles gratuitamente pero no proporcionan el código fuente. [17] Sin embargo, estos difieren del software de código abierto en el acceso al código fuente , licencias, derechos de autor y tarifas. [17]
A pesar de poder colaborar internacionalmente, se encontró que los contribuyentes de software de código abierto se encontraban principalmente en grandes clústeres como Silicon Valley que colaboran en gran medida entre sí. [49] Las posibles razones de este fenómeno pueden ser que la demografía de contribuyentes de OSS trabaja en gran medida en software, lo que significa que la ubicación geográfica de OSS está estrechamente relacionada con esa dispersión y las colaboraciones podrían fomentarse a través del trabajo y las redes sociales . [49] La aceptación del código puede verse afectada por el estatus dentro de estos clústeres de redes sociales, lo que crea predisposiciones injustas en la aceptación del código en función de la ubicación. [50] Las barreras a la colaboración internacional también incluyen diferencias lingüísticas o culturales. [51] Además, se ha demostrado que cada país tiene una mayor tasa de aceptación del código de los contribuyentes dentro de su país, excepto India, lo que indica un sesgo hacia colaboradores culturalmente similares. [51]
En 2021, los países con mayores contribuciones de software de código abierto incluyeron a Estados Unidos, China, Alemania, India y el Reino Unido, en ese orden. [49] Los países con la mayor cantidad de desarrolladores de OSS per cápita según un estudio en 2021 incluyen, en orden, Islandia, Suiza, Noruega, Suecia y Finlandia, mientras que en 2008 los países con la mayor cantidad de contribuyentes estimados en SourceForge fueron Estados Unidos, Alemania, Reino Unido, Canadá y Francia. [49] [51] Aunque se han realizado varios estudios sobre la distribución y las contribuciones de los desarrolladores de OSS, este sigue siendo un campo abierto que se puede medir de varias formas diferentes. [51] Por ejemplo, se ha demostrado que la participación en la tecnología de la información y la comunicación, la población, la riqueza y la proporción de acceso a Internet están correlacionadas con las contribuciones de OSS. [51]
Aunque se ha descubierto que la diversidad de género mejora la productividad del equipo, las mujeres aún enfrentan prejuicios al contribuir a proyectos de software de código abierto cuando su género es identificable. [52] En 2002, solo el 1,5% de los desarrolladores de software de código abierto internacionales eran mujeres, mientras que las mujeres representaban el 28% de los roles en la industria tecnológica, lo que demuestra su baja representación en el campo del software. [53] A pesar de que las contribuciones de OSS no tienen requisitos previos, este sesgo de género puede seguir existiendo debido a la creencia común de los contribuyentes de que el género no debería importar y la calidad del código debería ser la única consideración para la aceptación del código, lo que impide que la comunidad aborde las disparidades sistémicas en la representación femenina. [38] Sin embargo, una cifra más reciente de participación femenina en OSS calculada a nivel internacional entre 2005 y 2021 es del 9,8%, y la mayoría son contribuyentes recientes, lo que indica que la participación femenina puede estar creciendo. [54]
Existen muchas motivaciones para contribuir a la comunidad OSS. [28] Por un lado, es una oportunidad para aprender y practicar múltiples habilidades como codificación y otras habilidades relacionadas con la tecnología, pero también habilidades fundamentales como comunicación y colaboración y habilidades prácticas necesarias para sobresalir en campos relacionados con la tecnología como el seguimiento de problemas o el control de versiones . [28] En lugar de aprender a través de un aula o un trabajo, aprender contribuyendo a OSS permite a los participantes aprender a su propio ritmo y seguir lo que les interesa. [28] Al contribuir a OSS, el colaborador puede aprender las mejores prácticas, tecnología y tendencias actuales de la industria e incluso tener la oportunidad de contribuir a la próxima gran innovación a medida que el OSS se vuelve cada vez más popular dentro del campo de la tecnología. [28] Contribuir a OSS sin pago significa que no hay amenaza de ser despedido, aunque la reputación puede verse afectada. [28] Por otro lado, una gran motivación para contribuir a OSS es la reputación que se gana a medida que uno hace crecer su cartera pública. [28]
Aunque la programación fue vista originalmente como una profesión femenina, sigue habiendo una gran brecha en la informática. [55] La identidad social tiende a ser una gran preocupación ya que las mujeres en la industria tecnológica enfrentan inseguridad por atraer atención masculina no deseada y acoso o ser poco femeninas en su conocimiento tecnológico, lo que tiene un gran impacto en la confianza. [38] Algunos participantes masculinos en el sector tecnológico dejan en claro que creen que es imposible que las mujeres encajen en la cultura, lo que aumenta la inseguridad de las mujeres y su lugar en la industria tecnológica. [52] Además, incluso en un entorno de contribución voluntaria como el software de código abierto, las mujeres tienden a terminar haciendo los aspectos menos técnicos de los proyectos, como las pruebas manuales o la documentación a pesar de que las mujeres y los hombres muestran la misma productividad en las contribuciones de OSS. [52] Los sesgos explícitos incluyen un mayor tiempo de retroalimentación, un mayor escrutinio del código y una menor tasa de aceptación del código. [52] Específicamente en la comunidad de software de código abierto, las mujeres informan que el lenguaje sexualmente ofensivo es común y se le da más atención a la identidad de las mujeres como mujeres que como contribuyentes de OSS. [38] El sesgo es difícil de abordar debido a la creencia de que el género no debería importar, y la mayoría de los contribuyentes sienten que es injusto que las mujeres reciban un trato especial y que el éxito debería depender de la habilidad, lo que impide cualquier cambio para ser más inclusivos. [38]
Los proyectos de software de código abierto son creados y mantenidos por una red de programadores, que a menudo pueden ser voluntarios, y se utilizan ampliamente tanto en productos gratuitos como comerciales. [56]
Unix : Unix es un sistema operativo creado por AT&T que comenzó como precursor del software de código abierto en el sentido de que la revolución del software libre y de código abierto comenzó cuando los desarrolladores comenzaron a intentar crear sistemas operativos sin código Unix. [24] Unix fue creado en la década de 1960, antes de la comercialización de software y antes de que el concepto de software de código abierto fuera necesario, por lo tanto, no se consideró un verdadero proyecto de software de código abierto. [24] Comenzó como un proyecto de investigación antes de comercializarse a mediados de la década de 1980. [24] Antes de su comercialización, representaba muchos de los ideales sostenidos por la revolución del software libre y de código abierto, incluida la colaboración descentralizada de usuarios globales, lanzamientos continuos y una cultura comunitaria de desagrado hacia el software propietario . [24]
BSD: Berkeley Software Distribution (BSD) es un sistema operativo que comenzó como una variante de Unix en 1978 que mezclaba código Unix con código de los laboratorios Berkeley para aumentar la funcionalidad. [24] Como BSD se centró en aumentar la funcionalidad, compartiría públicamente sus mayores innovaciones con el sistema operativo Unix principal. [24] Este es un ejemplo de la compartición de código público libre que es una característica central del software libre actual. [24] Cuando Unix se comercializó en la década de 1980, los desarrolladores o miembros de la comunidad que no apoyaban el software propietario comenzaron a centrarse en BSD y a convertirlo en un sistema operativo que no incluía ningún código de Unix. [24] La versión final de BSD se lanzó en 1995. [24]
GNU : GNU es un sistema operativo libre creado por Richard Stallman en 1984 cuyo nombre significa Gnu no es Unix. [24] La idea era crear un sistema operativo alternativo a Unix que estuviera disponible para que cualquiera lo usara y permitiera a los programadores compartir código libremente entre ellos. [24] Sin embargo, el objetivo de GNU no era solo reemplazar a Unix, sino hacer una versión superior que tuviera más capacidades tecnológicas. [24] Fue lanzado antes de que las creencias filosóficas de la revolución del software libre y de código abierto estuvieran verdaderamente definidas. [24] Debido a su creación por el destacado programador de FOSS Richard Stallman, GNU estuvo muy involucrado en el activismo de FOSS, y uno de los mayores logros de GNU fue la creación de la Licencia Pública General de GNU o GPL, que permitió a los desarrolladores lanzar software que pudiera compartirse y modificarse legalmente. [24]
Linux : Linux es un núcleo de sistema operativo que fue introducido en 1991 por Linus Torvalds . [24] Linux se inspiró en la creación de una versión mejorada del servicio operativo con fines de lucro Minux . [24] Era radicalmente diferente de lo que otros hackers estaban produciendo en ese momento debido a que era totalmente gratuito y estaba descentralizado. [24] Más tarde, Linux se puso bajo la licencia GPL , lo que permitió a las personas ganar dinero con Linux y llevar Linux a la comunidad FOSS. [24]
Apache: Apache comenzó en 1995 como una colaboración entre un grupo de desarrolladores que lanzaron su propio servidor web debido a su frustración con la base de código HTTPd de NCSA . [24] El nombre Apache se usó debido a los varios parches que aplicaron a esta base de código. [24] Un año después de su lanzamiento, se convirtió en el servidor web líder a nivel mundial . [24] Pronto, Apache lanzó su propia licencia , creando discordia en la gran comunidad FOSS, aunque finalmente resultó exitosa. [24] La licencia Apache permitió a los miembros autorizados acceder directamente al código fuente, una marcada diferencia con los enfoques de GNU y Linux. [24]
Si bien el término código abierto se aplicaba originalmente solo al código fuente del software, ahora se está aplicando a muchas otras áreas, como la ecología de código abierto , un movimiento para descentralizar las tecnologías para que cualquier ser humano pueda usarlas. [13] [57] Sin embargo, a menudo se aplica incorrectamente a otras áreas que tienen principios diferentes y en competencia, que se superponen solo parcialmente. [38]
Los mismos principios que sustentan el software de código abierto se pueden encontrar en muchas otras iniciativas, como el código abierto, el contenido abierto y la colaboración abierta . [58] [3]
Esta "cultura" o ideología sostiene que los principios se aplican de manera más general para facilitar la aportación simultánea de diferentes agendas, enfoques y prioridades, en contraste con modelos de desarrollo más centralizados como los que se utilizan normalmente en las empresas comerciales. [15]
Más del 90 por ciento de las empresas utilizan software de código abierto como un componente de su software propietario. [59] La decisión de utilizar software de código abierto, o incluso participar en proyectos de código abierto para mejorar el software de código abierto existente, es típicamente una decisión empresarial pragmática. [60] [61] Cuando el software propietario compite directamente con una alternativa de código abierto, la investigación ha encontrado resultados contradictorios sobre el efecto de la competencia en el precio y la calidad del producto propietario. [62]
Durante décadas, algunas empresas han hecho del mantenimiento de un producto de software de código abierto para usuarios empresariales su modelo de negocio. Estas empresas controlan un producto de software de código abierto y, en lugar de cobrar por la licencia o el uso, cobran por las mejoras, la integración y otros servicios. [63] Los productos de software como servicio (SaaS) basados en componentes de código abierto son cada vez más comunes. [64]
Se prefiere el software de código abierto para aplicaciones científicas porque aumenta la transparencia y ayuda en la validación y aceptación de los resultados científicos. [65]
{{cite journal}}
: CS1 maint: DOI inactivo a partir de noviembre de 2024 ( enlace )