18. Bifurcación
Una camiseta una vez ofreció esta sabiduría al mundo: "Si amas a
alguien, déjalo libre. Si regresa a ti, estaba destinado a ser. Si no
regresa, persíguelo y mátalo". " El mundo del software libre gira en
torno a dejar que tu código fuente salga al mundo. Si las cosas van
bien, a otros les encantará el código fuente, lo llenarán de
correcciones de errores y le enviarán todo este arduo trabajo. Será un
brillante ejemplo de armonía y otra razón por la cual el mundo del
software libre es grandioso. Pero si las cosas no funcionan, es posible
que alguien lo bifurque y no haya nada que pueda hacer al respecto.
"Fork" es un comando de UNIX que le permite dividir un trabajo por la
mitad. UNIX es un sistema operativo que permite que varias personas usen
la misma computadora para realizar diferentes tareas, y el sistema
operativo pretende ejecutarlas simultáneamente saltando rápidamente de
una tarea a otra. Una computadora UNIX típica tiene al menos 100 tareas
diferentes ejecutándose. Algunos vigilan la red en busca de datos
entrantes, algunos ejecutan programas para el usuario, algunos vigilan
el sistema de archivos y otros realizan muchas tareas menores.
Si "bifurca un trabajo", se las arregla para dividirlo en dos partes que
la computadora trata como dos trabajos separados. Esto puede ser
bastante útil si ambos trabajos se interrumpen con frecuencia, ya que
uno puede continuar mientras el otro se detiene. Esta solución es
excelente si dos tareas, A y B, deben realizarse de forma independiente.
Si usa una tarea y trata de lograr A primero, entonces B no comenzará
hasta que A termine. Esto puede ser bastante ineficiente si A se
detiene. Una mejor solución es bifurcar el trabajo y tratar a A y B como
dos tareas separadas.
La mayoría de los programadores no pasan mucho tiempo hablando de este
tipo de bifurcaciones. Están principalmente preocupados por las
bifurcaciones en el proceso político.
Los programadores usan "bifurcación" para describir un proceso similar
en la organización de un proyecto, pero el significado es bastante
diferente. Las bifurcaciones de un equipo significan que el grupo se
divide y va en diferentes direcciones. Una parte podría concentrarse en
agregar soporte para la palabra de moda Alpha, mientras que la otra
podría apuntar a la compatibilidad completa con la palabra de moda Beta.
En algunos casos, existen profundas divisiones detrás de la decisión de
bifurcarse. Un grupo piensa que la palabra de moda Alpha es un trabajo
chapucero y descuidado que va a estallar en unos pocos años. El otro
grupo odia la palabra de moda Beta con pasión. Disputas como esta
suceden todo el tiempo. A menudo se resuelven pacíficamente cuando a
alguien se le ocurre la palabra de moda Gamma, que los eclipsa a ambos.
Cuando no llega Gamma, la gente empieza a hablar de ir por caminos
separados y bifurcar la fuente. Si el polvo se asienta, dos versiones
diferentes comienzan a aparecer en la red compitiendo entre sí por los
corazones y las CPU de la gente que está ahí fuera. A veces las
diferencias entre las versiones son grandes ya veces son pequeñas. Pero
ahora hay una bifurcación en la evolución del código fuente y la gente
tiene que empezar a tomar decisiones.
La comunidad de software libre tiene una actitud extraña hacia las
bifurcaciones. Por un lado, la bifurcación es la única razón por la que
Stallman escribió el manifiesto del software libre. Quería el derecho y
la capacidad de jugar con el software de su computadora. Quería ser
libre para cambiarlo, modificarlo y hacerlo pedazos si alguna tarde le
apetecía hacerlo. Nadie debería ser capaz de impedir que haga eso.
Quería ser totalmente libre.
Por otro lado, la bifurcación puede dañar a la comunidad al duplicar
esfuerzos, dividir alianzas y sembrar confusión en la mente de los
usuarios. Si Bob comienza a escribir y publicar su propia versión de
Linux fuera de su casa, entonces le está quitando algo de energía a la
versión principal. La gente comienza a preguntarse si la versión que
están ejecutando es la versión del Sínodo de Missouri de Emacs o la
versión Bautista Cristiana. ¿A dónde envían correcciones de errores?
¿Quien esta a cargo? Los grupos de distribución como Debian o Red Hat
tienen que pasar unos minutos tratando de decidir si quieren incluir una
versión u otra. Si incluyen ambos, tienen que elegir uno como
predeterminado. A veces simplemente levantan las manos y se olvidan de
ambos. Es una guerra civil, y esas siempre son peores que una simple
guerra.
Algunas bifurcaciones evolucionan a partir de personalidades que
simplemente se frotan entre sí de manera incorrecta. He escuchado una y
otra vez: "Oh, tuvimos que echarlo del grupo porque estaba ofendiendo a
la gente". Muchos miembros de la comunidad consideran que este tipo de
bifurcación es malo. Usan el mismo tono de voz para describir una
bifurcación del código fuente que usan para describir la ruptura de dos
amantes. Es triste, desafortunado, desagradable y algo que realmente
nunca entenderemos porque no estuvimos allí. A veces las personas toman
partido porque tienen una fuerte opinión sobre quién tiene la razón. Por
lo general, se apagan y comienzan a contribuir a esa bifurcación de
código. En otros casos, las personas no saben cuál elegir y simplemente
cierran los ojos y se unen al que tiene el logo más lindo.
18.1 Forks y la amenaza de la desunión
Eric Raymond una vez tuvo una gran pelea con Richard Stallman sobre la
estructura de Emacs Lisp. Raymond dijo: "Las bibliotecas Lisp estaban en
mal estado de varias maneras. Estaban mal documentadas. Había mucho
trabajo que se había realizado fuera de la FSF que debería integrarse y
quería fusionarlo en el mejor trabajo desde fuera ."
El problema es que Stallman no quería formar parte del trabajo de
Raymond. “Simplemente dijo: 'No llevaré esos cambios a la distribución'.
Es su privilegio hacerlo", dijo Raymond.
Eso puso a Raymond en una posición incómoda. Podía seguir haciendo el
trabajo, crear su propia distribución de Emacs y romper públicamente con
Stallman. Si tenía razón y el código Lisp realmente necesitaba trabajo,
entonces probablemente encontraría a más de unas pocas personas que
aplaudirían su trabajo. Podrían comenzar a seguirlo descargando su
distribución y enviándole las correcciones de errores. Por supuesto, si
estaba equivocado, configuraría su propio servidor web, haría todo el
trabajo, publicaría sus correcciones de Lisp y descubriría que nadie
aparecía. Sería ignorado porque a la gente le resultaba más fácil
simplemente descargar la versión de Emacs de Stallman, que todos
pensaban que era una especie de versión oficial, si es que se podía
decir que existía. No usaban demasiado la función Lisp, así que no valía
la pena pensar en cómo un tipo en Pensilvania lo había arreglado.
Estaban obteniendo lo real del gran hombre mismo.
Por supuesto, algo intermedio probablemente sucedería. Algunas personas
a las que les importaba Lisp se asegurarían de descargar la versión de
Raymond. El resto del mundo seguiría usando la versión normal. Con el
tiempo, Stallman podría suavizar y aceptar los cambios, pero podría no
hacerlo. Tal vez alguien vendría y crearía una tercera distribución que
combinara los cambios de Raymond con los de Stallman en una versión
armoniosa. Eso sería genial, excepto que obligaría a todos a elegir
entre tres versiones diferentes.
Al final, Raymond decidió olvidarse de sus mejoras. "Emacs es demasiado
grande y demasiado complicado y la bifurcación es mala. De hecho, hubo
un grupo que se cansó tanto de trabajar con él que bifurcaron Emacs. Es
por eso que existe X Emacs. Pero las bifurcaciones importantes como esa
son eventos raros y yo no quería ser parte de perpetrar otro", dijo.
Alguien más tendría que comenzar la guerra civil disparando esos tiros
en Fort Sumter.
18.2 Jardín de senderos que se bifurcan de BSD
Algunos forks no son tan malos. A menudo llega un momento en que las
personas tienen razones legítimas para tomar caminos diferentes. Lo que
es legítimo y lo que no lo es a menudo se decide después de una gran
discusión, pero las razones estándar son las mismas que impulsan los
proyectos de programación. Una buena bifurcación debería hacer que una
computadora ejecute el software un millón de veces más rápido. O podría
hacer que el código sea mucho más fácil de portar a una nueva
plataforma. O podría hacer que el código sea más seguro. Hay mil razones
diferentes, y es imposible medir realmente cuál es la correcta. La única
medida verdadera es el número de personas que siguen cada rama de la
bifurcación. Si un proyecto tiene varios buenos discípulos y las
correcciones de errores llegan rápidamente, entonces la gente tiende a
asumir que es legítimo.
Las diversas versiones de la distribución de software BSD son algunas de
las divisiones más famosas. Todos descienden, de una forma u otra, de
las versiones originales de UNIX que surgieron de Berkeley. La mayoría
de los actuales evolucionaron a partir de la versión 4.3BSD y Network
Release 2 y algunos códigos integrados de la versión 4.4BSD después de
que se hizo libre. Todos se beneficiaron del trabajo de cientos de
personas que dedicaron su tiempo libre a clonar las funciones
controladas por AT&T. Todos ellos están controlados por la misma
licencia BSD flexible que otorga a las personas el derecho de hacer
prácticamente cualquier cosa que quieran con el código. Todos ellos
comparten el mismo demonio lindo como mascota.
Ahí es donde terminan las similitudes. El proyecto FreeBSD es
posiblemente la versión más exitosa. Tiene una distribución bastante
amplia porque sus desarrolladores tienen un buen trato con Walnut Creek
CD-ROM Distributors, una empresa que empaqueta grandes paquetes de
software gratuito y shareware en la red y luego los vende en CD-ROM. El
sistema es bien conocido y ampliamente utilizado porque el equipo de
FreeBSD se concentra en hacer que el software sea fácil de usar e
instalar en computadoras Intel. Últimamente, han creado una versión
Alpha, pero la mayoría de los usuarios ejecutan el software en chips
x86. yahoo! utiliza FreeBSD.
FreeBSD, por supuesto, comenzó como una bifurcación de un proyecto
anterior conocido como 386BSD, iniciado por Bill Jolitz. Esta versión de
BSD fue más un ejemplo académico o una prueba de concepto que un gran
proyecto de código abierto diseñado para apoderarse del mundo.
Jordan Hubbard, alguien que vendría más tarde para crear una bifurcación
de 386BSD, dijo sobre la decisión de Jolitz de crear una bifurcación de
BSD basada en 386: "La verdadera contribución de Bill fue trabajar con
el puerto 386. Era una especie de extraño. Nadie otros vieron el 386
como interesante. Berkeley tenía una actitud miope hacia las PC. Eran
solo juguetes. Nadie apoyaría a Intel. Ese era el clima en ese momento.
Nadie realmente tomaba las PC en serio. La contribución de Bill fue
darse cuenta de que las PC iban lugares."
Desde el principio, Hubbard y varios otros vieron la genialidad en la
creación de una versión 386 de BSD que se ejecutaba en el hardware más
barato disponible. Comenzaron a agregar funciones y pegar correcciones
de errores, que distribuyeron como un archivo que modificaba la
distribución principal de 386BSD de Jolitz. Esto fue práctico al
principio cuando los cambios eran pocos, pero continuó por respeto al
creador original, incluso después de que los parches se complicaran.
Finalmente, estalló una pelea en 1993. Jordan Hubbard, uno de los
forkers, escribe en su historia del proyecto:
386BSD era el sistema operativo de Bill Jolitz, que hasta ese momento
había estado sufriendo severamente por casi un año de abandono. A medida
que el kit de parches se hinchaba cada vez más incómodamente con cada
día que pasaba, estuvimos unánimemente de acuerdo en que había que hacer
algo y decidimos tratar de ayudar a Bill proporcionando esta instantánea
de "limpieza" provisional. Esos planes se detuvieron bruscamente cuando
Bill Jolitz decidió repentinamente retirar su aprobación del proyecto y
sin ninguna indicación clara de lo que se haría en su lugar.
El equipo de FreeBSD siguió adelante a pesar de la negación. Decidieron
bifurcarse. Hoy en día, 386BSD es en gran parte parte de la historia de
la informática, mientras que FreeBSD es un sistema operativo vivo y
actual, al menos en el momento en que se escribió este libro. El equipo
de FreeBSD ha hecho un buen trabajo distribuyendo versiones libres de
errores y han sido recompensados con lealtad, discípulos, dinero y
computadoras de Walnut Creek. La bifurcación a menudo puede ser buena
para la sociedad porque evita que una persona o camarilla frustre a otro
grupo. El mundo del software libre está lleno de muchas de las mismas
historias de política que flotan en los dispensadores de agua de las
corporaciones, pero las historias no tienen por qué terminar de la misma
manera. Si un jefe o grupo intenta cerrar un proyecto de software libre,
realmente no puede. El código fuente está disponible gratuitamente y la
gente es libre de continuar. El proyecto FreeBSD es un ejemplo.
Por supuesto, un buen software puede tener efectos antibifurcación.
Linus Torvalds dijo en una entrevista: "En realidad, ni siquiera he
probado 386BSD; cuando comencé con Linux no estaba disponible (aunque la
serie de Bill Jolitz sobre él en Dr. Dobbs Journal había comenzado y era
interesante), y cuando 386BSD finalmente salió, Linux ya estaba en un
estado en el que era tan utilizable que nunca pensé realmente en
cambiar. Si 386BSD hubiera estado disponible cuando comencé con Linux,
Linux probablemente nunca habría existido". Entonces, si 386BSD hubiera
sido más fácil de encontrar en la Red y hubiera tenido mejor soporte, es
posible que Linux nunca hubiera comenzado.
Una vez que alguien comienza a bifurcar BSD, una bifurcación rara vez es
suficiente. Otro grupo conocido como NetBSD también se hartó del
progreso de 386BSD en 1993. Sin embargo, este grupo quería construir una
plataforma que funcionara bien en muchas máquinas diferentes, no solo en
Intel 386. La gente de FreeBSD se concentró en hacer un buen trabajo. en
cajas Intel, mientras que NetBSD quería crear una versión que se
ejecutara en muchas máquinas diferentes. Su eslogan se convirtió en "Por
supuesto que ejecuta NetBSD".
NetBSD se ejecuta en prácticamente todas las máquinas que pueda
imaginar, incluidas las máquinas más antiguas y menos actualizadas, como
Amiga y Atari. También ha sido adoptado por compañías como NeXT, que
incluyeron partes de él en la versión del sistema operativo para
Macintosh conocida como Rhapsody. Por supuesto, los chips más comunes
como la línea Intel y Alpha también son compatibles.
La comunidad NetBSD surgió al mismo tiempo que el mundo FreeBSD. No se
dieron cuenta de que cada equipo estaba trabajando en el mismo proyecto
al mismo tiempo. Pero una vez que comenzaron a lanzar sus propias
versiones, se mantuvieron al margen.
"El grupo NetBSD siempre ha sido el más puro. Lo vieron como un vehículo
de investigación del sistema operativo. Eso era lo que estaba haciendo
CSRG. Su único mandato era hacer una investigación interesante", dijo
Hubbard. "Es un conjunto de objetivos muy diferente al que nos
concentramos para el 386. Lo importante para nosotros era pulirlo.
Pusimos todos nuestros esfuerzos en pulir, no en portar. Esto fue parte
de llevar BSD a las masas. Vamos por los números. Vamos por la
penetración masiva".
Esta orientación significó que NetBSD nunca logró realmente el mismo
dominio del mercado que FreeBSD. El grupo recientemente comenzó a
distribuir versiones de NetBSD en CD-ROM. FreeBSD, por otro lado,
siempre se ha destacado por atraer usuarios nuevos y curiosos gracias a
su relación con Walnut Creek. Muchos experimentadores y usuarios de
mente abierta tomaron uno de los discos, y algunos se emocionaron lo
suficiente como para hacer algunas contribuciones. La asociación con
Walnut Creek también ayudó al equipo de FreeBSD a entender lo que tenía
que hacer para que su distribución fuera más fácil de instalar y usar.
Ese era el negocio de Walnut Creek, después de todo.
18.3 OpenBSD
La bifurcación no se detuvo con NetBSD. Pronto, un miembro del mundo de
NetBSD, Theo de Raadt, comenzó a molestar a algunas personas. Un miembro
del equipo de OpenBSD me dijo: "La razón de la separación de NetBSD fue
que echaron a Theo. No lo entiendo completamente. Más o menos dicen que
estaba tratando mal a los usuarios de la lista de correo. para ser breve
y conciso, pero no hay nada de malo en eso. Fue uno de los miembros
fundadores de NetBSD y le pidieron que renunciara".
Ahora, cuatro años después de que comenzara la separación en 1995, de
Raadt todavía está un poco dolido por su decisión. Dice sobre su
decisión de bifurcar BSD nuevamente: "No tenía elección. Realmente me
gusta lo que hago. Realmente me gusta trabajar con una comunidad. En el
momento en que sucedió todo, yo era el segundo desarrollador más activo
en su árbol fuente. Tomaron al segundo desarrollador más activo y lo
echaron".
Bueno, no lo expulsaron por completo, pero le quitaron la capacidad de
"confirmar" cambios en el árbol de fuentes y hacerlos permanentes.
Después de la división, de Raadt tuvo que enviar sus contribuciones por
correo electrónico a un miembro del equipo para que pudiera
verificarlas. Esto no le cayó bien a de Raadt, quien lo vio como una
degradación y un impedimento real para trabajar. .
La raíz de la división es fácil de ver. De Raadt es enérgico. Piensa y
habla rápido sobre todo. Tiene una visión clara de la mayoría del
software gratuito y no tiene miedo de compartirlo. Si bien algunos
miembros de BSD son caritativos y conciliadores con Richard Stallman, de
Raadt no se molesta en ocultar su desprecio por la organización. "La
Free Software Foundation es una de las organizaciones más mal
nombradas", dice, explicando que solo los licenciatarios al estilo BSD
tienen la verdadera libertad de hacer lo que quieran con el software. La
Licencia Pública General GNU es un par de esposas para él.
De Raadt vive en Calgary y viste su página web personal con una foto de
sí mismo en la cima de una montaña con un pañuelo. Si desea enviarle una
pizza por cualquier motivo, ha publicado el número de teléfono de su
tienda local favorita (403/531-3131). Desafortunadamente, informa que ya
no aceptan números de tarjetas de crédito extranjeras.
Incluso se las arregla para tener opiniones fuertes sobre cosas simples
que aparentemente ama. El ciclismo de montaña es una gran obsesión,
pero, dice, "me gusta el barro y desprecio los 'callejones arbolados'
(lo que la mayoría de la gente llama caminos forestales)". Esa no es la
mejor manera de entablar amistad con personas menos extremas que
disfrutan de un paseo dominical por caminos forestales.
Si te gustan los gatos, no leas lo que dijo sobre sus mascotas: "Tengo
gatos. Sus nombres son Galileo y Kepler, todavía son gatitos. Kepler, la
pequeña perra, aparentemente puede teletransportarse a través de las
paredes. Galileo es un monstruo bastante genial. Cuando se conviertan en
gatos adultos, haré estofado y sopa con ellos. (Kepler solo es bueno
para la sopa)".
Comentarios desechables como este tienen efectos extraños en la red,
donde el texto es la única forma en que las personas pueden comunicarse.
No hay gestos faciales o pistas tonales para decirle a la gente que
alguien está bromeando, y algunas personas no tienen escáneres bien
desarrollados para la ironía o el sarcasmo. A algunos les encantan los
francotiradores y los hostigamientos, mientras que otros simplemente se
enojan. No pueden dejar que los comentarios sarcásticos se les escapen
de la espalda. Eventualmente, los buenos caballeros que sienten que la
amabilidad y la cortesía personal aún deben contar para algo en este
mundo se enojan y comienzan a intentar hacer algo.
Es fácil ver cómo afectó esto a la gente de NetBSD, que lleva a cabo sus
negocios de una manera mucho más adecuada. Charles Hannum, por ejemplo,
se negó a hablarme sobre el cisma a menos que le prometiera que podría
revisar las partes del libro que mencionaban NetBSD. También sugirió que
los forks no eran particularmente interesantes y que no deberían ser
parte del libro. Otros respondieron a las preguntas con cartas más
educadas diciendo que la separación ocurrió hace mucho tiempo y que ya
no valía la pena hablar de eso. Algunos señalaron que la mayoría de los
miembros del equipo actual de NetBSD ni siquiera estaban presentes
cuando ocurrió la división.
Si bien su silencio puede ser bastante prudente y una mejor manera de
pasar la vida, ciertamente no me ayudó a entender los dos lados de la
historia. Señalé que no aceptarían código en el árbol de NetBSD si el
autor exigía el derecho a revisar la distribución final. Dije que podían
emitir un comunicado o realizar la entrevista por correo electrónico.
Uno argumentó que no había mayor problema si al final había que eliminar
algunos párrafos del libro. Señalé que no podía dar a los cientos de
personas con las que hablé poder de veto sobre el manuscrito. Sería
imposible de completar. El libro no estaba siendo escrito por un comité.
Nadie en NetBSD se movió.
De Raadt, por otro lado, habló con bastante libertad sin condiciones
previas ni limitaciones. Todavía mantiene un archivo de registro con una
buena cantidad de cartas de correo electrónico intercambiadas durante la
separación y facilita su lectura en su sitio web personal. Eso es lo más
abierto que puedes conseguir. La gente de NetBSD que se negó a hablar
conmigo, por otro lado, parecía decidida a mantener el control de la
historia. Su silencio provino de un mundo diferente al del sitio web que
ofrece el número de teléfono de la pizzería local como pista. Eran
Dragnet; de Raadt era políticamente incorrecto.
Cuando la gente de NetBSD decidió hacer algo, le quitaron el acceso a de
Raadt al árbol de fuentes. No podía simplemente hurgar en el código
haciendo cambios a medida que avanzaba. Bueno, podría hurgar y hacer
cambios, pero no en el árbol oficial con la última versión. Después de
todo, el proyecto era de código abierto. Podía descargar la última
versión y empezar a juguetear, pero no podía tomar decisiones casi
oficiales sobre qué fuente formaba parte de la última versión oficial
inédita.
De Raadt pensó que esto era una verdadera barrera para trabajar. No pudo
ver la última versión del código porque se mantuvo fuera de su vista.
Estaba atascado con el último lanzamiento, que podría tener varios
meses. Eso lo puso en una desventaja extrema porque podría comenzar a
trabajar en un problema solo para descubrir que alguien lo había
solucionado o cambiado.
Chris Demetriou se encontró con la tarea de sacar a De Raadt del equipo.
Su carta, que aún se puede encontrar en el sitio de OpenBSD, decía que
el comportamiento rudo y los mensajes abusivos de de Raadt habían
alejado a las personas que podrían haber contribuido al proyecto.
Demetriou también se negó a hablar sobre NetBSD a menos que pudiera
revisar las secciones del libro que contenían sus comentarios. También
amenazó con tomar todas las medidas posibles contra cualquiera que
incluso citara sus cartas en un libro comercial sin su permiso.
De Raadt recopiló esta nota de Demetriou y la tormenta de fuego que
siguió en un archivo de 300k que guarda en su sitio web. El núcleo de
NetBSD trató de ser cortés y firme, pero el asunto pronto degeneró en
una guerra de llamas que duró siete meses. Después de un tiempo, la
gente comenzó a tener meta-argumentos, debatiendo si el verdadero
argumento era más o menos como las disputas de un marido y una mujer que
trabajan en la misma empresa. Los esposos y las esposas deben mantener
sus peleas personales fuera del lugar de trabajo, argumentaron. Y
entonces discutieron sobre si los desagradables gramas de De Raadt eran
parte de su "trabajo" o solo parte de su tiempo social.
A pesar de todo, de Raadt trató de recuperar su acceso al árbol fuente
de NetBSD y el grupo trató de proponer todo tipo de mecanismos para
asegurarse de que estaba haciendo una contribución "positiva" y se
llevaba bien con todos. En un momento, le ofrecieron una carta para que
la firmara. Estas negociaciones no llegaron a ninguna parte, ya que de
Raadt se opuso a verse obligado a hacer promesas que otros
contribuyentes no tenían que hacer.
De Raadt escribió software libre porque quería ser libre para hacer
cambios o escribir código de la forma en que quería hacerlo. Si hubiera
querido tener la cara feliz de un colaborador positivo, podría haber
conseguido un trabajo en una corporación. Renunciar al derecho de
participar en guerras de llamas y hablar a voluntad puede no ser una
gran compensación para las personas normales con trabajos de tiempo
completo. La gente normal se traga su orgullo a diario. La gente normal
no bromea sobre convertir a sus gatos en sopa. Pero de Raadt pensó que
era como perder un poco de su humanidad y aceptar voluntariamente un par
de esposas. Simplemente no era habitable.
La discusión duró meses. De Raadt sintió que intentó y trató de
reincorporarse al proyecto sin renunciar a su honor. El equipo central
de NetBSD argumentó que solo querían asegurarse de que fuera positivo.
Querían asegurarse de que no alejaría a los colaboradores perfectamente
buenos con payasadas descaradas. Nadie ganó terreno en las negociaciones
y, al final, De Raadt se fue.
La buena noticia es que la bifurcación no terminó mal. De Raadt decidió
que no aceptaría la degradación. Simplemente no podría hacer un buen
trabajo si tuviera que ejecutar todos sus cambios por parte del equipo
que lo expulsó del proyecto. Me tomó mucho tiempo preguntar "Madre,
¿puedo?" para arreglar cada pequeño error. Si iba a tener que ejecutar
su propio árbol, también podría hacer todo lo posible y comenzar su
propia versión de BSD. Lo llamó OpenBSD. Iba a estar completamente
abierto. Iba a haber relativamente pocos controles sobre los miembros.
Si el núcleo de NetBSD manejaba su mundo como los aldeanos puritanos en
una historia de Nathaniel Hawthorne, entonces de Raadt manejaría el suyo
como Club Med.
OpenBSD luchó durante varios meses mientras de Raadt intentaba atraer a
más diseñadores y programadores a su proyecto. Fue una batalla por la
popularidad en muchos sentidos, no muy diferente de la escuela
secundaria. Cuando las camarillas se dividieron, todos tuvieron que
escoger y elegir. De Raadt tenía que conseguir algunas personas en su
campamento si iba a hacer limonada.
La inspiración llegó a de Raadt un día cuando descubrió que al archivo
de guerra de llamas en su página web le faltaban algunas letras. Dice
que alguien irrumpió en su máquina e hizo algunas eliminaciones sutiles.
Alguien que tenía un conocimiento íntimo del sistema NetBSD. Alguien a
quien le importaba la imagen que retrataban las emociones crudas en las
cartas supuestamente privadas.
Aclara sus comentarios para dejar claro que no está seguro de que haya
sido alguien del núcleo de NetBSD. "Nunca lo perseguí. Si sucede, es tu
culpa. No es culpa de ellos", dijo. Por supuesto, la gente de NetBSD se
negó a discutir este asunto oa responder preguntas a menos que pudieran
revisar el capítulo.
Este robo le dio un enfoque. De Raadt miró a NetBSD y decidió que era
demasiado inseguro. Reunió a un grupo de personas de ideas afines y
comenzó a peinar el código en busca de posibles inseguridades.
"Más o menos al mismo tiempo, me involucré con una empresa que escribía
un escáner de seguridad de red. Tres de las personas de allí comenzaron
a jugar con el árbol de código fuente y a buscar agujeros de seguridad.
Empezamos a encontrar problemas por todas partes, así que comenzamos un
auditoría integral de seguridad. Comenzamos desde el principio. Nuestra
carga de tareas aumentó enormemente. En un momento, tenía cinco hojas de
papel en mi escritorio llenas de cosas que buscar ", dijo.
Los agujeros de seguridad en los sistemas operativos son bestias
extrañas que suelen aparecer por error cuando el programador hace una
suposición infundada. Uno de los agujeros más conocidos es el
desbordamiento del búfer, que se hizo famoso en 1988 después de que
Robert Morris, entonces estudiante de posgrado en Cornell, lanzara un
programa que usaba el agujero para hacer que varias partes importantes
de Internet se ralentizaran.
En este caso, el programador crea un búfer para contener toda la
información que alguien en la red podría enviar. Los navegadores web,
por ejemplo, envían solicitudes como "GET
http://www.nytimes.com" para
solicitar la página de inicio del sitio web del New York Times. El
programador debe reservar una parte de la memoria para contener esta
solicitud, generalmente un bloque que tiene una longitud de
aproximadamente 512 bytes. El programador elige una cantidad que debería
ser más que suficiente para todas las solicitudes, incluidas las más
extrañas y complicadas.
Antes de que el ataque se hiciera conocido, los programadores a menudo
ignoraban la longitud de la solicitud y asumían que 512 bytes eran más
que suficientes para cualquier cosa. ¿Quién escribiría una URL tan
larga?
¿Quién tenía una dirección de correo electrónico tan larga? Los
atacantes pronto descubrieron que podían enviar más de 512 bytes y
comenzaron a escribir sobre el resto de la memoria de la computadora. El
programa tomaría diligentemente 100.000 bytes y seguiría escribiéndolos
en la memoria. Un atacante podría descargar cualquier software y
comenzar a ejecutarlo. Y los atacantes hicieron esto.
De Raadt y muchos otros comenzaron a peinar el código en busca de
lagunas. Se aseguraron de que cada programa que usaba un búfer incluyera
un fragmento de código que verificaría para garantizar que ningún hacker
intentara infiltrarse más de lo que el búfer podía contener. Revisaron
miles de otras posibilidades. Se revisó cada línea y se hicieron
cambios, incluso si no había una forma práctica de que alguien llegara
al agujero potencial. Muchos búferes, por ejemplo, solo aceptan
información de la persona que está sentada en la terminal. La gente de
OpenBSD también los cambió.
Esta auditoría comenzó poco después de la bifurcación en 1995 y continúa
hasta el día de hoy. La mayor parte del trabajo principal ya está hecho
y al grupo le gusta jactarse de que no han tenido un agujero que pueda
explotarse de forma remota para obtener acceso a la raíz en más de dos
años. El último logotipo cuenta con el lema "Enviando niños a /dev/null
desde 1995". Es decir, cualquier atacante no llegará a ninguna parte con
OpenBSD porque toda la información adicional de los ataques se enrutaría
a /dev/null, una presunción de UNIX para ser borrada, ignorada y
olvidada.
La bifurcación de OpenBSD es un buen ejemplo de cómo las malas batallas
políticas pueden terminar resolviendo algunos problemas técnicos
importantes. Todos se inquietaron y preocuparon cuando de Raadt anunció
que estaba bifurcando el mundo BSD una vez más. Esto diluiría aún más
los recursos y sembraría confusión entre los usuarios. Sin embargo, la
concentración en la seguridad le dio a OpenBSD una identidad de marca, y
las otras distribuciones de BSD mantienen al menos un ojo en las
correcciones de errores distribuidas por el equipo de OpenBSD. Estos a
menudo conducen a arreglos subrepticios en su propia distribución.
El enfoque también lo ayudó a atraer nuevos programadores interesados en
la seguridad. "Algunos de ellos solían ser crackers y eran personas
realmente geniales. Cuando cumplen dieciocho años, se convierte en un
delito federal, ya sabes", dice de Raadt.
Esta bifurcación puede haber fortalecido a la comunidad BSD porque elevó
efectivamente el enfoque en la seguridad y la criptografía al más alto
nivel. En el mundo corporativo, es como tomar al líder del equipo de
desarrollo responsable de la seguridad y ascenderlo de gerente senior a
vicepresidente ejecutivo senior de una división separada. La autonomía
también le dio al equipo de OpenBSD la capacidad de tomar decisiones
técnicas audaces por sus propios motivos. Si veían un posible problema
de seguridad que pudiera perjudicar la usabilidad o la portabilidad, el
equipo de OpenBSD podía realizar el cambio sin preocuparse de que otros
miembros del equipo se quejaran. OpenBSD se trataba de seguridad. Si
quería trabajar en la portabilidad, vaya a NetBSD. Si le preocupaba la
facilidad de uso en cajas Intel, vaya a FreeBSD. La creación de un mundo
OpenBSD separado hizo posible darle un fuerte enfoque a la seguridad.
18.4 Bifurcaciones Temporales
Es un error ver estas bifurcaciones como divisiones absolutas que nunca
se vuelven a mezclar. Mientras que NetBSD y OpenBSD continúan
fulminándose entre sí a través del éter de Internet, los grupos
comparten código con frecuencia porque las licencias evitan que un grupo
congele a otro.
Jason Wright, uno de los desarrolladores de OpenBSD, dice: "Vigilamos
los árboles de código fuente de los demás. Una de las cosas que hago
para divertirme es sacar controladores de FreeBSD y trasladarlos a
OpenBSD. Entonces tenemos soporte para una nueva pieza de hardware. ."
Dice que a menudo busca controladores escritos por Bill Paul, porque "Me
he acostumbrado a su estilo. Así que sé qué cambiar cuando recibo su
código. Puedo hacerlo en unas cinco o seis horas. Es decir, en menos un
puerto aproximado para probar si funciona".
Aún así, el trabajo no siempre es sencillo. Dice que algunos
controladores de dispositivos son mucho más difíciles de manejar porque
ambos grupos han abordado el problema de manera diferente. "Los
controladores SCSI son más difíciles", dice. "Ha habido cierta
divergencia en las capas para SCSI. Están usando algo llamado CAM.
Tenemos una implementación más antigua a la que nos hemos adherido". Es
decir, FreeBSD ha reelaborado la estructura de la forma en que la
información SCSI se envía a las partes del sistema que solicitan
información. OpenBSD no ha adoptado sus cambios, quizás por cuestiones
de seguridad o quizás por inercia o quizás porque nadie se ha puesto a
pensar en ello. La mezcla no es perfecta.
Tanto NetBSD como FreeBSD también funcionan en la seguridad. También
observan los registros de cambios de OpenBSD y notan cuándo se
solucionan los agujeros de seguridad. También descubren sus propios
agujeros y OpenBSD puede usarlos como inspiración para tapar su propio
código. Los descubrimientos y complementos van en ambos sentidos a
medida que los grupos compiten para crear un sistema operativo perfecto.
Kirk McKusick dice: "NetBSD y OpenBSD tienen personalidades
extremadamente fuertes. Cada uno está absolutamente aterrorizado de que
el otro gane una pulgada".
Si bien las tres bifurcaciones de BSD pueden cooperar más de lo que
compiten, al mundo de Linux todavía le gusta mirar al mundo de BSD con
un poco de desprecio. Todas las bifurcaciones se ven un tanto
desordenadas, incluso si tener la libertad de bifurcar es lo que
aparentemente Stallman y GNU están luchando por lograr. Los entusiastas
de Linux parecen pensar: "Tenemos nuestros patos en una sola fila. ¿Cuál
es tu problema?" Es algo así como la mentalidad del ejército. Si es
verde, uniforme e igual en todas partes, entonces debe ser bueno.
El BSD carece de la cohesión monomaníaca de Linux, y esto parece dañar
su imagen. La comunidad de BSD siempre ha sentido que Linux está
acaparando el protagonismo que debería compartirse al menos por igual
entre los grupos. Linux realmente está construido alrededor de un culto
a Linus Torvalds, y eso hace que la prensa sea muy buena. Es muy fácil
para la prensa tomar fotos de un hombre y ponerlo en la portada de una
revista. Es simple, limpio, ordenado y perfectamente compatible con un
fragmento de sonido de 30 segundos. Explicar que hay FreeBSD, NetBSD,
OpenBSD y quién sabe qué versiones más pequeñas esperando entre
bastidores no es tan manejable.
Eric Raymond, un verdadero discípulo de Linus Torvalds y Linux, lo ve en
términos técnicos. La comunidad de BSD se enorgullece del hecho de que
cada distribución se construye a partir de un gran árbol fuente.
Obtienen todo el código fuente de todas las partes del núcleo, las
utilidades, los editores y demás en un solo lugar. Luego presionan el
botón de compilación y dejan que la gente trabaje. Este es un enfoque
nítido, efectivo y bien administrado para el proyecto.
Los grupos de Linux, sin embargo, no están tan coordinados. Torvalds
solo se preocupa realmente por el núcleo, que es su bebé. Alguien más se
preocupa por GCC. Todos crean sus propios árboles de origen para las
partes. Las empresas de distribución como Red Hat se preocupan por unir
el desorden. No es inusual encontrar la versión 2.0 del kernel en una
distribución mientras que otra tiene la versión 2.2.
"En BSD, puedes hacer una marca unificada. Están bastante orgullosos de
eso", dice Raymond. "Pero esto crea rigideces que le dan a la gente
incentivos para bifurcarse. Las cosas de BSD que se construyen de esa
manera desarrollan nuevos grupos derivados cada semana, mientras que
Linux, que tiene un acoplamiento más flexible, no se bifurca".
Él elabora: "Alguien señaló que hay un paralelo de la política. Las
instituciones políticas y sociales rígidas tienden a cambiar
violentamente si cambian, mientras que las que tienen más juego tienden
a cambiar pacíficamente".
Pero esta distinción puede ser semántica. La bifurcación ocurre en el
ámbito de Linux, pero ocurre como pequeñas distracciones que se explican
con otras palabras. Red Hat puede elegir usar GNOME, mientras que otra
distribución como SuSE puede elegir KDE. Los usuarios verán una gran
diferencia porque ambas herramientas crean entornos de escritorio
virtual. No te los puedes perder. Pero la gente no etiquetará esto como
un fork. Ambas distribuciones usan el mismo kernel de Linux y nadie ha
dicho: "Al diablo con Linus, voy a construir mi propia versión de
Linux". Técnicamente, todos todavía se llaman a sí mismos Linux, incluso
si están construyendo algo que se ve bastante diferente en la
superficie.
Jason Wright, uno de los desarrolladores del equipo de OpenBSD, ve la
organización como algo bueno. "Lo único que tienen todos los BSD sobre
Linux es un árbol de código fuente unificado. No tenemos el árbol de Joe
Blow o el árbol de Bob", dice. En otras palabras, cuando se bifurcan, lo
hacen oficialmente, con gran ceremonia, y se aseguran de que el mundo
sepa de sus creaciones por separado. Hacen una ruptura clara, y esto
facilita las cosas a los desarrolladores.
Wright dice que este árbol fuente único les facilitó mucho convertir
OpenBSD en un sistema operativo muy seguro. "Tenemos la seguridad sobre
Linux. Recientemente han estado realizando una auditoría de seguridad
para Linux, pero van a tienen muchos más problemas. No hay un lugar
donde ir para el código fuente".
Para extender esto a términos políticos, el mundo de Linux es como la
década de 1980 cuando Ronald Reagan dirigía el partido republicano con
la máxima de que nadie debería criticar a otro republicano. Claro, la
gente discutió internamente sobre impuestos, aborto, crimen y las
controversias habituales, pero mostró una rara cohesión pública. Nadie
critica a Torvalds, y todos tienen cuidado de hablar de la importancia
de la cohesión de Linux incluso cuando esencialmente se bifurcan al
elegir diferentes paquetes.
El mundo BSD, por otro lado, es como el reino bíblico en la película de
Monty Python La vida de Brian. En él, un personaje enumera los diversos
grupos disidentes que se oponen a la ocupación de los romanos. Está el
Frente Popular de Judea, el Frente Popular de Judea, el Frente Popular
de Judea y varios otros. Todos buscan lo mismo y todos están
manifiestamente separados. El mundo BSD puede compartir una buena
cantidad de código; puede compartir los mismos objetivos, pero
simplemente lo presenta como proveniente de tres campos diferentes.
John Gilmore, uno de los fundadores de la compañía de software libre
Cygnus y un firme creyente en las ventajas de la Licencia Pública
General GNU, dice: "En Linux, cada paquete tiene un mantenedor, y los
parches de todas las distribuciones pasan por ese mantenedor. Hay una
sensación de cohesión. Las personas en cada distribución trabajan para
reducir sus diferencias con respecto a la versión lanzada por el
mantenedor. En el mundo de BSD, cada árbol cree que es el propietario de
cada programa; no envían los cambios a un lugar central porque eso viola
el modelo del ego".
Jordan Hubbard, el líder de FreeBSD, es crítico con la caracterización
de Raymond del mundo BSD. "Siempre he tenido un lugar especial en mi
corazón para ese periódico porque pintó posiciones que no existían",
dijo Hubbard sobre la pieza de Raymond "La catedral y el bazar". "Podría
apuntar solo a la comunidad de Linux y decidir qué parte estaba
orientada a la catedral y qué parte estaba orientada al bazar.
"Cada sistema operativo tiene partes de catedral y partes de bazar. Hay
algunos aspectos del desarrollo que usted deja deliberadamente fuera de
foco y deja que las personas contribuyan a su propio ritmo. Es una
especie de modelo emergente y esa es la parte del bazar. Luego tienes la
parte organizativa de cada proyecto. Esa es la parte de la catedral. Son
los guardianes y los que establecen los estándares. También son
necesarios”, dijo. Cuando se trata de eso, incluso hay muchas
bifurcaciones sobre la definición de una bifurcación. Cuando algunos
miembros del equipo de Linux apuntan al mundo BSD y comienzan a burlarse
de las bifurcaciones, el equipo BSD se pone a la defensiva. Los
muchachos de BSD siempre se ponen a la defensiva porque su fundador no
está en la portada de todas las revistas. El equipo de Linux insinúa que
tal vez, si no estuvieran bifurcando, también tendrían a alguien con un
nombre en las luces.
Hubbard tiene razón. Linux se bifurca tanto, simplemente lo llaman una
distribución o un kernel experimental o un kit de parches. Nadie tiene
el descaro de escindir su propia organización política rival. Nadie
tiene la influencia política.
18.5 Una bifurcación, una división y una reunión
Ahora, después de todas las historias desagradables de puñaladas por la
espalda y disputas, es importante darse cuenta de que en realidad hay
algunas historias felices de bifurcaciones que se fusionan nuevamente.
Una de las mejores historias proviene de los pasillos de una empresa de
seguridad de Internet, C2Net, que se ocupó de una bifurcación de una
manera muy pacífica.
C2Net es una empresa con sede en Berkeley dirigida por algunos
defensores incondicionales de la privacidad y el anonimato en línea. La
compañía comenzó ofreciendo un servicio de reenvío que permitía a las
personas enviarse correos electrónicos anónimos entre sí. Su sitio
eliminaría la dirección del remitente y se la pasaría al destinatario
sin dejar rastro de quién la envió. Su objetivo era satisfacer la
necesidad de personas como denunciantes, filtradores y otras personas en
posiciones de debilidad que querían usar el anonimato para evitar
represalias.
La compañía pronto asumió un objetivo mayor cuando decidió modificar el
popular servidor web Apache agregando un cifrado fuerte para que las
personas pudieran procesar tarjetas de crédito a través de la web. La
tecnología, conocida como SSL por "capa de conexión segura", dispuso
automáticamente que todo el tráfico entre un servidor web remoto y el
usuario se codificara para que nadie pudiera espiar. SSL es una
tecnología muy popular en la web hoy en día porque muchas empresas la
utilizan para codificar números de tarjetas de crédito para derrotar a
los intrusos.
C2Net llamó mucho la atención cuando uno de sus fundadores, Sameer
Parekh, apareció en la portada de la revista Forbes con un titular que
decía que quería "derrocar al gobierno". En realidad, C2Net quería
trasladar las operaciones de desarrollo al exterior, donde no había
regulaciones sobre la creación de software criptográficamente seguro.
C2Net fue donde el talento estaba disponible y tenía el precio justo.
En este caso, C2Net eligió una versión gratuita de SSL escrita por Eric
Young conocida como SSLeay. El trabajo de Young es otro de los casos de
éxito del código abierto. Escribió la versión original como pasatiempo y
la lanzó con una licencia similar a BSD. A todos les gustó su código, lo
descargaron, experimentaron con él y lo usaron para explorar los límites
del protocolo. Young simplemente estaba intercambiando código con la red
y pasándoselo bien.
Parekh y C2Net vieron una oportunidad. Fusionarían dos productos
gratuitos, el servidor web Apache y SSLeay de Young, y crearían una
versión segura para que la gente pudiera configurar fácilmente sitios de
comercio seguro para Internet. Llamaron a este producto Stronghold y lo
pusieron en el mercado comercialmente.
La decisión de C2Net de cobrar por el software molestó a algunas
personas. Tomaron dos paquetes de software gratuitos y los convirtieron
en algo comercial. Esto no fue solo un fork, a algunos les pareció un
robo. Por supuesto, estas quejas no eran realmente justas. Ambas
colecciones de código surgieron con una licencia de estilo BSD que
otorgaba a todos el derecho a crear y vender adiciones comerciales al
producto. No había ningún requisito similar a la GPL que devolvieran a
la comunidad. Si nadie quería una versión comercial, no deberían haber
lanzado el código con una licencia muy abierta en primer lugar.
Parekh entiende estas objeciones y dice que ha soportado muchas críticas
en las listas de correo internas. Aún así, siente que el producto
Stronghold contribuyó en gran medida a la fortaleza de Apache al
legitimarlo.
"No me siento culpable por eso. No creo que hayamos contribuido con
mucho código fuente, que es una de las métricas clave que usa la gente
del grupo Apache. En mi perspectiva, la mayor contribución que hemos
logrado es la aceptación del mercado", dijo.
Parekh no quiere decir que tuvo que generar aceptación en el mercado
entre los desarrolladores web. El grupo Apache estaba haciendo un buen
trabajo al lograr eso a través de sus tácticas de guerrilla, excelente
producto y precio gratuito. Pero nadie enviaba un mensaje a los niveles
más altos de la industria informática, donde se hacían planes a largo
plazo y se cerraban tratos corporativos. Parekh siente que construyó una
respetabilidad de primera clase para el nombre de Apache al crear y
respaldar un producto de primera clase que las grandes corporaciones
podrían usar con éxito. Se aseguró de que todos supieran que Apache
estaba en el centro de Stronghold, y la gente se dio cuenta.
El primer trabajo de Parekh fue obtener una licencia de patente de RSA
Data Security. El software seguro como SSL se basa en el algoritmo RSA,
una idea que fue patentada por tres profesores del MIT en la década de
1970. Esta patente está controlada por RSA Data Security. Si bien la
empresa publicitó algunos de los términos de su licencia y se esforzó
por comercializar la tecnología, negociar una licencia no fue un detalle
trivial que pudiera ser manejado por algún equipo de software libre.
¿Quién va a pagar la licencia? ¿Quién va a calcular qué porcentaje de
libre es? ¿Quién va a subir con el dinero? Estas preguntas son mucho más
fáciles de responder si usted es una corporación que cobra a los
clientes por comprar un producto. C2Net estaba haciendo eso. Las
personas que compraron Stronghold obtuvieron una licencia de RSA que
garantizaba que podían usar el método sin ser demandados.
La patente fue sólo el primer obstáculo. SSL es una tecnología que
intenta brindar cierta seguridad a las conexiones web mediante el
cifrado de las conexiones entre el navegador y el servidor. Netscape
agregó una función que permite establecer una conexión solo si el
servidor tiene un certificado digital que lo identifica. Estos
certificados solo se emiten a una empresa después de pagar una tarifa a
un agente de certificados registrado como Verisign.
Al principio, los agentes de certificados como Verisign emitían
certificados solo para servidores creados por grandes empresas como
Netscape o Microsoft. Apache era solo un grupo amorfo en la red.
Verisign y las demás autoridades no le estaban prestando atención.
Parekh se acercó a ellos y los convenció de que comenzaran a emitir los
certificados para poder comenzar a vender Stronghold.
"Nos convertimos en el número tres, justo detrás de Microsoft y
Netscape. Luego vieron cuánto dinero ganaban con nosotros, así que
comenzaron a firmar certificados para todos", dijo. Otros proyectos de
Apache que usaban SSL encontraron la vida mucho más fácil una vez que
Parekh le mostró a Verisign que se podía ganar mucho dinero con personas
que usaban software libre.
Parekh no niega que C2Net no haya hecho muchas contribuciones al código
base de Apache, pero no cree que esta sea la mejor medida. El trabajo
político y de marketing de establecer a Apache como una herramienta
valiosa es algo que, en su opinión, puede haber sido más crucial para su
salud a largo plazo. Cuando empezó a poner dinero en manos de Verisign,
consiguió que esa gente se diera cuenta de que Apache tenía una cuota de
mercado real. Ese efectivo habló.
El fork Stronghold, sin embargo, no hizo felices a todos. SSL es una
herramienta importante y alguien iba a empezar a crear otra versión
gratuita. C2Net contrató a Eric Young y su colaborador Tim Hudson y les
pagó para que hicieran un trabajo para Stronghold. La versión principal
del SSLeay original de Young permaneció abierta, y ambos continuaron
agregando correcciones de errores y otras mejoras con el tiempo. Parekh
se sintió cómodo con esta relación. Aunque Stronghold pagaba los
salarios de Young y Hudson, también dedicaban parte de su tiempo libre a
mantener actualizado su conjunto de herramientas SSLeay.
Aún así, la idea de una versión gratuita de SSL era un proyecto tentador
para que alguien lo emprendiera. Mucha gente lo quería. El comercio
digital seguro lo exigía. Hubo muchos incentivos económicos que
empujaron para que sucediera. Eventualmente, un alemán llamado Ralf S.
Engelschall dio un paso al frente y escribió una nueva versión que llamó
modSSL. Engelschall es un contribuyente respetado del esfuerzo de
Apache, y ha escrito o contribuido a varios módulos diferentes que
podrían agregarse a Apache. Él llama a uno el "módulo modrewrite que
baila y canta" para manejar URL fácilmente.
De repente, la nueva versión de Engelschall significó que había forks de
duelo. Una versión salió de Australia, donde los creadores trabajaban
para una empresa que vendía una versión patentada del código. C2Net
distribuyó la versión australiana y se concentró en hacer que su
producto fuera fácil de instalar. El otro salió de Europa, distribuido
gratis por alguien comprometido con una licencia de código abierto. La
interfaz puede haber sido un poco más tosca, pero no costó dinero y
venía con el código fuente. El potencial de batalla entre SSLeay y
modSSL podría haber sido grandioso.
Las dos partes revisaron sus opciones. Parekh debe haberse sentido un
poco frustrado y en desventaja. Tenía una empresa que estaba haciendo un
buen producto con compradores habituales. Entonces apareció una solución
de código abierto. Stronghold de C2Net cuesta dinero y no viene con
código fuente, mientras que modSSL de Engelschall no cuesta nada y viene
con código. Esos eran aspectos negativos importantes que solo podía
combatir aumentando el servicio. Cuando se le preguntó a Engelschall si
su versión gratuita promocionaba C2Net, respondió el correo electrónico
con el mensaje escrito "[sonrisa]".
En esencia, C2Net se enfrentó a la misma situación que muchas empresas
importantes como Microsoft y Apple en la actualidad. Los clientes ahora
tenían una solución viable de código abierto para sus problemas. Nadie
tuvo que pagar a C2Net por el software. Los usuarios de los Estados
Unidos necesitaban una licencia de patente, pero expiraría a finales de
2000. Afortunadamente, Parekh es un verdadero devoto del mundo del
código abierto, aunque ha estado dirigiendo una empresa de código
propietario durante los últimos años. Observó el problema y decidió que
la única forma de mantenerse con vida era unir fuerzas y reparar el
fork.
Para empeorar las cosas, Hudson y Young dejaron C2Net para trabajar en
RSA Data Security. Parekh perdió a dos miembros importantes de su equipo
y enfrentó una competencia intensa. Afortunadamente, su devoción por el
código abierto vino al rescate. Hudson y Young no pudieron retractarse
del trabajo que hicieron en SSLeay. Era de código abierto y estaba
disponible para todos.
Parekh, Engelschall, varios empleados de C2Net y varios otros se
sentaron (por correo electrónico) y crearon un nuevo proyecto al que
llamaron OpenSSL. Este grupo llevaría la antorcha de SSLeay y la
mantendría actualizada. Young y Hudson dejaron de contribuir y dedicaron
su tiempo a crear una versión comercial de RSA Data Security.
Parekh dice de la época: "Aunque fue un serio revés para C2Net que RSA
pirateara a nuestra gente, fue bueno para el público. El desarrollo
realmente se aceleró cuando comenzamos con OpenSSL. Se involucró más
gente y el control se volvió menos centralizado. Se volvió más como el
grupo Apache. Es mucho más grande de lo que era antes y es mucho más
fácil para cualquiera contribuir".
Parekh también trabajó en la reparación de vallas con Engelschall. C2Net
comenzó a adoptar parte del código modSSL y lo combinó en su última
versión de Stronghold. Para facilitar esta combinación, C2Net comenzó a
enviar parte de su código anteriormente propietario a Engelschall para
que pudiera mezclarlo con modSSL y lanzarlo como código abierto. En
esencia, C2Net estaba evitando una competencia desastrosa al ser amable
y compartir con este competidor. Es un movimiento sorprendente que
podría no suceder en los negocios habituales.
La decisión de Parekh parece abierta y benéfica, pero tiene una cierta
cantidad de interés propio detrás. Él explica: "Simplemente decidimos
contribuir con todas las características que teníamos en modSSL para
poder comenzar a usar modSSL internamente, porque hace que nuestro
mantenimiento sea más fácil. No tenemos que mantener nuestra propia
versión patentada de modSSL. Concedido, hemos mejorado la versión
pública, pero esas características no eran significativas".
Esta mezcla no fue particularmente complicada, la mayor parte se centró
en la estructura de las partes del código fuente que manejan la
interfaz. Los programadores los llaman los "ganchos" o la "API". Si
Stronghold y modSSL usan la misma estructura de enlace, entonces
conectarlos es pan comido. Si Engelschall hubiera cambiado la estructura
de enlace de modSSL, entonces C2Net habría tenido que hacer más trabajo.
La decisión de contribuir con el código impidió que Engelschall hiciera
el trabajo él mismo de una manera que podría haber causado más dolor a
C2Net. "De hecho, estaba planeando implementarlos él mismo, por lo que
sería mejor que contribuyéramos con los nuestros para evitar problemas
de compatibilidad", dice Parekh. Es decir, a Parekh le preocupaba que
Engelschall fuera a implementar todas las funciones que usaba C2Net, y
había un peligro muy real de que Engelschall las implementara de una
manera que Parekh no pudiera utilizar. Luego habría una bifurcación más
seria que dividiría aún más a los dos grupos. C2Net no podría tomar
prestado el código de la versión gratuita de OpenSSL muy fácilmente. Así
que decidió contribuir con su propio código. Fue más fácil dar su código
y garantizar que OpenSSL encajaba perfectamente en Stronghold. En
esencia, C2Net optó por ceder un poco para poder seguir obteniendo todas
las mejoras futuras.
No es muy diferente de la industria del automóvil. No hay nada
intrínsecamente mejor o peor en los autos que tienen el volante en el
lado derecho. Son mucho más fáciles de usar en Inglaterra. Pero si
surgiera algún equipo de desarrollo de ingeniería de automóviles
gratuito en Inglaterra, podría tener sentido que una empresa de EE. UU.
donara el trabajo temprano para garantizar que el producto final pueda
tener el volante a ambos lados del automóvil sin un rediseño extenso. Si
Ford simplemente se sentara y esperara obtener el producto final
gratuito, podría descubrir que los ingenieros británicos diseñaron
felizmente para las únicas carreteras que conocían.
Engelschall está feliz con este cambio. Escribió en un mensaje de correo
electrónico: "Hacen el único enfoque razonable: basan su servidor en
modSSL porque saben que no pueden sobrevivir contra la solución de
código abierto con su antiguo código propietario. Y al contribuir con
cosas a modSSL implícitamente hacen su mejor su propio producto. De esta
manera ambas partes se benefician".
Parekh y C2Net ahora tienen un desafío. Deben continuar haciendo que el
paquete Stronghold sea mejor que la versión gratuita para justificar el
costo que la gente está pagando.
No todas las bifurcaciones terminan con una historia tan alegre de
cooperación mutua. Tampoco todas las historias en el mundo del software
libre terminan con la corporación lucrativa dando la vuelta y
devolviendo su código propietario al esfuerzo general. Pero el caso de
C2Net/OpenSSL ilustra cómo la naturaleza del desarrollo de software
alienta a las empresas y personas a dar y cooperar para satisfacer sus
propias necesidades egoístas. El software puede hacer una variedad de
cosas maravillosas, pero la estructura a menudo determina qué tan fácil
es para algunos de nosotros usarlo. Tiene sentido dedicar más tiempo y
hacer donaciones a un proyecto de software libre si quiere asegurarse de
que el producto final se ajuste a sus especificaciones.
La buena noticia es que la mayoría de la gente no tiene muchos
incentivos para romper y bifurcar su propio proyecto. Si permanece en el
mismo equipo, puede usar fácilmente todos los resultados producidos por
los otros miembros. Cooperar es mucho más fácil que luchar porque las
personas tienen un gran incentivo para permanecer juntas. Si no fuera
tan egoísta, sería conmovedor.