ClickCease Vida y época de las comunidades de código abierto |tuxcare.com

Únase a nuestro popular boletín

Únase a más de 4.500 profesionales de Linux y el código abierto.

2 veces al mes. Sin spam.

La vida y los tiempos de las comunidades de código abierto

23 de septiembre de 2021 - Equipo de RRPP de TuxCare

El código fuente abierto está en el núcleo de muchas de las soluciones de software críticas de las que dependen grandes empresas, gobiernos e incluso usuarios domésticos. Se podría pensar que ese código de software crítico se construye de forma muy coordinada y con el respaldo de importantes inversiones.

Pero la verdad es mucho más interesante, incluso extraña si se piensa en ello. Gran parte del código de software crítico del que depende el mundo fue ensamblado de forma improvisada por una comunidad de voluntarios que contribuyeron con su tiempo sin cobrar.

Hablamos, por supuesto, de la comunidad del software de código abierto. Es una comunidad compleja con interacciones complejas, incluidas las relaciones, a veces difíciles, con los proveedores comerciales.

En este artículo nos acercamos a esa comunidad. ¿Cómo se desarrolló la comunidad del código abierto y por qué existe? También examinaremos algunos de los retos a los que se enfrenta la comunidad del código abierto: entre ellos, las dificultades para gobernar un abanico diverso de colaboradores.

Contenido

 

Las raíces de la comunidad del código abierto

Empecemos con una definición formal de las comunidades de código abierto. Según Brian Proffitt en TechRadar:

Las comunidades de código abierto son grupos semiorganizados de colaboradores de un proyecto, normalmente de software. Estas comunidades reúnen a personas con intereses comunes para construir algo en colaboración, que puede compartirse con cualquiera dentro o fuera de la comunidad. Y, casi siempre, los proyectos de código abierto son el resultado de comunidades distribuidas.

Es difícil precisar dónde se originó la primera comunidad de código abierto. Aunque el trabajo voluntario para contribuir al software ha existido probablemente desde que comenzó la investigación informática, podemos señalar un par de hilos conductores en la historia del desarrollo de código abierto.

Consulte Richard M. Stallman, por ejemplo. Se cuenta que uno de los primeros casos de colaboración en código abierto surgió de la necesidad de encontrar una forma de avisar a los investigadores cuando una impresora se atascaba y sus impresiones se ponían en cola.

Los investigadores escribieron el código necesario y funcionó, pero tuvieron que volver al punto de partida con los atascos de la impresora cuando se envió una nueva impresora con un código propietario de código cerrado al que no pudieron acceder.

Esto sembró una semilla, y con el tiempo Stallman observó más casos de cómo el software privativo con licencias cerradas impedía el progreso. Decidió lanzar el Proyecto GNU que sigue siendo una piedra angular del software de código abierto gracias, en parte, a la Licencia Pública General de GNU (GPL).

La historia de Stallman es uno de los primeros pasos en el desarrollo del código abierto como movimiento comunitario. Ilustra cómo la necesidad de conocimiento, control y democracia en torno al código fuente inspiró la formación de una comunidad. El objetivo de Stallman era crear un sistema operativo completo, pero fue otro miembro de una creciente comunidad de código abierto quien lo hizo realidad.

Otro momento crucial es el surgimiento de Linux, iniciado por Linus Torvalds en 1991 como proyecto personal. Wikipedia tiene un gran artículo sobre la historia de Linuxpero baste decir que Linus se basó en los esfuerzos de otros miembros de la comunidad -incluso utilizando el compilador C de GNU- para desarrollar el núcleo Linux.

Todos sabemos el éxito que ha tenido el proyecto Linux, ya que los sistemas operativos basados en Linux son ahora la base de cargas de trabajo críticas en todo el mundo. Linux sigue siendo gratuito y cuenta con el apoyo de una comunidad de voluntarios de código abierto, con versiones que contienen millones de líneas de código.

Nuestros dos ejemplos apuntan a dos de las piedras angulares de la comunidad del código abierto. En primer lugar, el software debe ser libre y abierto para que cualquiera pueda contribuir y construir algo más grande.

También señala el poder de una comunidad para lograr algo mayor de lo que sería el caso si lo intentaran individuos - o si se intentara dentro de los confines más limitantes del desarrollo de software comercial.

 

La catedral y el bazar

Las comunidades que se unen para un fin común tienen una larga historia. Una forma de ver este tipo de acuerdos es a través de un concepto llamado comunidades de práctica (CoP), que es esencialmente lo que son muchas comunidades de código abierto.

