Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las primeras preguntas que la gente suele preguntar acerca de software libre son "¿Cómo funciona?
¿Qué mantiene a que un proyecto en marcha? ¿Quién toma las decisiones?" No satisfacen las
respuestas sobre la meritocracia, el espíritu de cooperación, el código habla por sí mismo, etc. El hecho
es que la pregunta no es fácil de responder. La meritocracia, la cooperación y la ejecución de código son
todos parte de la respuesta, pero no se explica cómo los proyectos realmente se ejecutan basados en el
día a día, y no dicen nada acerca de cómo se resuelven los conflictos.
Este documento trata de mostrar los fundamentos estructurales que los proyectos exitosos tienen en
común. Quiero decir "éxito", no sólo en términos de calidad técnica, sino también la salud operativa y
capacidad de supervivencia. Salud operacional es la capacidad actual del proyecto para incorporar
nuevas contribuciones de código y nuevos desarrolladores, y para responder a los reportes de errores.
La supervivencia es la capacidad del proyecto de existir independientemente de cualquier participante
individual o patrocinador, pensar en ella como la probabilidad de que el proyecto continuaría incluso si
todos sus miembros fundadores pasen a realizar otras cosas. El éxito técnico no es difícil de lograr, pero
sin una base robusta de desarrolladores y base social, un proyecto puede ser incapaz de manejar el
crecimiento que trae el éxito inicial, o la salida de personas carismáticas.
Hay varias maneras de lograr este tipo de éxito. Algunos incluyen una estructura formal de gobierno, por
la que los debates se resuelven, los nuevos desarrolladores están incluidos, las nuevas características
son planeadas, y así sucesivamente. Otros implican menos estructura formal, pero más autocontrol,
para producir una atmósfera de equidad en la que la gente puede confiar como una forma de facto de la
gobernabilidad. Ambos caminos conducen al mismo resultado: un sentido de permanencia institucional,
con el apoyo de los hábitos y procedimientos que son bien comprendidos por todos los que participan.
Estas características son más importantes en sistemas auto-organización que en los controlados
centralmente, ya que en los sistemas de auto-organización, todo el mundo es consciente de que unas
cuantas manzanas podridas pueden echar a perder todo el barril, al menos por un tiempo.
Bifurcabilidad
El ingrediente indispensable que une a los desarrolladores en un proyecto de software libre, y los hace
dispuestos a ceder cuando sea necesario, es la portabilidad del código: la capacidad de cualquier
persona para llevar una copia del código fuente y utilizarlo para iniciar un proyecto de la competencia,
conocido como una bifurcación. Esto hay que evitarlo a toda costa.
Forks, o más bien la posibilidad de bifurcación, son la razón de que no hay verdaderos dictadores en
proyectos de software libre. Esto puede parecer una afirmación sorprendente, teniendo en cuenta que
es muy común escuchar a alguien llamado el "dictador" o "tirano" en un proyecto de código abierto
dado. Pero este tipo de tiranía es especial, muy diferente de la comprensión convencional de la palabra.
Imagina un rey cuyos súbditos pudieran copiar todo su reino, en cualquier momento y pasar a gobernar
la copia del reino como mejor les parezca.
MIGUEL ORQUERA 1
INFRAESTRUCTURA SOCIAL Y POLÍTICA
Es por eso que incluso los proyectos que no están organizados formalmente como democracias son, en
la práctica, democracias cuando se trata de tomar decisiones importantes. Replicabilidad implica
bifurcabilidad; bifurcabilidad implica consenso. Es muy posible que todo el mundo está dispuesto a
someterse a un líder (el ejemplo más famoso es Linus Torvalds en el desarrollo del kernel de Linux), pero
esto es porque eligen hacerlo, de una manera voluntaria y limpia. El dictador no tiene poder mágico
sobre el proyecto. Una propiedad fundamental de todas las licencias de código abierto es que no tiene
una de las partes más poder que cualquier otra en la decisión de cómo el código puede ser cambiado o
usado. Si el dictador tuviera que empezar de repente a tomar malas decisiones, habría inquietud,
seguida finalmente por la revuelta y una bifurcación. Son excepciones, por supuesto, las cosas rara vez
llegan tan lejos, porque el dictador compromete primero.
A continuación se va a analizar dos casos de cómo se organiza la toma de decisiones en los proyectos, en
las que la mayoría de las decisiones van bien. Estos dos ejemplos son extremos un tanto idealizados;
muchos proyectos caen en algún lugar a lo largo de un continuo entre ellos.
Aunque " dictador benévolo " (o BD) es el término estándar para este papel, sería mejor pensar en él
como "árbitro aprobado por la comunidad" o "juez”. En general, los dictadores benevolentes en realidad
no toman todas las decisiones, o incluso la mayoría de las decisiones. Es poco probable que una persona
tenga la suficiente experiencia para tomar siempre buenas decisiones en todas las áreas del proyecto, y
en todo caso, los desarrolladores expertos no se quedarán en el proyecto a menos que tengan alguna
influencia en la dirección del proyecto. Por lo tanto, los dictadores benevolentes comúnmente no
imponen mucho. En su lugar, dejan que las cosas funcionen por sí solas a través del debate y la
experimentación siempre que sea posible. Ellos participan en los debates, pero las decisiones las toman
desarrolladores que tiene más experiencia en el área que se discute. Sólo cuando es claro que no se
alcanzará el consenso, y que la mayoría del grupo quiere que alguien tome la decisión para que el
desarrollo pueda seguir adelante, es cuando el BD decide: "Esta es la forma en que va a ser." La
renuencia a tomar decisiones por decreto es un rasgo compartido por casi todos los dictadores
benevolentes exitosos; es una de las razones por las que mantienen ese rol.
MIGUEL ORQUERA 2
INFRAESTRUCTURA SOCIAL Y POLÍTICA
que el BD debe emitir críticas o decisiones contrarias con cierta sensibilidad por el peso que sus palabras
tienen en el proyecto, tanto técnica como psicológicamente.
El BD no necesita tener habilidades técnicas más agudas que cualquier otra persona en el proyecto. Él
debe estar lo suficientemente capacitado para trabajar en el código por sí mismo, y para entender y
hacer comentarios sobre cualquier cambio que se trate, pero eso es todo. La posición de BD no se
adquiere por tener extraordinarias habilidades en la codificación. Lo que es importante es la experiencia
y el sentido general en el diseño -no necesariamente la capacidad de producir un buen diseño por sí
mismo, sino en la capacidad de reconocer un buen diseño, sea cual sea su origen.
Es común que el dictador benevolente sea uno de los fundadores del proyecto, pero esto es más una
correlación que una causa. El tipo de cualidades que hacen que uno pueda iniciar con éxito un proyecto:
competencia técnica, capacidad para persuadir a otras personas a unirse, etc. son exactamente las
cualidades que cualquier BD necesita. Y, por supuesto, los fundadores comienzan con una especie de
autoridad automática, que a menudo puede ser suficiente para que surja una dictadura benevolente sin
la menor resistencia de los otros involucrados en el proyecto.
El que un proyecto tenga un dictador benevolente o no, depende en gran medida de quién está
disponible para tomar ese rol. Como regla general, si se trata de algo muy obvio para todos quien
debería ser BD, entonces ese es el camino a seguir. Pero si no hay ningún candidato obvio para ser el BD,
entonces el proyecto probablemente debería utilizar un proceso de toma de decisiones descentralizada,
como se describe en la siguiente sección.
MIGUEL ORQUERA 3
INFRAESTRUCTURA SOCIAL Y POLÍTICA
Los detalles de cómo funcionan estos sistemas varían ampliamente, pero hay dos elementos comunes:
uno, el grupo trabaja por consenso la mayor parte del tiempo; dos, hay un mecanismo de votación
formal al cual recurrir cuando no se puede alcanzar el consenso.
Consenso significa simplemente un acuerdo con el que todo el mundo está dispuesto a vivir. No es un
estado ambiguo: un grupo ha llegado a un consenso sobre una cuestión determinada cuando alguien
propone que se haya llegado a un consenso, y nadie contradice la afirmación. La persona que propone el
consenso debe, por supuesto, especificar el asunto sobre el cual se logró el consenso, y qué acciones se
tomarán en base a éste.
La mayoría conversación en un proyecto es sobre temas técnicos, tales como la manera correcta de
corregir un cierto error, si se debe o no agregar una función, cómo documentar las interfaces, etc. La
gobernabilidad basada en el consenso funciona bien porque se combina a la perfección con la discusión
técnica en sí. Al final de la discusión, no hay a menudo un acuerdo unánime sobre qué rumbo tomar.
Alguien envía un mensaje de conclusión, que es a la vez un resumen de lo que se ha decidido y una
propuesta implícita de consenso. Esto proporciona una última oportunidad para que alguien más pueda
decir "Espera, yo no estoy de acuerdo en eso. Tenemos que reconsiderar esto un poco más."
Para las pequeñas decisiones, no controversiales, la propuesta de consenso es implícita. Por ejemplo,
cuando un desarrollador se compromete de forma espontánea a una corrección de errores, el
comprometerse es una propuesta de consenso: "Asumo que todos coincidimos en que este error debe
ser corregido, y que esta es la manera de arreglarlo". Si nadie opina en contrario, se supone que hay
consenso.
Esto también significa que el proceso de establecimiento de consenso no tiene por qué ser muy formal.
La mayoría de los proyectos se guían por el tacto. Los cambios menores pueden entrar sin discusión o
con mínima discusión seguida de unos gestos de acuerdo. Para cambios más significativos,
especialmente los que tienen el potencial de desestabilizar un montón de código, la gente debe esperar
un día o dos antes de asumir que hay consenso, la razón es que nadie debe ser marginado en una
conversación importante simplemente porque él no revisa el correo electrónico con la frecuencia
suficiente.
MIGUEL ORQUERA 4
INFRAESTRUCTURA SOCIAL Y POLÍTICA
Por lo tanto, cuando alguien está seguro de que sabe lo que hay que hacer, sólo debe seguir adelante y
hacerlo. Esto se aplica no sólo a las correcciones de software, sino también para las actualizaciones del
sitio web, cambios en la documentación, y cualquier cosa poco probable que sea controversial. Por lo
general, sólo habrá unos pocos casos en los que una acción tiene que ser deshecha, y éstos se pueden
controlar en una base de caso por caso.
MIGUEL ORQUERA 5