Definición
El software de open source o código abierto es un modelo compartido en que los desarrolladores de una aplicación comparten abiertamente la base de código entera de un proyecto, en vez de solo un proyecto compilado con archivos ejecutables. Microsoft es uno de los desarrolladores más populares del modelo de código cerrado, pero en tiempos recientes se han ido cambiando al modelo de código abierto en algunos de sus proyectos. Los proyectos de código abierto les permiten a otros desarrolladores añadir cosas al código existente, modificarlo, copiarlo y analizarlo en busca de errores y problemas de ciberseguridad.
Software de código abierto vs. software de código cerrado
En la década de 1990, cuando los ordenadores de escritorio se volvieron populares, los desarrolladores de software ofrecían discos con código compilado que se podía instalar en el ordenador del usuario. El código compilado incluye archivos con instrucciones que permiten a un sistema operativo dedicar recursos de cómputo y ejecutar procedimientos de desarrollador. El bytecode (para lenguajes interpretados) o el código de operación (para lenguajes compilados) es el lenguaje que los ordenadores pueden entender, y se usa para realizar las instrucciones de los desarrolladores.
Como ejemplo, el siguiente código podría formar parte de una base de código:
if (active) //do something
Un humano puede entender este fragmento de pseudocódigo, pero los ordenadores no entienden los idiomas humanos. Los ordenadores entienden de unos y ceros, así que los desarrolladores usan compiladores para convertir el lenguaje humano en ejecutables. El sistema operativo usa los ejecutables para asignar memoria, inicializar variables, datos y los opcodes que constituyen el programa en sí. Los archivos compilados son específicos para un sistema operativo porque cada sistema operativo tiene una manera diferente de hacer llamadas a los procedimientos internos.
Como los ejecutables se compilan, los humanos no somos capaces de entender las instrucciones en el archivo ejecutable. Si solo se tienen archivos ejecutables, no se puede ver el código en sí a menos que se tenga un buen descompilador. Esto protege el código propiedad del desarrollador, porque ningún ente externo puede analizarlo ni robárselo.
Las comunidades de open source funcionan de manera diferente compartiendo voluntariamente el código fuente de la aplicación. La idea es que, mientras que sería posible robarse el código, el beneficio de compartir código para analizarlo y expandirlo es mucho mayor. Los usuarios pueden ver el código libremente para aprender de este o mejorarlo. El código abierto se puede bifurcar, lo que significa que otro desarrollador toma una copia de este y le agrega funcionalidades. Algunos analistas revisan el código para descubrir potenciales errores y vulnerabilidades, y alertar al desarrollador original.
El mero hecho de los desarrolladores de open source publiquen su código no implica que este se pueda copiar o usar libremente. Los desarrolladores de código abierto definen el tipo de licencia que se aplica a su código cuando se publica su base de código. Las licencias en el mundo del código abierto son similares a las licencias de código cerrado en el sentido de que las licencias definen cómo se puede usar, copiar, cambiar y distribuir el código. Por ejemplo, algunas licencias de código abierto les permiten a los académicos, estudiantes e individuos usar libremente el código, pero las empresas no deben usar la base de código en aplicaciones comerciales.
Cómo funciona el código abierto
La manera en que los desarrolladores crean el código para proyectos de código abierto es la misma que para el código cerrado, excepto por el hecho de que los proyectos se hacen públicos. Github es una plataforma de gestión de repositorios común integrada en el proceso de desarrollo. Al igual que muchas otras herramientas de repositorio de código, lleva un historial de cada proyecto, lo que les permite a los desarrolladores revertir cambios, comprobar el código y publicar actualizaciones. Los desarrolladores suelen desarrollar el código en privado, y después publican los cambios en la plataforma pública basada en la nube de Github.
Cuando un proyecto de desarrollo es público, otros usuarios pueden ver todos y cada uno de los archivos relevantes del proyecto. Los usuarios pueden descargar el repositorio entero, o cada archivo se puede ver y descargar por separado. Una descarga total de proyecto se puede usar para compilarlo y ejecutarlo en el equipo local de un usuario, de modo que este se pueda revisar. Cualquier error o dificultar con la ejecución del código puede arreglarse en la copia local del usuario.
El desarrollador principal de un proyecto lleva la gestión, aprueba cambios y tiene un control total de la base de código. Otros usuarios pueden tomar una copia, pero el propietario debe aprobar cualesquiera cambios en la base de código principal antes de que se incorporen. El sistema operativo Linux tiene diversos contribuyentes en su código, pero Linus Torvalds, el propietario de la base de código principal, debe aprobar estos cambios.
Una base de código principal puede bifurcarse, lo que significa que el dueño original del proyecto les permite a otros desarrolladores hacer una copia del código e implementar cambios en esta. Estos cambios no se incorporan en la base de código principal. Los cambios se usan para crear una versión modificada del software. Por ejemplo, el sistema operativo Linux tiene otras versiones, como Kali, Ubuntu y Red Hat, que usan el sistema operativo central de Linux, pero las versiones modificadas tienen diferentes herramientas "preenvasadas" y GUI exclusivas del desarrollador.
Beneficios del software de código abierto
Con más contribuyentes a la base de código, el software tiene mejores funcionalidades, menos errores y actualizaciones continuas. Les permite a los pequeños desarrolladores competir con marcas más prominentes, dándoles una plataforma para distribuir software y compartirlo con otras personas que puedan contribuir a mejorarlo. Para los desarrolladores, es una excelente manera de aprender los estándares de programación e identificar mejores maneras de codificar un procedimiento en particular.
Para los usuarios, la mayoría de los beneficios están relacionados con la estabilidad y seguridad del código. Los usuarios reciben una versión compilada del código que se ejecuta en sus equipos locales, pero la cantidad de desarrolladores que contribuyen es tal que es muy poco probable que surjan errores. Los analistas de ciberseguridad suelen descargar código para revisarlo y alertar a los desarrolladores de la existencia de problemas. Los mayores desarrolladores de código abierto publican proyectos en páginas de hacking de white hat o sombrero blanco, donde se les paga a los hackers por encontrar vulnerabilidades en su código. Usar a hackers pagados produce software de código abierto que contiene menos vulnerabilidades, lo que protege a los usuarios de atacantes malintencionados y de malware que explota problemas desconocidos.
Los softwares más importantes, como los sistemas operativos que permanecen como código abierto, les facilitan a los desarrolladores adaptar su software de un sistema operativo a otro. Con Windows, los desarrolladores están atados a las más recientes actualizaciones y cambios del sistema operativo, y solamente sabrán si el software funciona con los últimos cambios, probando el código en la versión más reciente. Con Linux, los desarrolladores pueden convertir con más facilidad el código existente que se ejecuta en Windows con el sistema operativo Linux.
¿Por qué se prefiere el código abierto?
Los usuarios finales no saben si el software es de código abierto o cerrado. La mayoría piensan en el código abierto como software gratis, pero ese no siempre es el caso. Para el individuo que lo usa por motivos personales, muchos desarrolladores de código abierto lo ofrecen gratis y reciben donaciones, pero los usuarios deben siempre comprobar las licencias antes de instalar gratuitamente el software en una máquina. Las infracciones a las licencias pueden ser muy costosas para empresas que abusan del software de código abierto.
Incluso si el software de código abierto no es gratuito, sí suele ser mucho más asequible que el software de código cerrado. Los desarrolladores de código abierto típicamente ganan dinero ofreciendo soporte técnico pago. Los grandes desarrolladores de distribuciones populares del sistema operativo Linux ofrecen soporte empresarial con el software comercial, y así es como logran sobrevivir y ganar dinero. Las corporaciones obtienen a cambio un software asequible con soporte técnico pagado que puede ser mucho más asequible que los productos de código cerrado.
Otros investigadores y profesionales de TI prefieren los sistemas operativos de código abierto por diferentes motivos. Linux tiene comandos que el sistema operativo Windows simplemente no ofrece. Como Linux se puede personalizar, hay menos limitaciones que con el sistema operativo Windows. Existen "hacks" para alterar el sistema operativo Windows, pero hacer esto infringe la licencia de usos aceptables de Windows. Por lo general, las actualizaciones a un sistema operativo sobrescriben los cambios personalizados no aprobados, así que no sirve de nada implementar cambios "hackeados" en el código del sistema operativo.
Proofpoint Sendmail Open Source Email Protection
Learn how the sendmail Sentrion platform helps organizations that are using open source for large complex environments and need an enterprise platform that will enable a messaging roadmap.
White Paper: Explore Vulnerability in our User Risk Report
Discover the User Risk Report that surveyed more than 6,000 working adults about their cybersecurity habits. You might find the results heartening or terrifying.