¿Qué es Open Source?

¿Qué cr@$*! es open source? Probablemente es un término que has escuchado bastante si es que estás inmerso en el mundo computín, y si no, estoy prácticamente seguro de que en tu computador tienes varios programas que cumplen con estas características. Sin embargo, no es un concepto tan fácil de entender y pareciera ser que se tiende a confundir con el software gratis, por lo que veremos cuáles son aquellos elementos particulares del open source.

Primero, este concepto hace referencia principalmente a un tipo de software, es decir, a código y su manera de desarrollarlo. La traducción textual de este término sería algo así como “fuente abierta”, lo que nos da ciertas luces sobre su característica principal: el código y todo lo necesario para que el software funcione está disponible para que cualquier persona lo pueda ver y usar. No es privado, ni está restringido. La verdad es que fuera de las herramientas para el desarrollo esta manera de hacer software no es tan común, porque implica directamente que aquello que se creó se puede usar de manera gratuita, lo que no es demasiado tentador para algunas personas.

Los proyectos open source son gratis

Peeeero, no hay que confundirse, que un software sea gratis no necesariamente significa que sea open source, faltan más cosas para poder decir que algo sí lo es. Por ejemplo, TikTok, Gmail y Google Chrome (entre otros) son aplicaciones gratis, pero que no son de código abierto.
Vamos a comparar una aplicación open source como Firefox, con una closed source, como Google Chrome. Centrándonos en el software mismo y dejando de lado sus funcionalidades, tenemos que Firefox es de uso gratuito, su código se puede leer y usar por cualquiera y cualquiera puede colaborar con código. Por otro lado, Chrome es un programa de código cerrado, donde solo la compañía dueña del software (Google) es la que puede ver el código y, por lo mismo, agregar funcionalidades o arreglar bugs.

Tabla comparativa entre closed y open source

Ahora, con el panorama más claro, hay que ver qué es lo bueno, lo malo y lo feo de esta manera de hacer software.

Lo bueno

La gran gracia de que sea código abierto es que cualquier persona del mundo puede colaborar, por lo que está constantemente sometida a revisión, a prueba, y, en caso de que algo se rompa, cualquiera lo puede arreglar. Esto se logra porque, generalmente, detrás de cada software open source hay una comunidad activa y amplia de desarrolladores que constantemente están actualizando y manteniendo el código base. Por ejemplo, proyectos como Bitcoin solo pueden existir como software de código abierto, porque es la única manera en la que cualquier persona puede verificar las reglas del sistema.

Dentro de la comunidad de un software open source nos encontramos con 3 grandes categorías de cooperadores:

  1. Core committers: Son los desarrolladores que están dedicados a crear y actualizar el código base, dedicándole una cantidad de tiempo considerable. Son los que van revisando el código que buscan agregar los contributors (contribuyentes) y los que más commits hacen, de ahí su nombre. Pueden ser empleados de una empresa, estar en alguna fundación o ser los creadores del software, no hay un requisito definido para esto. Los devs se ven motivados a pertenecer a los core commiters de un proyecto open source porque esto es bien valorado por los otros desarrolladores, y, además, te expone como un dev competente
  2. Contributors: Son las personas/desarrolladores que agregan funcionalidades o ayudan en tareas que se escapan de las manos de los core committers. Pueden contribuir una vez o hacerlo con frecuencia. Su tipo de aporte varía, puede ser desde el código hasta la documentación. Al igual que los core commiters, ser contribuyente de un software de código abierto es bien visto y te cataloga como un dev bacán
  3. Sponsors: O auspiciadores, son los que ponen plata para apoyar la aplicación. Esto lo hacen para que los devs que están a cargo del desarrollo de las herramientas que usan no dejen de agregar funcionalidades, ni dejen de mantenerlas.

Un caso común de cómo te podrías convertir en un contributor es qué te encuentres con un error en un proyecto de código abierto mientras desarrollas software, logres cachar el origen de ese error y puedas solucionarlo. Después de que lo arreglaste, decides ser un alma caritativa con el resto de los desarrolladores, por lo que pones tu solución a disposición del resto, arreglando así ese bug, cooperando con la construcción de la herramienta open source y, por qué no, demostrando al resto de la comunidad lo bacán que eres como dev ;)

Lo malo

Aunque el hecho de que todos puedan aportar, ver y usar el código es muy bacán, no todo es color de rosa. Las aplicaciones open source sufren lo que se conoce como la tragedia de los comunes. Aplicada en este contexto, implica que, a pesar de que muchos desarrolladores usan librerías y distintas herramientas que son de código abierto, no tienden a contribuir en las mismas. Es decir, un gran porcentaje de las cosas que se desarrollan están construidas sobre software open source, pero muy pocas personas colaboran con ese software.

