Árbol en la montaña: El ayer y hoy del software de código abierto
Cuanto más quiere elevarse hacia lo alto y luminoso, con más fuerza sus raíces se esfuerzan hacia abajo, hacia la tierra, hacia la oscuridad, hacia la profundidad — hacia el mal.
Prólogo - El software de código abierto (¿?) frágil
Recientemente, Henrik Lissner, el autor de doom-emacs, después de desaparecer durante casi medio año, habló en el canal de Discord de doom-emacs:

La idea general es:
¡Hola a todos! He estado alejado de este proyecto y comunidad durante aproximadamente un mes, ocupado con problemas familiares. Si contamos los problemas de salud, internet y mudanza que tuve el año pasado, ha sido aún más tiempo. Peor aún, no os informé (o advertí) oportunamente sobre estas cosas, y quiero disculparme por ello. Sumado a varios intentos fallidos en los últimos meses, he comenzado a hacer que la gente se preocupe por el futuro de Doom y su factor bus.
Para ser claro: no tengo intención de abandonar Doom — estos han sido simplemente dos años desafortunados y distraídos — espero que ya hayan pasado.
Después de pasar una semana poniéndome al día, fusionando PRs y actualizando módulos, publicaré un anuncio más grande en Discourse detallando la situación actual, la dirección del proyecto y cómo abordaré en el futuro el factor bus y los problemas de comunicación.
Mientras tanto, podéis encontrarme en el canal #development; si tenéis alguna pregunta sobre el proyecto, o me habéis enviado recientemente un mensaje privado/correo (y esperáis una respuesta), o si hay algún PR listo para fusionar o que necesite mi atención, no dudéis en contactarme allí.
Dejando de lado por un momento qué es doom-emacs, Henrik mencionó una palabra muy interesante: Bus Factor (Factor Bus).
La explicación de Wikipedia para este término es:
El Bus Factor (Factor Bus) es una métrica en el desarrollo de software que mide la concentración de información y capacidades entre los miembros de un proyecto de software que no se comparten. Algunos también lo llaman “factor camión” o “factor furgoneta”. El número de estos miembros es el Bus Factor cuando la pérdida de la participación de ciertos miembros clave (“ser atropellado por un bus”, refiriéndose a cambios profesionales y de estilo de vida, matrimonio/paternidad, accidentes/muertes, o cualquier razón que cause ausencia) lleva al proyecto al caos, parálisis e incapacidad de continuar.
La interpretación de “miembro clave” es “indispensable para el proyecto”, es decir, la información del proyecto que posee (por ejemplo, diseño, código fuente, conocimiento) no es conocida o compartida por muchos otros miembros. En un proyecto con un Bus Factor alto, incluso si alguien deja de participar repentinamente, habrá muchas otras personas que posean la información relevante del proyecto como para reemplazarlo.
Y un Bus Factor bajo es en realidad un mal común en muchos proyectos de software de código abierto. Si frecuentas Github, probablemente habrás notado que muchos proyectos con un alto número de estrellas han sido abandonados por falta de mantenimiento.
El ejemplo más extremo ocurrió a principios de 2022 cuando Marak, el autor de la conocida herramienta de código abierto Faker.js, dañó intencionalmente este repositorio en GitHub, borrando todo el código del proyecto y dejando la palabra “endgame” en el commit. Ese día, ingenieros frontend de todo el mundo se encontraron perplejos al descubrir que sus proyectos no funcionaban correctamente y mostraban un montón de caracteres basura.
Código basura de Endgame
Además, otra biblioteca que desarrolló, colors.js, también se vio afectada. Ambas bibliotecas de software de código abierto son fundamentales en la ingeniería frontend, donde colorjs, solo en npm, tiene más de 20 millones de descargas semanales (puedes entenderlo como que básicamente cualquiera que haga frontend lo usa).
El compañero Marak enfrentó en 2020 la difícil situación de que su apartamento se incendiara, dejándolo sin hogar. Los patrocinios que recibía de sus proyectos de código abierto no eran suficientes para cubrir sus gastos diarios. Su vida se volvió cada vez más difícil. Hasta que a principios de 2022 tomó esta lamentable y desesperada decisión.
Ampliando un poco, hay demasiadas opiniones diferentes sobre este evento: - Algunos creen que si no quieres que las grandes empresas usen tu trabajo gratis, deberías usar licencias copyleft contagiosas como GPL o incluso AGPL en lugar de la licencia MIT. La licencia MIT otorga desde el principio a todos el derecho de usar tu código libremente. Aunque si se usara GPL, es otra cuestión si el proyecto tendría la misma influencia hoy (las empresas comerciales generalmente revisan las dependencias de código abierto de sus productos antes del lanzamiento para asegurarse de que no haya dependencias con licencia GPL, de lo contrario tendrían que abrir todo su código). - Otros creen que el proyecto, habiendo llegado hasta hoy, con innumerables contribuidores de código abierto aportando código, es ya una creación conjunta de toda la comunidad de código abierto, y no tienes derecho a convertir el esfuerzo de todos en mierda. - También hay voces que apoyan a Marak, por ejemplo, algunos dicen: ¡Estos parásitos han estado chupando nuestra sangre durante demasiado tiempo, al menos les hiciste sentir el dolor! - Otros también abordan el tema desde la perspectiva de la licencia: aunque ciertamente todos contribuyeron código, en términos estrictos de la licencia, este era el proyecto personal de Marak. La licencia MIT, al otorgar todos los derechos, también exime al autor de cualquier obligación adicional, por lo que Marak tenía todo el derecho legal para hacerlo.
Estado actual de la cadena de suministro de infraestructura en la nube xkcd-2347
Hay muchos otros casos similares y lamentables. Por ejemplo, el protagonista del incidente de Faker.js, Marak, mencionó a Aaron Hillel Swartz, un programador genio que participó en el desarrollo inicial de RSS, cofundó Reddit, abogó por el conocimiento abierto y se opuso activamente a las leyes de piratería en Internet. Para ello, puso en práctica sus ideas: a través de una cuenta de visitante proporcionada por una institución, descargó sistemáticamente a gran escala revistas académicas de JSTOR y las hizo accesibles al público. El fiscal federal de EE. UU. luego lo acusó de dos cargos de fraude informático y once violaciones de la Ley de Fraude y Abuso Informático. Rechazó un acuerdo de culpabilidad propuesto por el fiscal que implicaba seis meses de prisión federal. Dos días después, fue encontrado muerto en su apartamento en Brooklyn, Nueva York, habiéndose suicidado por ahorcamiento.
Aaron Hillel Swartz
Mirando hacia atrás en la historia, el espíritu y el software de código abierto son quizás una de las cosas más increíbles de esta época:
Por un lado, el movimiento del software de código abierto y el software libre son en sí mismos increíbles. Un grupo de intelectuales desmantela activamente sus propias barreras profesionales, a menudo actuando en contra de la lógica comercial, practicando el concepto utópico de “todos para uno y uno para todos”. ¿Para qué? Porque el mundo debería ser así, por la prosperidad de toda la sociedad, porque es genial hacerlo, y también porque escribir software en sí mismo brinda a sus autores un placer infinito. Cuando me gradué, también pensé: ¡Guau, puedo escribir código y me pagan, mi vida es demasiado buena!
Por otro lado, en términos de hechos, sin exagerar, el software de código abierto sostiene toda la industria del software actual. La industria del software ha sido completamente transformada por el código abierto, hasta el punto de que el famoso curso introductorio 6.001 del MIT, el famoso SICP (Structure and Interpretation of Computer Program), ya ha sido cancelado. El profesor GJS dijo: “La ingeniería de software moderna se ha vuelto tan compleja que se parece más a una ciencia que a una ingeniería, porque nadie necesita construir grandes sistemas desde cero — y pocos tienen la capacidad para hacerlo”.
Podrías exclamar: ¡Las cosas han llegado a este punto, un grupo de idealistas tiene tales experiencias, es realmente la desilusión del ideal!
¿Pero es realmente así?
La dinámica del software de código abierto
Aunque el idealismo es bueno, el ideal debe estar arraigado en la realidad para echar raíces y crecer. Invitemos a la teoría sociológica de “campo-capital-habitus” de Bourdieu para explicar todo esto mejor.
[(Habitus) (Capital)] + Campo = Práctica social
En pocas palabras, considera un espacio social (campo) creado y construido por personas en torno a un tema específico como un juego, y cada uno de nosotros somos jugadores.
Como jugadores, aunque a nivel empírico a menudo sentimos que somos actores libres, las diversas decisiones que tomamos cada día a menudo se basan en comportamientos previsibles, prescritos y en las actitudes de los demás, es decir, en una estrategia habitual formada en la interacción con el juego mismo — un hábito (habitus).
Bajo la influencia de este hábito, según nuestra posición actual (capital), jugamos y luchamos de acuerdo con las reglas del juego y las estrategias que adoptamos, para ocupar una posición más ventajosa en este juego;
Todo este organismo orgánico subjetivo-objetivo constituye (según mi resumen extremadamente simplificado y no profesional) la visión del mundo científico social de Bourdieu.
Volviendo del símil del juego al mundo real, de manera similar, nadie puede actuar sin buscar algún beneficio, y el objetivo de esta acción probablemente sea aumentar el capital que posee.
Oliveira ganando el IEM 2023, desde entonces todo el mundo conoce al Hermano Li
Podrías pensar, si es así, ¿cómo se explican entonces los comportamientos altruistas que vemos en la producción, práctica y vida cotidiana, el espíritu de dedicación en campos como el arte y la ciencia, y el espíritu de código abierto del que habla este artículo?
Según la definición de Bourdieu, el capital no es solo capital económico, sino que también debería incluir capital simbólico que abarca capital cultural, capital científico, etc. Al darse cuenta de que existen diferentes formas de capital, Bourdieu no cree que exista ningún comportamiento desinteresado en la práctica productiva y vital de la sociedad. Desde una perspectiva similar a la teoría de juegos, considera que todos los comportamientos humanos se basan en el cálculo de algún beneficio, para apoderarse de alguna forma de capital — si no es el capital económico en el sentido general que pensamos.
En diferentes campos, diferentes formas de capital juegan un papel dominante. En pocas palabras, en el mundo académico, es el capital científico; en los campos del arte y la cultura, naturalmente es el capital cultural. Y entre los diferentes capitales en diferentes campos existe cierta tasa de cambio, por lo que a menudo vemos a algunas élites políticas o culturales usar su influencia para obtener capital económico, y viceversa.
Aquí quiero hacer un paréntesis. La progresividad de la teoría de Bourdieu, en mi opinión, radica en que todos los campos son creados por humanos, no emergen de la sociedad humana. Explica por qué muchos fenómenos son así, y al mismo tiempo sugiere que algunas ideas y fenómenos sociales aparentemente arraigados no son necesariamente así, es decir, aquí no existe una “ley natural” puramente normativa. De esta manera, existe la posibilidad de derrocamiento y progreso; la historia no ha terminado.
Así que tú crees que la historia ha terminado, ¿verdad? Ahora te digo que el fin de la historia ha terminado.
Volviendo al tema, bajo este marco teórico, el espíritu de código abierto puede explicarse como: en el campo del software de código abierto, los hackers (por favor, nota: Hackers, personas a las que les gusta desafiar problemas a través de métodos inteligentes y creativos, definitivamente no Crackers, delincuentes informáticos. Internet en chino a menudo confunde estos dos términos, estigmatizando la palabra hacker) contribuyen con código abierto al mundo para acumular capital cultural como “reputación”.
Esto en realidad es una continuación de la cultura del regalo que a menudo aparecía en los pequeños grupos de cazadores-recolectores en los que vivían nuestros antepasados antes de la aparición de la sociedad agrícola. Bajo la abundante generosidad de la naturaleza, las relaciones sociales estaban sostenidas por esta cultura del regalo, y los jefes de las tribus a menudo realizaban actos caritativos públicamente. Como dice el famoso ensayo sobre la cultura hacker “La catedral y el bazar”: en el campo del software de código abierto, no hay “bienes de primera necesidad” muy escasos; el software temprano se compartía libremente, y esta abundancia material llevó a que el único criterio de éxito fuera la reputación entre pares.
Pero la cultura hacker y el software no se detuvieron en un pequeño círculo de abundancia. A diferencia de la predicción del profesor von Neumann de que “el mundo probablemente solo necesitaría unas 5 computadoras”, hoy en día, el software realmente se está comiendo el mundo. Esto es bueno, indica que el software juega un papel enorme e insustituible en la práctica productiva y vital humana. Por otro lado, bajo la influencia del capitalismo, la penetración de la industria del software en otras industrias inevitablemente conducirá a la superposición y fusión de campos, haciendo que esta industria deba, en cierta medida, someterse a la lógica del mundo capitalista. Cuando la tecnología informática y la industria del software pasaron de la cultura de un pequeño círculo de hackers de clase media estadounidense sin preocupaciones a todo el mundo, convirtiéndose en una parte indispensable de la práctica productiva y vital humana, el núcleo original del espíritu de código abierto inevitablemente enfrentaría desafíos.
Por lo tanto, el software de código abierto necesariamente debe pasar de la utopía pastoral inicial, que pertenecía solo a una pequeña élite técnica, a las masas, y comenzar a abrazar el capitalismo y la lógica comercial que sostienen a los 7 mil millones de personas en este mundo.
Innumerables historias han demostrado que el cambio de un tipo de relaciones de producción a otro inevitablemente va acompañado de dolores de crecimiento, pero como materialistas históricos, no creemos que pasar de la democracia ateniense de las ciudades-estado griegas al capitalismo sea un retroceso histórico. Por el contrario, es un gran progreso.
El estado actual del software de código abierto y sus modelos comerciales típicos
Desde que Microsoft, con su infame estrategia “Abrazar, Extender, Extinguir”, estranguló al entonces famoso software Netscape y ganó la guerra de los navegadores, y Netscape renació como Mozilla Firefox (el Firefox de hoy), trayendo consigo el inicio del movimiento de código abierto, hasta que la empresa de código abierto RedHat salió a bolsa con éxito en 1999, y hasta el actual “Microsoft Love Linux” (TODO: imagen), las empresas emergentes impulsadas por software de código abierto han proliferado. Creo que se puede decir que al menos hasta hoy, incluso habiendo abrazado la lógica comercial capitalista que “despreciaba”, el movimiento de código abierto está muy lejos de la palabra fracaso.
CNCF landscape, que enumera todo el ecosistema de proyectos de software en el ámbito nativo de la nube.
Sin embargo, el software de código abierto ciertamente se ha dividido en dos formas diferentes:
La primera es la original, utópica, de primera generación, donde los hackers, partiendo de sus propias necesidades, escriben software y lo abren para que otros hackers colaboren en su construcción. Software emblemático como Vim, Emacs, Python, Linux, PostgresQL, que ha resistido la prueba del tiempo y se ha convertido en un símbolo del software de código abierto, es venerado y elogiado.
Conocí Emacs porque pensé que Notion era demasiado bueno, tan bueno que comencé a examinar mis herramientas de documentación, lo que generó una pregunta: ¿Realmente quiero confiar estos datos de notas que podrían acompañarme toda la vida a esta empresa comercial que, aunque es extremadamente popular, probablemente no vivirá tanto como yo? Luego, deliberadamente investigué y comencé a usar Org-mode de Emacs para escribir notas y gestionar tareas, y descubrí que, para mí, Org-mode es mucho mejor que Notion. Pero esta necesidad es relativamente pequeña en comparación. La demanda humana de software es más bien resolver problemas actuales de manera más rápida, mejor y más barata, lo que dio lugar al segundo tipo de software de código abierto.
El segundo tipo es el recién nacido, impulsado por la lógica comercial, que además de practicar el concepto utópico de “todos para uno y uno para todos”, considera el código abierto como una consideración estratégica y una estrategia de mercado (y las empresas comerciales detrás de él). Ejemplos de hoy en día son MongoDB, ElasticSearch, Akka, RedHat, Ubuntu, GitLab, la pila de HashiCorp, etc., innumerables ejemplos. Hoy en día, también se han formado varios modelos comerciales viables y probados en torno al software de código abierto. Los emprendedores actuales ni siquiera necesitan convencer a los VC familiarizados con el código abierto de por qué un emprendimiento de código abierto puede tener éxito. Por ejemplo:
Crear distribuciones o soluciones en torno al software central de código abierto upstream, vendiendo licencias o servicios de suscripción de software a cambio de facilidades a nivel de operaciones o garantías de disponibilidad del software. Ejemplos de esto son Ubuntu y RedHat para Linux, los servicios de contenedores Kubernetes de varios proveedores de nube pública, los servicios de base de datos de varios proveedores de nube pública (lo que llevó a MongoDB a modificar su licencia de código abierto para prohibir la competencia comercial después de ser usado gratuitamente).
Funcionalidades básicas gratuitas y de código abierto, características comerciales avanzadas para equipos, cerradas y de pago. Ejemplos de esto son GitLab, InfluxDB, Grafana, Envd/Modelz, la pila de HashiCorp.
Ofrecer servicios de consultoría en torno a software de código abierto complejo y grande como Linux, Kubernetes, PostgresQL, Prometheus.
La razón por la que los modelos comerciales de código abierto pueden funcionar es que el código fuente del software no equivale a todo el conocimiento en torno a ese software: incluyendo la filosofía de diseño del software, la historia de la evolución de su arquitectura, y lo más importante, el conocimiento operativo para un funcionamiento estable. Este conocimiento, crucial para las aplicaciones de nivel superior que necesitan ejecutarse de manera estable, a menudo solo lo poseen los desarrolladores centrales, lo que constituye la lógica básica de la comercialización.
Por ejemplo, es poco realista que una empresa cuya actividad principal no son los diversos servicios de nube pública, porque necesita usar servidores en la nube, bases de datos, servicios de contenedores y otras tecnologías, construya su propio centro de datos desde cero y cree su propia infraestructura en la nube en lugar de usar servicios de nube pública como AWS o Alibaba Cloud.
Podrías preguntar, dado que el negocio es diferente y el código fuente no importa, ¿realmente importa si el software es de código abierto?
En estos campos, si una empresa comercial quiere vender su propio software propietario, por ejemplo, un sistema operativo compatible con la interfaz POSIX, inevitablemente enfrentará este cuestionamiento: ¿En qué es mejor tu software en comparación con Linux, que ha sido probado durante 30 años? Encontramos que hoy en día, prácticamente ninguna empresa intenta competir con Linux; por el contrario, todos solo hacen partes diferenciadas.
Me siento muy emocionado por este cambio en el software de código abierto e incluso en la industria del software. ¿Por qué digo esto?
Epílogo - Visión histórica del pueblo vs. visión histórica de los héroes
Henrik, mencionado al principio del artículo, es sin duda el heredero de esa era utópica de estrellas brillantes en la actualidad, un héroe en el sentido absoluto. Fue el doomemacs escrito por Henrik lo que me dio un lugar en el mundo de Emacs como usuario de Vim, e incluso me brindó una experiencia de escritura de documentos mucho mejor que Notion; fue Henrik quien me llevó a descubrir el maravilloso NixOS, permitiéndome despedirme para siempre de la interminable configuración del sistema y los dolorosos retrocesos.
Aunque, en respuesta a la pequeña tormenta del Bus Factor, Henrik dijo que definitivamente no abandonaría Doomemacs y prometió dar explicaciones a la comunidad. Pero tarde o temprano, los héroes envejecen. Cuando llegue ese momento, ¿qué haremos nosotros, que seguimos los pasos del héroe?
La red es vasta e infinita. Me encanta el final donde Motoko desaparece en la red. El público no necesita a Motoko como ídolo, y Motoko no necesita restringirse a sí misma con su propio ego.
En el campo de la documentación, de la próspera comunidad de emacs / org-mode, surgieron herramientas de documentación útiles y empresas emergentes como LogSeq (ronda inicial de 4.1M$), y bajo la sombra de Notion, también nació el equipo estrella de código abierto AFFiNE (financiación de decenas de millones de dólares en la ronda Pre-A).
Cosas similares ocurren constantemente hoy en día en varios campos de la industria del software, y todo esto se basa en la sólida infraestructura que generaciones de software de código abierto e idealistas anteriores han sentado para el mundo actual. Los gigantes de esta industria ya casi no pueden monopolizar fácilmente toda una industria como hace veinte años. Creo que la mejora continua de la infraestructura romperá en el futuro el falso oráculo de la división social del trabajo refinada, permitiendo que cada persona use libremente estas herramientas para hacer algo interesante.
Aunque los héroes envejecen, a diferencia de algunas otras tragedias en la historia, el pueblo en el campo del software de código abierto no ha traicionado a los héroes. Por el contrario, han seguido el camino abierto por los héroes y realmente han cambiado y transformado el mundo. Hoy en día, el antiguo “enemigo” del software de código abierto, Microsoft, se ha convertido en un practicante del software de código abierto y del movimiento de código abierto.
El paso del software de código abierto de la torre de marfil universitaria al abrazo del capital es una necesidad histórica. El ideal del espíritu de código abierto no se ha desvanecido con este cambio. Por el contrario, ha dado lugar a un mundo nuevo donde la gente no deposita todas sus esperanzas en los héroes. Espero que nuestros ideales, como el software de código abierto, puedan echar raíces y crecer en tierra firme, acompañados por el lodo del mundo, absorbiendo nutrientes de él, creciendo vigorosamente y convirtiéndose en un árbol gigante.