18. Para resolver un problema interesante, comienza por encontrar uno que lo sea para tí.
Fue el caso de Carl Harris y el 'popclient' original, y también el mío con 'fetchmail'. Pero es algo que se sabía de antiguo. La parte importante, aquella que los casos de Linux y 'fetchmail' ponen de manifiesto es la etapa siguiente -- la evolución del software cuando hay una comunidad amplia y activa de usuarios y colaboradores.
En el libro ``The Mythical Man-Month'' (Nota det traductor: Se mantiene el título en inglés de los libros citados a continuación porque se cree que no han sido traducidos y editados en España. Al no disponer de datos que permitan acceder a la versión castellana en caso de que exista, se prefiere conservar el título original para facilitar al menos el acceso a la versión inglesa), Fred Brooks observó que el tiempo que alguien dedica a programar no es un consumible más; añadir más programadores a un proyecto que se desarrolla con retraso lo retrasa aún más. Lo justificó diciendo que la complejidad y los costes de comunicación crecían con el cuadrado del número de personas implicadas, en tanto el trabajo realizado lo hacía linealmente. Este enunciado pasó a ser la "ley de Brook" y suele considerarse un axioma. Pero si la ley de Brooks fuera la verdad absoluta, Linux sería imposible.
Algunos años más tarde el clásico de Gerald Weinberg ``The Psychology Of Computer Programming'' proporcionó lo que puede verse como una corrección fundamental a Brooks. En su discusión sobre "la programación sin ego", Weinberg hizo notar que en aquellos lugares en que los programadores no desarrollan un sentido de la propiedad sobre su propio código, y animan a los demás a buscar errores y posibles mejoras, el desarrollo progresa a una velocidad dramáticamente superior a la habitual.
La terminología empleada por Weinberg ha dificultado quizá que su análisis se acepte a la escala que merecía -- uno no puede sino sonreír cuando se describe a los hackers de Internet como desprovistos de ego. Pero creo que sus argumentos suenan mucho más plausibles hoy que nunca.
La historia de Unix nos debería haber preparado para lo que estamos aprendiendo con Linux (y que yo he comprobado a menor escala al copiar deliberadamente sus métodos). Es decir, que aunque la programación sea una actividad solitaria, los auténticos logros surgen de la puesta en común de la atención y la capacidad intelectual de comunidades enteras. Aquel que dependa tan sólo de su cerebro al desarrollar un sistema va estar siempre en desventaja frente al que sepa cómo crear un ambiente abierto y en evolución en el cual la búsqueda de errores y las mejoras se confíen a cientos de personas.
El mundo Unix tradicional se vió imposibilitado de llevar este enfoque hasta el extremos debido a varias razones. Una fue la limitación impuesta por los diversos tipos de licencia de uso, y los secretos e intereses comerciales. Otra (podemos pensarlo ahora) fue que Internet todavía no estaba lo bastante desarrollada.
Antes de que Internet fuera ampliamente accesible, había algunas comunidades geográficamente compactas en las que el ambiente cultural alentaba esa programación sin ego propuesta por Weinberg, donde un programador podía atraer con facilidad a un montón de colaboradores y virtuosos del bit. Los laboratorios Bell, el laboratorio de inteligencia artificial del MIT, la universidad de Berkeley -- se convirtieron en el hogar de innovaciones que aún son legendarias y potentes.
Linux fue el primer proyecto que se esforzó de manera consciente y exitosa en usar el mundo entero como su depósito intelectual. No creo que sea una mera coincidencia que el periodo de gestación de Linux viera al tiempo el nacimiento de la World Wide Web, y que Linux dejara atrás su infancia en el mismo periodo 1993-1994 en que despegó la industria de los proveedores de acceso a Internet y se produjo la explosión del interés generalizado por Internet. Linus fue la primera persona que aprendió a jugar con las nuevas reglas que la disponibilidad de Internet ponía en juego.
Una Internet accesible era condición necesaria para la evolución de Linux, pero no creo que fuera suficiente. Otro factor vital fue el desarrollo de un estilo de liderazgo y unos hábitos de cooperación que fueran capaces de atraer colaboradores para extraer los máximos frutos del nuevo medio.
Pero, ¿en qué consisten?. No pueden basarse en relaciones de poder -- y aunque así fuera, el liderazgo por coacción no produciría los resultados que vemos. Weinberg cita la autobiografía del anarquista ruso del siglo diecinueve Kropotkin "Memorias de un revolucionario" de manera adecuada a este tema:
``Al crecer en una familia que disponía de siervos, empecé mi vida activa, como todos los hombres de mi tiempo, teniendo una gran confianza en la necesidad de ejercer el mando, administrar el castigo o la coacción y demás. Pero cuando, poco después, hube de hacerme cargo de empresas importantes y tratar con hombres [libres], y cuando cada error tenía consecuencias graves, comencé a apreciar la diferencia entre actuar bajo el principio del mando y la disciplina o el del entendimiento común. El primero funciona admirablemente en un desfile militar, pero carece de valor en la vida real, donde un objetivo sólo puede lograrse a través del esfuerzo concertado de muchas voluntades".
El "esfuerzo concertado de muchas voluntades" era precisamente lo que necesitaba un proyecto como Linux -- y el "principio de mando" resulta imposible de utilizar en el contexto de un grupo de voluntarios en el paraíso anarquista que denominamos Internet. Para trabajar y competir con eficacia, los hackers que quieren desarrollar un proyecto en colaboración deben aprender a reclutar y motivar a la gente en base a intereses comunes al modo vagamente sugerido por Kropotkin con su "principio de comprensión mutua". Deben aprender a usar la ley de Linus.
Anteriormente me referí al "efecto Delphi" como una posible explicación de la ley de Linus. Analogías más potentes con los sistemas adaptativos en biología y economía surgen irresistiblemente por sí solas. El mundo Linux se asemeja en muchos aspectos a un mercado libre o un sistema ecológico, a una colección de agentes autónomos que intentan maximizar la utilidad en un proceso que termina conduciendo a un órden derivado de la autocorrección espontánea mucho más eficiente y elaborado de lo que hubiera podido lograr cualquier cantidad de planificación. Es en estos términos en los que hay que hablar del "principio de comprensión mutua".
La "función de utilidad" que los hackers de Linux están maximizando no es económica en sentido clásico, sino un intangible derivado de su grado de satisfacción personal y de la reputación adquirida ante los demás hackers. (Podríamos hablar de altruismo, pero sería ignorar que éste es en sí mismo una forma a través de la cual el altruista satisface su ego personal). Las culturas que funcionan voluntariamente mediante este esquema no son infrecuentes; otra en la que he participado con asiduidad es el colectivo de los entusiastas de la ciencia ficción, en la cual, al contrario de lo que ocurre en el mundo hacker, se reconoce explicitamente el culto al ego (el aumento de tu reputación dentro del colectivo) como la motivación fundamental que justifica la actividad de tipo voluntario.
Linus, al saber colocarse como administrador de un proyecto en que el desarrollo era principalmente realizado por los demás, y alimentando el interés en él hasta que fué capaz de automantenerse, mostró un notable grado de percepción del "principio de comprensión mutua" de Kropotkin. Esta visión cuasi-económica del mundo Linux nos permite ver el modo en que se aplica este conocimiento.
Podemos ver el método de Linus como una forma de crear un mercado eficaz movido en torno del culto al ego -- una forma de conectar la individualidad de los hackers tan firmemente como fuera posible para llevarla a culimnar objetivos difíciles solo alcanzables mediante una colaboración sostenida. Con el proyecto 'fetchmail' he mostrado (aunque a menor escala) que su método se puede reproducir con buenos resultados. Quizá yo lo he hecho de una forma un poco más consciente y sistemática que él.
Mucha gente (en particular aquellos que por razones políticas no confían en el libre mercado) esperaría que la cultura de un grupo de egoístas autónomos resultara fragmentada, territorial, despilfarradora, secretista y hostil. Pero estas predicciones son inequívocamente contradichas por (sólo por poner un ejemplo) la asombrosa variedad, calidad y profundidad de la documentación de Linux. Nadie en su sano juicio niega que los programadores odian documentar sus obras; ¿como es posible, entonces, que los hackers en Linux produzcan tanta?. Resulta evidente que el libre mercado de culto al ego en Linux funciona mejor en este aspecto que la financiación masiva para la producción comercial de títulos de referencia de los fabricantes de software.
Tanto 'fetchmail' como el núcleo Linux demuestran que recompensando adecuadamente los egos de muchos otros hackers, un desarrollador/coordinador puede usar Internet para capturar los beneficios derivados de tener muchos colaboradores sin que el proyecto colapse en un desorden caótico. Por lo cual propongo lo siguiente, en contra de la ley de Brooks:
19: Si el coordinador de un proyecto tiene a su disposición un medio de comunicación al menos tan potente como Internet, y sabe como conducir a la gente sin coaccionarla, muchas cabezas son inevitablemente mejor que una.
Creo que el futuro del software abierto pertenecerá cada vez más a gente que sepa como jugar al modo de Linus, a gente que deje atrás la catedral y abrace el bazar. Esto no quiere decir que la visión y la brillantez individual ya no importen; al contrario, creo que los proyectos más trascendentales en el mundo del software abierto serán los de aquellos que comiencen a partir de la visión y la brillantez individual y amplifiquen su importancia mediante la construcción eficaz de grupos con intereses comunes.
Y tal vez no sólo el futuro del software abierto. Ningún fabricante comercial de software puede igualar el depósito de inteligencia que la comunidad Linux puede movilizar sobre un problema dado. ¡Muy pocos podrían permitirse siquiera alquilar a las más de doscientas personas que colaboraron en el desarrollo de 'fetchmail'!.
Quizá al final la cultura del software abierto triunfe no porque la colaboración sea moralmente "buena" y la posesión avara del software "mala" (suponiendo que creas esto último, algo que ni yo ni Linus hacemos), sino simplemente porque el mundo comercial no puede ganar una carrera de armamentos frente a comunidades de software abierto capaces de movilizar cantidades de tiempo de personal cualificado algunos órdenes de magnitud superiores a la hora de resolver un problema.