Las CoP son grupos organizados en los que las personas se reúnen para trabajar por un objetivo similar. Una CoP puede formarse deliberadamente como una acción planificada, o evolucionar de forma natural, a medida que las personas se dan cuenta de que tienen objetivos comunes y deciden cooperar. Estos grupos permiten compartir información y conocimientos, así como la carga de trabajo, para evitar la duplicación de esfuerzos.

Todo es voluntario, pero puede resultar un poco caótico. Intuitivamente, uno pensaría que un enfoque más cuidadosamente planificado del desarrollo de software tendría más éxito, pero, en cambio, hay fuertes indicios de que el enfoque abierto y menos desorganizado del código abierto está dando resultados increíbles.

Eso es lo que insinúa Eric Steven Raymond en su libro La catedral y el bazar. El escritor señalaba dos modelos de escribir software. En primer lugar, el modelo catedral, en el que durante el desarrollo sólo un grupo restringido de personas tiene acceso al código fuente y contribuye al proceso de desarrollo, aunque el código fuente esté disponible después de la publicación. El modelo catedralicio es planificado y controlado, similar a la creación de software en un entorno comercial.

Pero hay un segundo modelo, el bazar. El bazar es un modelo mucho más caótico en el que las versiones se publican con frecuencia y el proceso de desarrollo está abierto a las contribuciones de cualquiera. Básicamente, el desarrollo tiene lugar en Internet a la vista de todo el mundo. El argumento es que, a pesar de este método caótico, su apertura puede significar que el modelo bazar puede producir resultados más rápidamente, siempre que se establezcan controles.

Por ejemplo, Raymond señaló que la revisión de errores es mucho más fácil cuando hay muchos ojos mirando el código, mientras que en el modelo catedral, el proceso de encontrar errores es significativamente más difícil.

 

 

La tragedia de los comunes

En muchos sentidos, el desarrollo de software de código abierto mediante esfuerzos comunitarios es una forma excelente de producir código capaz y de calidad, incluso en proyectos muy grandes. Pero, como siempre en la vida, este enfoque tiene sus pros y sus contras.

Como señalamos en la última sección, el método bazar de producción de código sólo funciona en el lugar de los controles adecuados. ¿Por qué necesitamos estos controles? Bueno, esto nos lleva a nuestra segunda metáfora: la tragedia de los comunes.

Un concepto conocido en economía, la tragedia de los comunes, apunta al hecho de que las personas no siempre actúan en pro del bien colectivo, sino que, al actuar en interés propio, a menudo acaban actuando en contra del bien común de la comunidad. Eso también puede ocurrir en la comunidad del código abierto.

Por un lado, una de las mayores ventajas del software de código abierto es que cualquier persona puede contribuir a él añadiendo, personalizando o modificando el código. Pero esto puede acarrear problemas en los proyectos de código abierto, ya que los individuos impulsan sus agendas individuales sin tener en cuenta el bien común del proyecto de código abierto.

Este interés propio incluye el beneficio económico, pero también puede significar que los proyectos simplemente se vean arrastrados en direcciones que no benefician a la comunidad del código abierto en general. O, simplemente, el proyecto desaparece porque a nivel individual hay poco interés, aunque haya valor a nivel comunitario.

Así pues, aunque la "sabiduría de la multitud" puede aportar enormes beneficios, los miembros individuales de la comunidad de código abierto pueden actuar a veces como escollos.

 

Gobernanza y toma de decisiones en materia de código abierto

Está claro que, para sacar el máximo partido de la buena voluntad que hay detrás de los proyectos de software de código abierto, es necesario contar con un régimen sólido de gobernanza y toma de decisiones que gestione el comportamiento individual en aras de un bien mayor.

Existen diferentes estrategias de liderazgo en la comunidad del código abierto. Algunas podrían ser totalmente democráticas, pero por otro lado, Linus Torvalds ha actuado con mucho éxito como el "dictador benévolo" detrás de Linux.

Cada proyecto de código abierto es diferente y la estructura de gobierno adoptada vendrá determinada tanto por la naturaleza del proyecto como por la forma y el tamaño del grupo que contribuye y, por supuesto, por los objetivos generales del proyecto.

A grandes rasgos, los líderes de una comunidad de código abierto deberían tener en cuenta una estructura de toma de decisiones, un proceso fijo para la incorporación de nuevos mantenedores y la elección de un sistema de compilación que se ajuste a los objetivos del proyecto.