Sin embargo, no podemos hacerles la cruz por no contribuir. Sin duda uno de las cosas más complejas de hacer es tomar código que no ha sido desarrollado por ti y agregarle funcionalidades, considerando que en general, son proyectos grandes y perderías mucho tiempo familiarizándote con él.


Lo “feo”

Lo que se podría considerar como lo más “peligroso” de mantener el código público es el hecho de que una persona con malas intenciones puede tener acceso a toda la información que quiera. Probablemente estés pensando en que esto le permitiría encontrar fácilmente los puntos bajos en la seguridad a cualquier hacker, sin embargo, como cualquiera puede ver el código, hay mucha gente que lo está revisando constantemente y, por consiguiente, arreglando las vulnerabilidades que se puedan encontrar, haciendo que los proyectos open source tiendan a ser de los más seguros. Además, hoy en día security by obscurity por sí solo ya no se considera una manera de mantener seguro un software, lo que se busca actualmente es que, a pesar de que el atacante conozca el sistema, no sea capaz de romperlo. De todas maneras, es un punto que no puedes pasar por alto al momento de desarrollar herramientas o programas open source.

Dónde encontrar software open source

Ya puedes tener una idea de en qué consisten los proyectos de código abierto, pero parece ser que es algo muy de nicho y qué no está presente en las cosas que usamos todos los días. Obvio que no todo lo que usamos es open source, pero prácticamente todo está construido sobre este tipo de software, y no estoy hablando solo de aplicaciones o servicios en específico, si no que de compañías enteras que crean valor desde estas herramientas. Una manera muy sencilla de ejemplificar esto, es que la gran mayoría de los lenguajes de programación (si es que no todos) son de código abierto. Si solo tomamos uno de ellos, como podría ser Python, tenemos que empresas como Google y Uber los utilizan en el desarrollo de sus productos y herramientas, siendo Python un proyecto que tiene alrededor de 1700 contribuyentes en su repositorio. Ojo que este número no considera los contribuyentes de las innumerables librerías que existen para este lenguaje, si que hay mucha más gente que coopera en la construcción. Y este es solo un ejemplo, porque la gran mayoría de las empresas grandes relacionadas con el mundo tech integran software open source a la hora de desarrollar


Cómo colaborar

Cómo en todas las cosas, tienes que partir por el principio. El primer paso para colaborar en un proyecto de código abierto es encontrar ese proyecto. Esto puede ser algo complicado, podrías partir viendo qué herramientas open source son las que más ocupas, para así estar un poquito familiarizado con su funcionamiento. Luego, es ideal centrarse en alguna funcionalidad, bug o pedazo de la documentación en específico, ojalá lo más modular posible. De esta manera, el código que quieras agregar o la nueva explicación que quieras dar será fácil de revisar para los core commiters, haciendo que tu aporte pueda llegar rápida y efectivamente a tener un impacto. Otro beneficio de contribuir en un área en específico, en el caso del código, es que será mucho más fácil familiarizarte con este mismo y su flujo, acortando tu tiempo de adaptación a esa parte en particular del software. Finalmente, debes hacer llegar tu propuesta de cambio a las personas encargadas del proyecto, para su revisión y posible incorporación al software. Esto en la práctica se suele hacer a través de Github, la plataforma de código más grande del mundo. Tienes que hacerle un fork al repositorio del software open source, hacer los cambios que encuentres pertinentes y después hacer un pull request hacia el repositorio original, para someter tus cambios a revisión y posible aprobación.

Flujo de cómo contribuir en un proyecto


Open Source en Platanus

Platanus tiene una cultura de desarrollar proyectos open source, por lo que puedes encontrar herramientas que fueron creadas y que son mantenidas por nosotros. Dentro de este abanico se encuentran Potassium y ActiveAdmin Addons. La primera es una gema generadora de proyectos de Rails con la que creamos/instalamos todo lo que necesitamos para desarrollar en otros proyectos, mientras que la segunda es una mejora a ActiveAdmin, que agrega funcionalidades y te da la opción de mejorar la UI. Aquí Leandro nos explica cómo usar la gema. Puedes probarlas cuando quieras y, por qué no, colaborar!

Para cerrar, el open source es una manera de desarrollar software muy utilizada en las herramientas de programación, que se basa muy fuertemente en la comunidad y en la construcción y apoyo gratuito por parte de algunos devs. Cómo vimos, a pesar de que lo que es de todos no es de nadie, tiene muchos más pros que contras, en especial por la constante revisión a la que está siendo sometido. Espero que ahora tengas mucho más claro en qué consiste un proyecto de código abierto y te dejo la invitación abierta a que nos propongamos colaborar con el software open source.