» Ir al portal nuevo de Microjuris OK
El término open source software, o código abierto, es un término utilizado para referirse al código de un programa informático que se hace disponible al público mediante una licencia de derechos de autor que permite la inspección, uso, distribución y modificación del código bajo ciertas condiciones. Aunque el uso de código abierto puede traer innumerables ventajas, hay que considerar que las condiciones contenidas en las licencias de código abierto pudieran afectar adversamente los planes de comercialización de los programas informáticos si estas condiciones no son evaluadas a tiempo.
Reutilización de código
Existen diversas razones por las cuales los equipos de desarrollo de programas informáticos eligen utilizar herramientas de código abierto (1). Una razón importante es la reutilización de código. La reutilización de código (code reuse) es una práctica prevaleciente, y recomendable en muchos casos. Reusar código permite al desarrollador concentrar sus esfuerzos en el desarrollo de la solución particular que le han encomendado en lugar de concentrar sus esfuerzos en "reinventar la rueda" lo cual pudiera suponer una inversión sustancial de dinero y tiempo.
La reutilización de código también resulta en código más maduro pues las librerías y herramientas disponibles públicamente han sido probadas por una cantidad sustancial de usuarios por lo que el código que depende de ellas resulta ser más seguro y eficiente. Por lo tanto, es común que al iniciar el desarrollo de un proyecto de software, los programadores a cargo del mismo realicen una búsqueda de herramientas, librerías y otros paquetes que realicen funciones primordiales necesarias para el desarrollo de la solución.
Desarrollo de código de diversas fuentes
Algunos analistas han acuñado el concepto de multi source development para referirse al proceso de desarrollo en el cual el código proviene de diversas fuentes (2). Bajo este paradigma, la solución final resulta ser una amalgama de código desarrollado mediante subcontratación, código de librerías comerciales y código abierto, junto con el código desarrollado internamente por el desarrollador. Aunque la utilización de código abierto puede acelerar el desarrollo de un producto o servicio, es importante señalar que utilizar herramientas de código abierto podría tener el efecto de alterar el esquema de licenciamiento que se desea para el producto o servicio desarrollado.
En palabras simples y a modo de ejemplo, hay licencias de código abierto que obligan a quien usa el código, lo distribuye o lo modifica, a utilizar esa misma licencia en todo el código. Ese tipo de cláusulas se conoce como Copyleft (3). Las cláusulas Copyleft son sólo un ejemplo de las obligaciones que surgen en virtud de una licencia de código abierto. Como se muestra en la figura anterior, la utilización de código abierto genera obligaciones que pudieran afectar adversamente la comercialización de los productos desarrollados si no se toman en cuenta a tiempo.
Cumplimiento con licencias de código abierto (open source software compliance)
Si el deseo de la empresa es que el programa desarrollado sea propietario, es necesario que la empresa realice una auditoría para establecer qué obligaciones, si alguna, se generan por el uso, modificación o distribución de programas específicos de código abierto.
El esquema de cumplimiento de código abierto (OSS compliance) comienza con una inspección del código fuente la cual puede ser realizada de formas mecánicas (4). Luego que se encuentran paquetes de código abierto, se procede a identificar los términos de las licencias de código abierto aplicables (5). Si se determina que hay licencias que resultan incompatibles, se procede a reestructurar (muchas veces reescribir) el código para eliminar el paquete de código abierto que causa la incompatibilidad. Luego de la reestructuración se vuelve a inspeccionar el código abierto, llevando a cabo el mismo proceso si se identifican problemas ulteriores. Finalmente, cuando ya no se identifican más incompatibilidades, el código es aprobado.
Conclusión
La utilización de código abierto puede acelerar el desarrollo de un programa y asegurar la madurez del mismo. Sin embargo, también puede afectar los derechos de autor del programa desarrollado. Por lo tanto, incluir una fase de cumplimiento de código abierto (OSS compliance) en el proceso de ingeniería de software es recomendable para evitar sorpresas futuras y asegurar la comercialización de los productos de la empresa.
NOTAS
(1) Jacobsen v. Katzer, 535 F.3d 1373, 1379 (Fed. Cir. 2008) ("For example, program creators may generate market share for their programs by providing certain components free of charge. Similarly, a programmer or company may increase its national or international reputation by incubating open source projects. Improvement to a product can come rapidly and free of charge from an expert not even known to the copyright holder.").
(2) Véase, por ejemplo, https://www.blackducksoftware.com/resources/open-source-terms/multi-source-development.
(3) See Jacobsen v. Katzer, 535 F.3d at 1379; Versata Software, Inc. v. Ameriprise Fin., Inc., No. A-14-CA-12-SS, 2014 WL 950065, at *1 (W.D. Tex. Mar. 11, 2014) ("In other words, the GPL is a "viral" license in the sense the incorporation of a GPL-covered software program into a new program "infects" the new program and requires it to become open source, too."); see also Wallace v. Int’l Bus. Machines Corp., 467 F.3d 1104, 1105 (7th Cir. 2006).
(4) Por ejemplo, FOSSology es un programa que permite analizar un paquete de código para identificar licencias y derechos de autor. Véase http://www.fossology.org.
(5) La lista de licencias del Software Package Data Exchange (SPDX) es un recurso utilizado comúnmente para identificar los términos de licencias de código abierto. Vease https://spdx.org/licenses/.
por el Lcdo. José A. Medina-Cruz, Ferraiuoli LLC