La propiedad intelectual también importa, incluida la licencia de código abierto, ya sea GNU GPL o MIT, por ejemplo. También debe decidirse la titularidad del dominio de Internet, y las marcas registradas deben contabilizarse de forma justa.

Un aspecto importante a tener en cuenta es el estrecho control sobre un proyecto. Como sugiere Eric Raymond con su analogía del bazar, la relativa falta de control es lo que hace que el modelo de código abierto tenga tanto éxito. Sin embargo, sin ningún tipo de control, el desarrollo de código abierto corre el riesgo de sucumbir a la tragedia de los comunes.

 

Empresas comerciales y comunidades de código abierto

Las iniciativas de código abierto pueden lograr cosas increíbles, lo que rápidamente puede llamar la atención de los proveedores comerciales. Las sumas en juego pueden ser enormes: pensemos, por ejemplo, en la compra de Red Hat por parte de IBM, valorada en 34.000 millones de dólares, o en la inversión de Microsoft en GitHub, valorada en 7.500 millones de dólares.

También se puede argumentar que los proyectos de código abierto sólo alcanzarán realmente una masa crítica y penetración empresarial cuando una empresa de software comercial intervenga para proporcionar niveles de soporte de nivel empresarial. Después de todo, los desarrolladores profesionales que trabajan en el entorno empresarial necesitarán la presencia de un soporte de nivel empresarial antes de poder integrar una solución de código abierto en su carga de trabajo.

En cualquier caso, las comunidades de código abierto mantienen relaciones complejas y a veces tensas con los proveedores comerciales, lo cual es comprensible, dado el evidente contraste de las contribuciones realizadas gratuitamente gracias a los miembros de la comunidad frente al afán de lucro de las organizaciones impulsadas comercialmente.

No obstante, hay varios modelos que combinan con éxito las prerrogativas del código abierto con los requisitos comerciales. Puede suponer el patrocinio directo de proyectos, pero las empresas comerciales también pueden apoyar iniciativas de código abierto mediante financiación, donando equipos o donando el tiempo de sus empleados para que trabajen en código abierto, por ejemplo.

Una modesta inversión comercial puede impulsar significativamente los esfuerzos de la comunidad de código abierto. A su vez, las organizaciones consiguen desplegar un código de fuente abierta muy capaz que se ajusta a sus necesidades. Por supuesto, la gobernanza del código abierto es importante en este caso: sin una sólida dirección independiente, los objetivos comerciales pueden anular fácilmente los objetivos del proyecto de código abierto.

 

La importancia del código abierto para la industria informática

La tecnología de la información es una ciencia, y las ciencias se benefician constantemente de la apertura, la experimentación y la colaboración porque estas tres cualidades fomentan la innovación. Por consiguiente, es fácil ver por qué las comunidades de código abierto benefician a la industria de las tecnologías de la información.

Las innovaciones están impulsadas por el desarrollo de código abierto y suelen introducirse en las soluciones de software empresarial. Por ejemplo, el kernel Linux alimenta una gran parte de los servidores de aplicaciones, mientras que OpenSSL soporta las comunicaciones seguras de la mayoría de los servidores web con HTTPS.

Con la gobernanza adecuada, los proyectos de código abierto tienen una capacidad increíble para impulsar la innovación aprovechando la capacidad intelectual colectiva de desarrolladores expertos repartidos por todo el mundo de forma razonablemente coordinada. El apoyo comercial puede engrasar el proceso salvando la brecha motivacional.

El software de código abierto suele ser mejor alternativa que las soluciones comerciales y, en algunos casos, el código abierto es tan bueno que se convierte en la única solución sensata.

Es difícil predecir con exactitud qué habría ocurrido con el ritmo de desarrollo tecnológico si las comunidades de código abierto no hubieran alcanzado el tamaño que tienen ahora, pero no sería injusto sugerir que el modelo de código abierto aceleró el ritmo de desarrollo tecnológico, y seguirá haciéndolo en el futuro.

¿Desea automatizar la aplicación de parches de vulnerabilidad sin reiniciar el núcleo, dejar el sistema fuera de servicio o programar ventanas de mantenimiento?

Más información sobre Live Patching con TuxCare

Conviértete en escritor invitado de TuxCare

Empezar

Correo

Únete a

4,500

Profesionales de Linux y código abierto

Suscríbase a
nuestro boletín