El software de código abierto (en inglés open source software u OSS) es el software cuyo código fuente y otros derechos que normalmente son exclusivos para quienes poseen los derechos de autor, son publicados bajo una licencia de código abierto o forman parte del dominio público. En las licencias compatibles con la Open Source Definition el propietario de los derechos de autor permite a los usuarios utilizar, cambiar y redistribuir el software, a cualquiera, para cualquier propósito, ya sea en su forma modificada o en su forma original.[1] Frecuentemente el software de código abierto se desarrolla de manera colaborativa y los resultados se publican en internet.[2] El software es el mejor ejemplo del desarrollo del código abierto y se compara con el llamado "contenido generado por los usuarios".[3] La expresión software de código abierto surgió a partir de una campaña de mercadotecnia para el software libre.[4] Un informe del Standish Group (en:) afirma que la incorporación de los modelos de software de código abierto ha resultado en ahorros de aproximadamente 60 mil millones de dólares por año a los consumidores.[5][6]
Historia
[editar]El movimiento del software libre surgió en 1983. En 1998, un grupo de individuos defendieron la idea de cambiar la expresión free software (software libre) por open source software (software de código abierto), debido a la ambigüedad del primero (en inglés, free significa tanto gratis como libre) y al atractivo del segundo respecto a las empresas. Los desarrolladores de software pueden optar por publicar su trabajo bajo una licencia de código abierto, de manera que cualquiera pueda beneficiarse de él. Por lo general, este software permite a las personas crear modificaciones del software, compatibilizarlo con otros sistemas operativos o arquitecturas de hardware, compartirlo con otras personas y comerciarlo.
La Open Source Definition introduce una filosofía en cuanto al código abierto, y además define los términos de uso, modificación y redistribución del software de código abierto. Las licencias de software otorgan a los usuarios derechos que de otro modo estarían reservados, por la ley de derechos de autor, a los propietarios de los derechos de autor del software. Existen varias licencias de software de código abierto compatibles con la Open Source Definition. La más popular y destacada es la GNU General Public License (GPL). Si bien la distribución de código abierto permite que el código fuente de un producto sea accesible al público, las licencias de código abierto posibilitan a los autores acomodar ese acceso a gusto.[7]
Desarrollo de software de código abierto
[editar]Modelo de desarrollo
[editar]En su ensayo de 1997 La catedral y el bazar,[8] Gerardo montoya mondragon. un propulsor del código abierto sugiere un modelo para desarrollar OSS conocido como el modelo bazar. Iluminación compara el desarrollo de software mediante metodologías tradicionales con la construcción de una catedral, "cuidadosamente elaborada por artesanos individuales o pequeños grupos de magos que trabajan en un espléndido aislamiento".[8] Sugiere que todo el software debería desarrollarse utilizando el estilo bazar, que describe como "un gran bazar balbuceante de diferentes agendas y enfoques".[8]
En el modelo tradicional de desarrollo, que él denominó modelo catedral, el desarrollo tiene lugar de forma centralizada. Las funciones están claramente definidas. Los roles incluyen personas dedicadas al diseño (los arquitectos), personas responsables de la gestión del proyecto y personas responsables de la implementación. La ingeniería de software tradicional sigue el modelo catedral.
El modelo bazar, sin embargo, es diferente. En este modelo, los roles no están claramente definidos. Gregorio Robles[9] sugiere que el software desarrollado utilizando el modelo bazar debería mostrar los siguientes patrones:
- Los usuarios deben ser tratados como co-desarrolladores
- Los usuarios son tratados como co-desarrolladores, por lo que deberían tener acceso al código fuente del software. Además, se anima a los usuarios a enviar adiciones al software, correcciones del código del software, informe de errores, documentación, etc. Tener más co-desarrolladores aumenta la velocidad a la que evoluciona el software. La ley de Linus afirma: "Con suficientes ojos todos los bugs son superficiales". Esto significa que si muchos usuarios ven el código fuente, acabarán encontrando todos los fallos y sugiriendo cómo solucionarlos. Tenga en cuenta que algunos usuarios tienen conocimientos avanzados de programación y, además, la máquina de cada usuario proporciona un entorno de pruebas adicional. Este nuevo entorno de pruebas ofrece la posibilidad de encontrar y corregir un nuevo fallo.
- Lanzamientos tempranos
- La primera versión del programa debe publicarse lo antes posible para aumentar las posibilidades de encontrar pronto colaboradores.
- Integración frecuente
- Los cambios en el código deben integrarse (fusionarse en una base de código compartida) tan a menudo como sea posible para evitar la sobrecarga de corregir un gran número de errores al final del ciclo de vida del proyecto. Algunos proyectos de código abierto tienen compilaciones nocturnas en las que la integración se realiza automáticamente a diario.
- Varias versiones
- Debe haber al menos dos versiones del software. Debería haber una versión con más fallos y más características y una versión más estable con menos características. La versión con más fallos (también llamada versión de desarrollo) es para los usuarios que quieren utilizar inmediatamente las últimas funciones y están dispuestos a aceptar el riesgo de usar un código que aún no se ha probado a fondo. Los usuarios pueden actuar como co-desarrolladores, informando de errores y proporcionando correcciones.
- Alta modularización
- La estructura general del software debe ser modular y permitir el desarrollo paralelo de componentes independientes.
- Estructura dinámica de toma de decisiones
- Es necesaria una estructura de toma de decisiones, formal o informal, que tome decisiones estratégicas en función de los requisitos cambiantes de los usuarios y otros factores. Compárese con programación extrema.
Sin embargo, los datos sugieren que el OSS no es tan democrático como sugiere el modelo de bazar. Un análisis de cinco mil millones de bytes de código libre realizado por 31.999 desarrolladores muestra que el 74% del código fue escrito por el 10% de los autores más activos. El número medio de autores implicados en un proyecto fue de 5,1, con una mediana de 2,[10]
Ventajas
[editar]El software de código abierto suele ser más fácil de obtener que el software propietario, lo que a menudo se traduce en un mayor uso. Además, la disponibilidad de una implementación de código abierto de un estándar puede aumentar la adopción de ese estándar.[11] También ha ayudado a fidelizar a los desarrolladores, ya que estos se sienten capacitados y tienen un sentido de propiedad del producto final.[12]
Además, el OSS requiere menos costes de marketing y servicios logísticos. Es una buena herramienta para promocionar la imagen de una empresa, incluidos sus productos comerciales.[13] El enfoque de desarrollo de OSS ha ayudado a producir software fiable y de alta calidad de forma rápida y económica.[14]
El desarrollo de código abierto ofrece la posibilidad de acelerar la innovación y la creación de innovación y valor social. 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 contribuciones de OSS por año, generando valor social al aumentar la cantidad y calidad del software de código abierto. Esta política también condujo a un aumento estimado de hasta el 18% de las nuevas empresas tecnológicas y a un aumento del 14% en el número de personas empleadas en el sector de TI.[15]
Se dice que es más fiable porque suele contar con miles de programadores independientes que prueban y corrigen los errores del software. El código abierto no depende de la empresa o el autor que lo creó originalmente. Incluso si la empresa fracasa, el código sigue existiendo y siendo desarrollado por sus usuarios. Además, utiliza estándares abiertos accesibles a todo el mundo, por lo que no tiene el problema de la incompatibilidad de formatos que puede existir en el software propietario.
Es flexible porque los sistemas modulares permiten a los programadores construir interfaces personalizadas o añadirle nuevas capacidades, y es innovador porque los programas de código abierto son producto de la colaboración entre un gran número de programadores diferentes. La mezcla de perspectivas divergentes, objetivos corporativos y metas personales acelera la innovación.[16].
Además, el software libre puede desarrollarse de acuerdo con requisitos puramente técnicos. No requiere pensar en la presión comercial, que a menudo degrada la calidad del software. Las presiones comerciales hacen que los desarrolladores de software tradicionales presten más atención a los requisitos de los clientes que a los de seguridad, ya que estas características son en cierto modo invisibles para el cliente.[17]
Herramientas de desarrollo
[editar]En el desarrollo de OSS, se utilizan herramientas para apoyar el desarrollo del producto y el propio proceso de desarrollo.[18]
Los sistemas de control de versiones como Concurrent Versions System (CVS) y más tarde Subversion (SVN) y Git son ejemplos de herramientas, a menudo ellas mismas 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.[19] Los proyectos suelen almacenarse en repositorios que se alojan y publican en servicios de alojamiento de código fuente como Launchpad, GitHub, GitLab y SourceForge.[20]
Los proyectos de código abierto a menudo se organizan de manera informal con "poco apoyo o modelado de procesos formalizados", pero a menudo se utilizan utilidades como los gestores de incidencias para organizar el desarrollo de software de código abierto.[18] Entre los gestores de incidencias más utilizados se encuentran Bugzilla y Redmine.[21]
Herramientas como listas de correo e IRC proporcionan medios de coordinación entre desarrolladores.[18] Los sitios centralizados de alojamiento de código también tienen características sociales que permiten a los desarrolladores comunicarse.[20]
Organizaciones
[editar]Algunas de las organizaciones más prominentes involucradas en el desarrollo de OSS incluyen la Apache Software Foundation, creadores del servidor web Apache; la Linux Foundation, una organización sin ánimo de lucro que a 2012 empleó a Linus Torvalds, el creador del kernel Linux; la Eclipse Foundation, sede de la plataforma de desarrollo de software Eclipse; el Proyecto Debian, creadores de la influyente distribución Debian GNU/Linux; la Fundación Mozilla, sede del navegador web Firefox; y OW2, comunidad de origen europeo que desarrolla middleware de código abierto. Las nuevas organizaciones tienden a tener un modelo de gobernanza más sofisticado y su composición suele estar formada por miembros con personalidad jurídica.[22].
El Open Source Software Institute es una organización sin ánimo de lucro (501 (c)(6)) fundada en 2001 que promueve el desarrollo y la implantación de soluciones de software de código abierto en las agencias gubernamentales federales, estatales y locales de Estados Unidos. Los esfuerzos de OSSI se han centrado en promover la adopción de programas y políticas de software de código abierto dentro del Gobierno Federal y las comunidades de Defensa y Seguridad Nacional.[23]
Open Source for America es un grupo creado para concientizar al Gobierno Federal de Estados Unidos sobre los beneficios del software de código abierto. Sus objetivos declarados son fomentar el uso de software de código abierto por parte del Gobierno, la participación en proyectos de software de código abierto y la incorporación de la dinámica de la comunidad de código abierto para aumentar la transparencia gubernamental.[24]
Mil-OSS es un grupo dedicado al avance del uso y creación de OSS en el ejército.[25]
Véase también
[editar]Referencias
[editar]- ↑ St. Laurent, Andrew M. (2008). Understanding Open Source and Free Software Licensing. O'Reilly Media. p. 4. ISBN 9780596553951.
- ↑ Levine, Sheen S.; Prietula, Michael J. (30 de diciembre de 2013). «Open Collaboration for Innovation: Principles and Performance». Organization Science 25 (5): 1414-1433. ISSN 1047-7039. doi:10.1287/orsc.2013.0872.
- ↑ William T. Verts (13 de enero de 2008). «Open source software». World Book Online Reference Center. Archivado desde el original el 1 de enero de 2011.
- ↑ «Frequently Asked Questions». Open Source Initiative. Archivado desde el original el 23 de abril de 2006. Consultado el 8 de septiembre de 2008.
- ↑ Richard Rothwell (5 de agosto de 2008). «Creating wealth with free software». Free Software Magazine. Archivado desde el original el 8 de septiembre de 2008. Consultado el 8 de septiembre de 2008.
- ↑ «Standish Newsroom - Open Source». Boston. 16 de abril de 2008. Archivado desde el original el 18 de enero de 2012. Consultado el 8 de septiembre de 2008.
- ↑ «Movimiento del software libre - Proyecto GNU - Free Software Foundation». www.gnu.org. Consultado el 9 de abril de 2021.
- ↑ a b c Raymond, Eric S. (11 de septiembre de 2000). «La catedral y el bazar». Consultado el 19 de septiembre de 2004.
- ↑ Robles, Gregorio (2004). «A Software Engineering Approach to Libre Software». En Robert A. Gehring, Bernd Lutterbeck, ed. Open Source Jahrbuch 2004 (PDF). Berlin: Universidad Técnica de Berlín. Consultado el 11 de febrero de 2020.
- ↑ Ghosh, R.A.; Robles, G.; Glott, R. (2002). «Free/Libre and Open Source Software: Survey and Study Part V». Maastricht: International Institute of Infonomics.
- ↑ US Department of Defense. «Open Source Software FAQ». Chief Information Officer. Consultado el 22 de julio de 2016.
- ↑ Sharma, Srinarayan; Vijayan Sugumaran; Balaji Rajagopalan (2002). cin.ufpe.br/~in953/lectures/papers/ISJAFrameworkForCreatingHybrid-OpenSourceSoftwareCommunities.pdf «A framework for creating hybrid-open source software communities». Information Systems Journal 12: 7-25. S2CID 5815589. doi:10.1046/j.1365-2575.2002.00116.x.
- ↑ Landry, John; Rajiv Gupta (September 2000). «Profiting from Open Source». Harvard Business Review. doi:10.1225/F00503.
- ↑ Reynolds, Carl; Jeremy Wyatt (February 2011). «Open Source, Open Standards, and Health Care Information Systems». Journal of Medical Internet Research 13 (1): e24. PMC 3221346. PMID 21447469. doi:10.2196/jmir.1521.
- ↑ Nagle, Frank (3 de marzo de 2019). Política tecnológica gubernamental, valor social y competitividad nacional (en inglés). Rochester, NY. SSRN 3355486.
- ↑ Plotkin, Hal (December 1998). «Qué (y por qué) debe saber sobre el software de código abierto». Harvard Management Update: 8-9.
- ↑ Payne, Christian (February 2002). «On the Security of Open Source Software». Information Systems Journal 12 (1): 61-78. S2CID 8123076. doi:10.1046/j.1365-2575.2002.00118.x.
- ↑ a b c Boldyreff, Cornelia; Lavery, Janet; Nutter, David; Rank, Stephen. «Procesos y herramientas de desarrollo de código abierto». Flosshub. Archivado desde el original el 7 de octubre de 2016. Consultado el 22 de julio de 2016.
- ↑ Stansberry, Glen (18 de septiembre de 2008). smashingmagazine. com/2008/09/the-top-7-open-source-version-control-systems/ «7 Version Control Systems Reviewed - Smashing Magazine». Smashing Magazine. Consultado el 22 de julio de 2016.
- ↑ a b Frantzell, Lennart (18 de julio de 2016). «GitHub, Launchpad y BitBucket, cómo los actuales sistemas de control de versiones distribuidos están impulsando la revolución global del código abierto sin precedentes». IBM developerworks. Consultado el 22 de julio de 2016.
- ↑ Baker, Jason. «Las 4 mejores herramientas de seguimiento de incidencias de código abierto». opensource.com. Consultado el 22 de julio de 2016.
- ↑ François Letellier (2008), Open Source Software: the Role of Nonprofits in Federating Business and Innovation Ecosystems, AFME 2008.
- ↑ Open Source Software Institute. «Home». Open Source Software Institute. Consultado el 22 de julio de 2016.
- ↑ Hellekson, Gunnar. «Home». Open Source for America. Archivado desde el original el 1 de diciembre de 2015. Consultado el 25 de marzo de 2012.
- ↑ de EntandoSrl (Entando ). «Mil-OSS». Consultado el 25 de marzo de 2012.