Prefacio
¿Por qué escribir este libro?
Ahora cuando estoy en una fiesta, la gente no se queda con la mirada en blanco cuando les digo
que escribo software libre. "Oh sí, código abierto ¿cómo Linux?" me dicen mientras
asiento con aprobación. "¡Sí, exactamente! Eso es lo que hago." Es agradable no
sentirse completamente aislado. Antes, la siguiente pregunta era predecible:
"¿Cómo ganas dinero haciendo eso?" Para responder, resumiría así la economía del código
abierto: existen organizaciones interesadas en que cierta clase de software exista,
pero que no necesitan vender copias, sólo quieren asegurarse de que esté disponible y mantenido,
como una herramienta en lugar de como un servicio.
La siguiente pregunta no siempre ha tenido que ver con el
dinero, sin embargo. El Business Case del software Open Source
Los términos "software de código abierto"
y "software libre" son sinónimos esenciales en éste contexto; son discutidos en mayor profundidad en
el , en
. ya no es tan misterioso,
e incluso no-programadores ya entienden—o al menos no se sorprenden—que
haya gente empleada en ello a tiempo completo. En su lugar, la siguiente pregunta que voy escuchando
cada vez más es "¿Cómo funciona todo esto?"
No tenía una respuesta satisfactoria lista y cuan más duro
intentaba pensar en una, más me daba cuenta de cuan complejo realmente es el tema.
Llevar un proyecto de software libre no es exactamente como dirigir un negocio
(imaginemos tener que negociar constantemente la naturaleza de nuestro producto
con un grupo de voluntarios, muchos de los cuales ¡ni siquiera conocemos!). Tampoco es,
por varias razones, como llevar una organización sin ánimo de lucro tradicional o un gobierno.
Es similar a todas ellas, pero poco a poco he llegado a la conclusión de que el
software libre es sui generis. Existen muchas cosas con
las que puede ser comparado por su utilidad, pero con ninguna puede ser igualado. En realidad,
asumir que el software libre puede ser dirigido es iluso.
Un proyecto de software libre puede ser iniciado y puede ser influenciado,
fuertemente, por algunas partes interesadas. Pero sus activos no pueden ser hechos propiedad
de un sólo dueño, así que mientras haya gente en alguna parte—cualquier parte—
interesada en continuar con el proyecto, no puede ser cancelado unilateralmente. Todos tienen
poder infinito; nadie tiene poder. Una dinámica muy interesante.
Es por esto que quería escribir este libro en primer lugar, y siete años despues he querido actualizarlo. Los proyectos de software libre
han permitido a una nueva cultura evolucionar, un ethos
en el cual la libertad de hacer
que el software haga cualquier cosa que deseamos sea el eje central, sin embargo,
el resultado de esta libertad no es la dispersión de los individuos, cada uno trabajando
por su cuenta en el código, sino la colaboración entusiasta. De hecho, ser un cooperador
competente es en sí, una de las cualidades más valoradas en el software libre. Dirigir
uno de estos proyectos es abordar un tipo de cooperación hipertrofiada, donde la habilidad no es sólo trabajar con otros sino ingeniar nuevas maneras de trabajar en conjunto que pueden producir beneficios tangibles para el desarrollo. Este libro intenta describir
las técnicas con las que esto se puede lograr. No es de ninguna manera completo, pero
al menos es un inicio.
El buen software libre es ya en sí mismo un objetivo y espero que aquellos
lectores que vengan buscando como lograrlo estén satisfechos con lo que van
a encontrar aquí. Pero más allá de esto, espero transmitir algo del doloroso placer
de trabajar con un equipo motivado de desarrolladores de código abierto y de la
interacción con los usuarios en la maravillosa manera directa que el Open Source anima.
Participar en un proyecto de software libre exitoso es un profundo placer,
y en última instancia es esto lo que mantiene a todo el sistema funcionando.
¿Quién debería leer este libro?
Este libro está enfocado a desarrolladores y directores que estén considerando
iniciar un proyecto de software libre o que ya hayan iniciado uno y estén planeando ¿qué hacer ahora?
También debería ser útil para aquellas personas que quieren participar en un proyecto Open Source
y que nunca lo han hecho.
El lector no necesita ser un programador, pero debe conocer conceptos básicos
de ingeniería informática como APIs, código fuente, compiladores y parches.
Experiencia anterior con software Open Source como usuario o desarrollador no es necesaria.
Quienes hayan trabajado en proyectos de software libre con anterioridad, probablemente encuentren
algunas partes del libro algo obvias y quizás deseen saltar esas secciones.
Dado que, potencialmente, existe una amplia audiencia experimientada, he hecho
un esfuerzo para etiquetar claramente cada sección y decir cuando algo
puede ser omitido por quienes ya están familiarizados en la materia.
Fuentes
Mucha de la materia prima para la primera edición de este libro viene de trabajar
durante cinco años con el proyecto Subversion (subversion.tigris.org).
Subversion es un sistema de código abierto para el control de versiones, escrito
desde cero con la intención de reemplazar a CVS como el sistema de control de versiones
de facto utilizado por la comunidad Open Source. El
proyecto fue iniciado por la empresa en la que trabajo, CollabNet
(collab.net), a principios del año 2000 y gracias
a Dios, CollabNet entendió desde el inicio a llevarlo como un esfuerzo colaborativo y
distribuido. Desde el principio tuvimos muchos desarrolladores voluntarios; hoy somos unos
50 en el proyecto, de los cuales sólo unos pocos son empleados de CollabNet.
Subversion es, de muchas maneras, un clásico ejemplo de un proyecto Open Source y terminé
aproximándome más de lo que originalmente esperaba. Parte de esto fue una cuestión de conveniencia: cada vez que necesitaba un ejemplo de un fenómeno en particular, usualmente podía recordar alguno sobre Subversion. Pero también fue una cuestión de verificación.
Aunque estoy inmerso en otros proyecto de software libre a diversos niveles, y que converso con amigos y conocidos involucrados en muchos otros, rápidamente me he dado cuenta que al escribir para la imprenta, todas las afirmaciones deben ser verificadas con hechos. No deseaba hacer declaraciones acerca de situaciones presentes en otros proyectos basándome sólo en lo que podía leer en las listas de correo. Si alguien intentase algo así con Subversion sé que sólo estaría en lo correcto la mitad de las veces y equivocado la otra mitad. Así que al buscar inspiración o ejemplos en proyectos con los que no tenía experiencia directa, intentaba primero hablar con algún informante, alguien en quien confiara para explicarme qué estaba sucediendo realmente
Subversion ha sido mi trabajo durante los últimos cinco años pero he estado involucrado en el software libre durante otros doce. Otros proyectos que han influenciado este libro son:
El proyecto GNU Emacs de la Free Software
Foundation, un editor de texto del cual mantengo algunos
paquetes pequeños
Sistema de versiones concurrentes, del inglés
Concurrent Version System (CVS) en el que trabajé intensamente
en 1994‐1995 con Jim Blandy y participé intermitentemente
durante algunos años después.
La colección de proyectos Open Source conocidos como
la Fundación de Software Apache, especialmente en el Apache
Portable Runtime (APR) y en el servidor Apache HTTP.
El proyecto Launchpad.net en Canonical, Ltd.
Code for América y O'Reilly Media, que me dio una
visión interna del desarrollo de tecnología cívica de
fuente abierta iniciando en 2010, y me mantuvo un poco
en el circuito después de que me convertí en un consultor
a tiempo completo en 2012.
Las muchas herramientas de código abierto
anti-vigilancia y evasión de censura soportados por el
Proyecto de Herramientas Abiertas de Internet.
Checkbook NYC, el software de transparencia
financiera municipal publicado por la Oficina de Contraloría
de la ciudad de Nueva York.
El Proyecto de los Arcos, una aplicación web de
código abierto para la gestión de las excavaciones
arqueológicas, creado por el Instituto de Conservación
Getty y el Fondo Mundial de Monumentos.
OpenOffice.org / LibreOffice.org, las bases de
datos Berkeley de Sleepycat, y MySQL; No he estado envuelto
personalmente en estos proyectos, pero los he observado y, en
algunos casos, hablado con personas que participan en ellos.
GNU Debugger (GDB) (igual que los anteriores).
Proyecto Debian (igual que los anteriores).
Esta no es la lista completa, por supuesto. Como muchos de los programadores de Open Source, yo también mantengo varios frentes abiertos en diferentes proyectos de mi interés, sólo para tener una visión de su estado general. No los voy a nombrar a todos aquí, pero seran mencionados a lo largo del libro cuando sea apropiado.
Reconocimientos
Este libro me tomó cuatro veces el tiempo que esperaba para escribirlo, y durante mucho tiempo
sentía como si un piano estuviese suspendido sobre mi cabeza a cada lugar al que iba. Sin la ayuda
de mucha gente, no habría podido completarlo y seguir cuerdo.
Andy Oram, mi editor en O'Reilly fue el sueño de todo escritor. Aparte de conocer el tema íntimamente (al sugerir muchos de ellos), tiene el raro don de saber lo que se intenta decir y ayudar a encontrar la manera correcta de decirlo. Ha sido un honor trabajar con él. Gracias tambien a Chuck Toporek por pasarle esta propuesta a Andy Right desde el principio.
Brian Fritzpatrick revisó casi todo el material mientras lo escribía, lo que no sólo hizo el libro mejor, sino que me mantuvo escribiendo cuando quería estar en cualquier lugar menos frente a un ordenador. Ben Collins-Sussman y Hike Pilato también revisaban de vez en cuando el progreso y siempre se contentaban con discutir, algunas veces en profundidad, cualquier tema que intentaba cubrir esa semana. También se daban cuenta cuando reducía la marcha y gentilmente me regañaban cuando era necesario. Gracias tios.
Biela Coleman estaba escribiendo su tesis al mismo tiempo que yo escribía este libro. Ella sabe lo que significa sentarse cada día a escribir, dándome un ejemplo de inspiración así como un oído amigo. También tiene una fascinante vista antropológica del movimiento del Software Libre, dándome ideas y referencias que podría utilizar en el libro. Alex Golub—otro antropólogo con un pie en el mundo del software libre—fue un apoyo excepcional que me ayudó inmensamente.
Micah Anderson de alguna manera nunca pareció oprimido por su propio trabajo de escritor, el cual me inspiraba de una forma enfermiza y envidiable, pero siempre estuvo listo con su amistad, conversación y (al menos en una ocasión) soporte técnico. ¡Gracias Micah!
Jon Trowbridge y Sander Striker también me dieron ánimo y ayuda concreta, su amplia experiencia en Software Libre me proveyeron de material que no hubiese podido obtener por ninguna otra vía.
Debo agradecer, también, a Greg Stein no sólo por su amistad y disposición, sino por mostrar en el proyecto subversion cuan importante es la revisión del código en la construcción de una comunidad de programadores. Gracias también a Brian Behlendorf, quien tácticamente sembró en nuestras cabezas la importancia de las discusiones públicas; Es mi esperanza que este principio se refleje a lo largo de este libro.
Gracias a Benjamin "Mako" Hill y Seth Schoen, por varias
conversaciones sobre el software libre y su política; a Zack Urlocker
y Louis Suarez-Potts por tomar tiempo de sus apretadas agendas para
ser entrevistados; a Shane en la lista Slashcode por permitir que su
artículo pudiera ser citado; y para Haggen So por su gran ayuda en la
comparación de hostings enlatados.
Gracias a Alla Dekhtyar, Polina, y Sonya por su aliento
incansable y paciente. Estoy muy contento de que ya no voy a tener que
terminar (o más bien, tratar, sin éxito hasta el final) nuestras
noches temprano para volver a casa y trabajar en "El Libro".
Gracias a Jack Repenning por la amistad, la conversación, y una
obstinada negativa a no aceptar jamás un análisis fácil malo cuando uno
más difícil y correcto está disponible. Espero que algo de su larga
experiencia tanto en el desarrollo de software como en la industria del
software haya contagiado a este libro.
CollabNet fue excepcionalmente generosa al permitirme un horario
flexible para escribir, y no se quejó cuando llevó mucho más tiempo de
lo previsto. No sé todas las complejidades de cómo llega la gestión a
este tipo de decisiones, pero sospecho que Sandhya Klute, y más tarde
Mahesh Murthy, tuvieron algo que ver con ello—mi agradecimiento
a las dos.
Todo el equipo de desarrollo de Subversion ha sido una
inspiración por los últimos cinco años, y gran parte de lo que hay en
este libro lo he aprendido al trabajar con ellos. No doy las
gracias a todos ellos por su nombre aquí, porque son demasiados, pero
yo imploro que cualquier lector que se encuentre con un committer de
Subversion que le compre inmediatamente a ese committer la bebida de su
elección—Yo sin duda planeo hacerlo.
Muchas veces despotricaba a Rachel Scollon sobre el estado de
la obra; ella siempre estaba dispuesta a escuchar, y de alguna manera
se las arregló para hacer que los problemas parecieran más pequeños
que antes de que habláramos. Eso ayudó mucho—gracias.
Gracias (de nuevo) a Noel Taylor, que seguramente se habrá
preguntado por qué quería escribir otro libro teniendo en cuenta lo
mucho que me quejé la última vez, pero cuya amistad y el liderazgo de
Golosá ayudó a mantener la música y el buen compañerismo en mi vida,
incluso en los momentos más intensos. Gracias también a Mateo Dean y
Dorothea Samtleben, amigos y sufridos compañeros musicales, que eran
muy comprensivos como mis excusas para no practicar apilado. Megan
Jennings era constantemente un apoyo, y se mostraba interesada en
el tema a pesar de que no estaba familiarizada con él, un gran tónico
para un escritor inseguro. Gracias, amigo!
Yo tenía cuatro revisores expertos y diligentes para este libro:
Yoav Shapira, Andrew Stellman, Davanum Srinivas, y Ben Hyde. Si yo
hubiera sido capaz de incorporar la totalidad de sus excelentes
sugerencias, esto sería un libro mejor. Así las cosas, la falta de
tiempo me obligaron a escoger y elegir, pero las mejoras son aún
significativas. Los errores que quedan son de mi entera
responsabilidad.
Mis padres, Frances y Henry, fueron un apoyo maravilloso, como
siempre, y como este libro es menos técnico que el anterior, espero
que lo encuentren un tanto más legible.
Por último, me gustaría dar las gracias a los dedicados, Karen
Underhill y Jim Blandy. La amistad y la comprensión de Karen han
significado todo para mí, no sólo durante la escritura de este libro,
sino durante los últimos siete años. Yo simplemente no habría
terminado sin su ayuda. Lo mismo sucede con Jim, un verdadero amigo y
pirata de un pirata informático, el primero que me enseñó sobre el
software libre, tanto como un pájaro puede enseñar a un avión a
volar.
Disclaimer
Los pensamientos y las opiniones expresadas en este libro son mías propias.
No necesariamente representan los puntos de vista de mis clientes, empleadores
pasados, la Fundación New América, o los proyectos de software libre discutidos
aquí. Ellos, sin embargo, representan la opinión de Jim Blandy. En serio: él
está de acuerdo con todo en este libro. Pregúntale.