11. Fuente Los programadores de computadoras aman Star Wars. Por lo tanto, no debería sorprender que prácticamente todos los miembros de la comunidad de código libre, en un momento u otro, hayan lanzado la frase "Usa la fuente, Luke". Hace un trabajo perfecto al capturar la fe mítica que el mundo de la fuente libre deposita en la capacidad de acceder al código fuente de un programa. Como todos señalan, en la versión original de Star Wars, las tropas rebeldes usaban los planos, la Fuente, a la Estrella de la Muerte que llevaba R2D2 para buscar debilidades. El reino de la fuente libre ha estado impulsando los paralelos desde hace algún tiempo. Cuando AT&T dio a conocer su logotipo redondo con un hoyuelo desplazado, la mayoría de la gente de código libre comenzó a reírse. La empresa que inició la revolución del software libre al impulsar sus derechos de propiedad intelectual y molestar a Richard Stallman había elegido un logotipo que se parecía a la Estrella de la Muerte. Todos decían: "Las mentes imperialistas piensan igual". Algunos incluso se preguntaban y esperaban que George Lucas demandara a AT&T por algún tipo de infracción de marca registrada. Aquellos que usan el sable de luz de intimidación legal deben morir por el sable de luz de intimidación legal. Por supuesto, la gente de código libre sabía que solo su coalición suelta de rebeldes repartidos por la galaxia sería un rival fuerte para el Imperio. La Fuente era información, y la información era poder. The Source también trataba sobre la libertad, una de las mejores y más consistentes reservas de inspiración revolucionaria que existen. Puede que los rebeldes no tuvieran equipos de abogados en los cruceros estelares imperiales, pero esperaban utilizar la Fuente para tejer una resistencia fuerte, eficaz y más poderosa. El mito del acceso abierto al código fuente gratuito es poderoso y ha convertido a muchos en la comunidad en verdaderos creyentes. El código fuente es una lista de instrucciones para la computadora escritas en un lenguaje de programación comprensible para los humanos. Una vez que los compiladores convirtieron el código fuente en la cadena de bits conocida como código binario u objeto, solo las computadoras (y algunos humanos muy talentosos) podían entender las instrucciones. He conocido a varias personas que pueden leer el código binario 8080 a simple vista, pero son un poco diferentes de la población general. Cuando las empresas trataron de mantener en secreto su arduo trabajo e investigación bloqueando el código fuente, construyeron una barrera entre los usuarios y sus desarrolladores. Los programadores trabajarían detrás de paredes secretas para escribir el código fuente. Después de que los compiladores convirtieran la fuente en algo que las computadoras pudieran leer, la fuente sería bloqueada nuevamente. Los compradores solo obtendrían el código binario porque eso es todo lo que las empresas pensaban que necesitaban los consumidores. El código fuente debía mantenerse en secreto porque alguien podría robar las ideas del interior y crear su propia versión. Stallman vio este secreto como un gran crimen. Los usuarios de computadoras deberían poder compartir el código fuente para que puedan compartir formas de mejorarlo. Este intercambio debería conducir a más intercambio de información en un gran circuito de retroalimentación. Algunas personas incluso usaron la palabra "floración" para describir la explosión de interés y la retroalimentación cruzada. Están usando la palabra de la forma en que los biólogos la usan para describir la forma en que las algas pueden surgir, inundando una región del océano. Ideas inteligentes, correcciones de errores brillantes y nuevas características maravillosas aparecen de la nada a medida que la curiosidad humana se amplifica por la generosidad humana en una gran explosión de sinergia intelectual. Lo único que falta en la imagen es un grupo de ewoks peludos que bailan alrededor de una fogata.[^8] [8]: Linux tiene muchas oportunidades de marketing. Torvalds eligió un pingüino llamado Tux como mascota, y varias empresas fabrican y venden pingüinos de peluche para el reino de Linux. El mundo BSD ha abrazado a un lindo demonio, un juego de palabras visual sobre el hecho de que BSD UNIX usa la palabra "daemon" para referirse a algunos de los programas de fondo sin rostro en el sistema operativo. 11.1 El obispo Eric Raymond, un hombre que es una especie de filósofo de sillón del mundo del código abierto, hizo un gran trabajo al resumir el fenómeno y crear este mito en su ensayo "La catedral y el bazar". Raymond es un programador serio que pasó algún tiempo trabajando en proyectos como GNU Emacs de Stallman. Vio las ventajas del desarrollo de código abierto desde el principio, tal vez porque es un libertario empedernido. Las soluciones gubernamentales son engorrosas. Empoderar a las personas sin restringirlas es excelente. Raymond se muestra un poco más extremista que otros libertarios, en parte porque no duda en defender la segunda enmienda de la Constitución de los Estados Unidos tanto como la primera. Raymond no se avergüenza de apoyar la posesión generalizada de armas como una forma de empoderar aún más al individuo. No le gusta la Asociación Nacional del Rifle porque están demasiado dispuestos a renunciar a derechos que él siente que son absolutos. A algunas personas les gusta llamarlo la Margaret Mead del mundo del código libre porque pasó algún tiempo estudiando y caracterizando la cultura de la misma manera que lo hizo Mead cuando escribió Coming of Age in Samoa. Esto puede ser un golpe sutil porque Margaret Mead no es realmente el mismo ángel intelectual que fue hace mucho tiempo. Derek Freeman y otros antropólogos plantean serias dudas sobre la capacidad de Mead para ver sin prejuicios. Mead era una gran fanática del amor libre, y muchos afirman que no fue casualidad que encontrara maravillosas historias de sexualidad sin control en Samoa. Freeman volvió a visitar Samoa y descubrió que no era la tierra libre de culpas de los placeres libertinos que Mead describía en su libro. Documentó muchos ejemplos de moderación sexual y vergüenza que Mead aparentemente pasó por alto en su búsqueda de un paraíso. Raymond miró el desarrollo de código abierto y encontró lo que quería encontrar: la maravillosa eficiencia de los mercados no regulados. Claro, a algunas personas les encantaba etiquetar a Richard Stallman como comunista, una descripción que siempre ha molestado a Stallman. Raymond investigó un poco más a fondo y vio que la base del éxito del movimiento del software libre era la libertad que otorgaba a cada usuario el poder completo de cambiar y mejorar su software. Así como Sigmund Freud encontró el sexo en la raíz de todo y Carl Jung descubrió una batalla de animus y anima, el libertario encontró la libertad. El ensayo de Raymond fue uno de los primeros en tratar de explicar por qué los esfuerzos de código libre pueden tener éxito e incluso prosperar sin los incentivos financieros de una empresa de software estándar basada en el dinero. Una de las principales razones que citó fue que un programador podría "rascarse una picazón" que le molestaba. Es decir, un programador podría molestarse por una pieza de software que limitaba sus opciones o tenía un problema técnico molesto. En lugar de maldecir la oscuridad en la cavidad cerebral del programador corporativo que creó el problema, el hacker de código libre pudo usar el código fuente para tratar de encontrar el error. Rascarse con picazón puede ser fundamental para resolver muchos problemas. Algunos errores en el software son bastante difíciles de identificar y duplicar. Solo ocurren en situaciones extrañas, como cuando la impresora se queda sin papel y el módem está sobrecargado por un archivo largo que llega a través de Internet. Entonces, y solo entonces, los dos búferes pueden llenarse hasta el borde, chocar entre sí y bloquear la computadora. El resto del tiempo, el programa flota felizmente, sin encontrar problemas. Estos tipos de errores son notoriamente difíciles de descubrir y caracterizar para los entornos de prueba corporativos. Las empresas intentan ser diligentes contratando a varios programadores jóvenes y colocándolos en una habitación con una computadora. El equipo golpea el software todo el día y desarrolla una animosidad saludable hacia el equipo de programación que tiene que solucionar los problemas que descubren. Pueden detectar muchos errores simples, pero ¿qué sucede si no tienen una impresora conectada a su máquina? ¿Qué sucede si no están imprimiendo cosas constantemente como lo hacen algunos usuarios de oficina? El extraño error pasa desapercibido y probablemente no se solucione. El modelo de desarrollo corporativo trata de resolver esta limitación enviando cientos, miles y, a menudo, cientos de miles de copias a usuarios ambiciosos a los que llamaron "beta testers". Otros los llamaron "tontos" o "voluntarios gratuitos" porque una vez que terminan de ayudar a desarrollar el software, pueden pagarlo. Microsoft incluso cobra a algunos usuarios por el placer de ser probadores beta. Muchos de los usuarios son pragmáticos. A menudo, no tienen más remedio que participar en el esquema porque a menudo basan sus negocios en algunos de los programas que envían estas empresas. Si no funcionara, se quedarían sin trabajo. Si bien es mucho más probable que esta amplia distribución de copias beta encuentre a alguien que esté imprimiendo y sobrecargando un módem al mismo tiempo, no brinda al usuario las herramientas para ayudar a encontrar el problema. Su única opción es escribir un mensaje de correo electrónico a la empresa que diga "Estaba imprimiendo ayer y su software falló". Eso no es muy útil para el ingeniero, y no sorprende que muchos de estos informes se ignoren o no se resuelvan. Raymond señaló que el mundo del código libre puede hacer un gran trabajo con estos desagradables errores. Caracterizó esto con la frase: "Con suficientes ojos, todos los errores son superficiales", que caracterizó como "Ley de Linus". Es decir, eventualmente algún programador comenzaría a imprimir y usar Internet al mismo tiempo. Después de que el sistema fallara varias veces, algún programador se preocuparía lo suficiente por el problema como para investigar la fuente gratuita, hurgar y detectar el problema. Eventualmente, alguien vendría con el tiempo, la energía y el compromiso para diagnosticar el problema. Raymond llamó a esto "Ley de Linus" en honor a Linus Torvalds. Raymond es un gran admirador de Torvalds y piensa que el verdadero genio de Torvalds fue organizar un ejército para trabajar en Linux. La codificación en sí fue un segundo distante. Por supuesto, esperar a que un usuario encontrara los errores dependía de que hubiera alguien con suficiente tiempo y compromiso. La mayoría de los usuarios no son programadores talentosos y la mayoría tiene trabajos diarios. Raymond y el resto de la comunidad de código libre reconocen esta limitación, pero señalan que la persona adecuada a menudo aparece si el error ocurre con la suficiente frecuencia como para convertirse en un problema real. Si el error es lo suficientemente grave, alguien que no sea programador puede incluso contratar a un programador para que introduzca el código fuente. Esperar a que el bicho y el programador se encuentren es como esperar a que Arthur encuentre la espada en la piedra. Pero Raymond y el resto de la comunidad de código libre incluso le han dado la vuelta a esta limitación y la han promocionado como una ventaja. Confiar en los usuarios para rascarse significa que los problemas solo se abordan si tienen distritos electorales reales con una población lo suficientemente grande como para generar el único creyente verdadero con suficiente tiempo libre. Es una especie de mercado libre en el tiempo de las personas para corregir errores. Si la demanda está ahí, se creará la solución. Es la Ley de Say reformulada para el desarrollo de software: "el suministro de errores crea el talento para las correcciones". El desarrollo corporativo, por otro lado, ha estado obsesionado durante mucho tiempo con agregar más y más funciones a los programas para dar a las personas suficientes razones para comprar la actualización. Los gerentes saben desde hace mucho tiempo que es mejor dedicar más tiempo a agregar más trucos y widgets a un programa que corregir sus errores. Es por eso que Microsoft Word puede hacer tantas cosas diferentes con los encabezados y pies de página de los documentos, pero no puede detener la reproducción de un virus Word Macro. La gente de Microsoft sabe que cuando los gerentes corporativos se sientan a decidir si gastar los miles de dólares para actualizar sus máquinas, necesitarán un conjunto de nuevas características atractivas. A la gente no le gusta pagar por la corrección de errores. Por supuesto, las corporaciones también tienen algunas ventajas. Money se asegura de que alguien esté tratando activamente de resolver los errores en el programa. La misma visión de libre mercado garantiza que las empresas que constantemente decepcionan a sus clientes se irán a la quiebra. Este desarrollador tiene la ventaja de estudiar el mismo código fuente día tras día. Eventualmente, aprenderá lo suficiente sobre las entrañas de la Fuente para ser mucho más efectivo que el tipo con la impresora y el módem atascados. Debería ser capaz de atrapar el error 10 veces más rápido que el aficionado al código libre solo porque es un experto en el sistema. Raymond reconoce este problema pero propone que el modelo de fuente libre aún puede ser más efectivo a pesar de la inexperiencia de las personas que se ven obligadas a rascarse la picazón. Una vez más, toca el mundo de la filosofía libertaria y sugiere que el mundo del software libre es como un bazar lleno de muchos comerciantes diferentes que ofrecen sus productos. El desarrollo corporativo, por otro lado, está estructurado como los sindicatos religiosos que construyeron las catedrales medievales. Los bazares ofrecían mucha competencia pero ningún orden. Las catedrales estaban a cargo de equipos centrales de sacerdotes que aprovecharon la riqueza de la ciudad para construir la visión de un arquitecto. Las diferencias entre los dos eran bastante simples. El equipo de la catedral podría producir una gran obra de arte si el arquitecto tuviera talento, el equipo de financiamiento tuviera éxito y la administración pudiera mantener a todos enfocados en hacer su trabajo. Si no, nunca llegó tan lejos. El bazar, por otro lado, consistía en muchos pequeños comerciantes que intentaban superarse unos a otros. Los mejores cocineros terminaron con la mayor cantidad de clientes. Los otros pronto cerraron. La comparación con el software era simple. Las corporaciones reunían los diezmos, empleaban un arquitecto central con una gran visión, administraban el equipo de programadores y enviaban un producto de vez en cuando. El mundo de Linux, sin embargo, permite que todos toquen la Fuente. La gente intentaría arreglar las cosas o añadir nuevas funciones. Las mejores soluciones serían adoptadas por otros y las mediocres quedarían en el camino. Proliferarían muchas versiones diferentes de Linux, pero con el tiempo el mercado de software se fusionaría en torno a la mejor versión estándar. "Desde el punto de vista de la programación del constructor de catedrales, los errores y los problemas de desarrollo son fenómenos complicados, insidiosos y profundos. Se necesitan meses de escrutinio por parte de unos pocos dedicados para desarrollar la confianza de que los ha eliminado todos. Por lo tanto, los largos intervalos de publicación y la inevitable decepción cuando los lanzamientos largamente esperados no son perfectos", dijo Raymond. "En la vista de bazar, por otro lado, asumes que los errores son fenómenos generalmente superficiales, o, al menos, que se vuelven superficiales bastante rápido cuando se exponen a miles de desarrolladores de código ansiosos que golpean cada nueva versión. En consecuencia, usted suelte a menudo para obtener más correcciones y, como efecto secundario beneficioso, tiene menos que perder si se produce un error ocasional". 11.2 Flecha gigante Este bazar puede ser una poderosa influencia para resolver problemas. Claro, no está guiado por un arquitecto talentoso y equipos de sacerdotes, pero es un gran juego contra todos. Es bastante improbable, por ejemplo, que el tipo con la impresora sobrecargada y la línea de módem también sea un programador talentoso con una gran visión para resolver el problema. Alguien llamado Arthur solo tropieza con la piedra correcta con la espada correcta de vez en cuando. Pero si el usuario frustrado puede hacer un buen trabajo al caracterizarlo e informarlo, entonces alguien más puede resolverlo. Dave Hitz fue uno de los programadores que ayudó a Keith Bostic a reescribir UNIX para que pudiera estar libre de los derechos de autor de AT&T. En la actualidad, dirige Network Appliance, una empresa que crea servidores de archivos simplificados que ejecutan BSD en su núcleo. Ha estado escribiendo sistemas de archivos desde la universidad, y el software gratuito fue muy útil cuando estaba comenzando su empresa. Cuando comenzaron a construir las grandes máquinas, los ingenieros simplemente buscaron en el grupo de código fuente gratuito para los sistemas operativos y extrajeron gran parte del código que alimentaría sus servidores. Modificaron mucho el código, pero el cuerpo de software libre que ayudó a crear fue un excelente punto de partida. Según su experiencia, muchas personas encontraban un error y lo reparaban con una solución que fuera lo suficientemente buena para ellos. Algunos eran solo niños en la universidad. Otros eran programadores que no tenían ni el tiempo ni la energía para leer el código fuente y comprender la mejor manera de solucionar el problema. Algunos solucionaron el problema por sí mismos, pero sin darse cuenta crearon otro problema en otro lugar. Ordenar todos estos problemas fue difícil de hacer. Pero Hitz dice: "Incluso si lo arreglaron completamente de manera incorrecta, si encontraron el lugar donde desapareció el problema, entonces pusieron una flecha gigante sobre el problema". Eventualmente, suficientes flechas proporcionarían a alguien suficiente información para resolver el problema correctamente. Muchas de las nuevas versiones escritas por personas pueden perderse en el tiempo, pero eso no significa que no hayan tenido un efecto importante en la evolución de la Fuente. "Creo que rara vez se da el caso de que haya personas que hagan de su vida una amplia base de código fuente", dijo. "Hay un montón de personas que son diletantes. El mensaje es: 'No subestimes a los diletantes'". 11.3 Bazar o Catedral Cuando Raymond escribió el ensayo, solo estaba tratando de descubrir las diferencias entre varios de los campos en el mundo del código libre. Se dio cuenta de que las personas que ejecutan proyectos de código libre tenían diferentes formas de compartir. Quería explicar qué método de desarrollo de código libre funcionaba mejor que otros. Fue solo más tarde que el ensayo comenzó a tomar un objetivo más serio cuando todos comenzaron a darse cuenta de que Microsoft era quizás el equipo de desarrollo con forma de catedral más grande que existía. Raymond dijo: "Creo que, como todos los demás en la cultura, vagué de un lado a otro entre los dos modos, ya que parecía apropiado porque no tenía una teoría ni conciencia". Vio a Richard Stallman y los primeros años de los proyectos GNU como un ejemplo de desarrollo estilo catedral. Estos equipos solían trabajar durante meses, si no años, antes de compartir sus herramientas con el mundo. El propio Raymond dijo que se comportó de la misma manera con algunas de las primeras herramientas que escribió y con las que contribuyó al proyecto GNU. Linus Torvalds cambió de opinión al aumentar la velocidad de compartir, que Raymond caracterizó como la regla de "liberar temprano y con frecuencia, delegar todo lo que pueda, estar abierto hasta el punto de la promiscuidad". Torvalds ejecutó Linux de la manera más abierta posible, y esto finalmente atrajo a algunos buenos colaboradores. En el pasado, la FSF era mucho más cuidadosa con lo que adoptaba y aportaba al proyecto GNU. Torvalds tomó muchas cosas en sus distribuciones y mutaron tan a menudo como a diario. Ocasionalmente, salían nuevas versiones dos veces al día. Por supuesto, Stallman y Raymond han tenido peleas en el pasado. Raymond tiene cuidado de elogiar al hombre y decir que valora su amistad, pero también lo modera diciendo que es difícil trabajar con Stallman. En el caso de Raymond, dice que una vez quiso reescribir gran parte del código Lisp que estaba integrado en GNU Emacs. Emacs de Stallman permitía a cualquier usuario conectar su propio software a Emacs escribiéndolo en una versión especial de Lisp. Algunos tenían lectores de correo escritos. Otros habían agregado un código de generación automática de comentarios. Todo esto fue escrito en Lisp. Raymond dice que en 1992, "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 y yo quería abordar ese proyecto". Según Raymond, Stallman no quería que él hiciera el trabajo y se negó a incluirlo en la distribución. Stallman pudo hacer esto porque controlaba la Free Software Foundation y la distribución del software. Raymond podría haber creado su propia versión, pero se negó porque era demasiado complicada y, en última instancia, mala para todos si surgían dos versiones. Por su parte, Stallman explica que estaba contento de aceptar partes del trabajo de Raymond, pero que no quería verse obligado a aceptarlas todas. Stallman dice: "En realidad, acepté una cantidad sustancial del trabajo que Eric había hecho. Tenía varias ideas que me gustaban, pero también tenía algunas ideas que pensé que estaban equivocadas. Acepté con gusto su ayuda, siempre y cuando podía juzgar sus ideas una por una, aceptando algunas y rechazando otras. "Pero posteriormente me pidió que hiciera un acuerdo general en el que se haría cargo del desarrollo de una gran parte de Emacs, operando de forma independiente. Sentí que debía seguir juzgando sus ideas individualmente, así que dije que no". Raymond combinó esta experiencia con el tiempo que pasó observando al equipo de Torvalds impulsar el kernel de Linux y los usó como base para su ensayo sobre la distribución de Source. "Principalmente, estaba tratando de extraer algunos factores que había observado como folclore inconsciente para que la gente pudiera sacarlos y razonar sobre ellos", dijo. Raymond dice: "Alguien señaló que hay un paralelismo con 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". Hay una buena razón empírica para la fe en la fuerza de la fuente libre. Después de todo, un grupo de personas que rara vez se veían había reunido una gran cantidad de código fuente que estaba pateando el trasero de Microsoft en algunos rincones del mundo informático. Los servidores Linux eran comunes en Internet y cada día eran más comunes. El escritorio estaba esperando ser conquistado. Lo habían hecho sin opciones sobre acciones, sin jets corporativos, sin contratos secretos y sin alianzas potencialmente ilegales con fabricantes de computadoras. El éxito del software del mundo GNU y Linux fue realmente impresionante. Por supuesto, los mitos pueden llevarse demasiado lejos. Programar computadoras es un trabajo duro y, a menudo, frustrante. Compartir el código fuente no hace que los errores o problemas desaparezcan, solo hace que sea un poco más fácil para otra persona profundizar en un programa para ver qué está fallando. El código fuente puede ser simplemente una lista de instrucciones escritas en un lenguaje de programación que está diseñado para que los humanos puedan leerlo, pero eso no significa que sea fácil de entender. De hecho, la mayoría de los humanos no entenderán la mayor parte del código fuente porque los lenguajes de programación están diseñados para ser entendidos por otros programadores, no por la población en general. Para empeorar las cosas, los propios programadores tienen dificultades para comprender el código fuente. Los programas de computadora a menudo son bastante complicados y puede tomar días, semanas e incluso meses entender qué es lo que un extraño código fuente le dice a una computadora que haga. Aprender lo que sucede en un programa puede ser un trabajo complicado incluso para los mejores programadores, y no es algo que se tome a la ligera. Si bien muchos programadores y miembros del mundo del código abierto se apresuran a elogiar el movimiento, también podrán citar problemas con el mito de la Fuente. No es que la Fuente no funcione, dirán, es solo que rara vez funciona tan bien como implica la exageración. Las floraciones rara vez son tan vigorosas y los mercados libres de mejoras rara vez son tan líquidos. A Larry McVoy, un ávido programador, protoacadémico y desarrollador del kit de herramientas BitKeeper, le gusta encontrar fallas en el modelo. No es que no le guste compartir el código fuente, es solo que no es lo suficientemente rico como para asumir proyectos de software libre. "Necesitamos encontrar una manera para que la gente desarrolle software libre y pague sus hipotecas y forme una familia", dice. "Si miras de cerca", dice, "realmente no hay un bazar. En la parte superior siempre es una catedral de una sola persona. Es Linus, Stallman o alguien más". Es decir, el mito de un bazar como una competencia abierta y libre para todos no es exactamente cierto. Claro, todos pueden descargar el código fuente, jugar con él y hacer sugerencias, pero al final del día importa lo que diga Torvalds, Stallman o cualquier otra persona. Siempre hay un gran arquitecto de Chartres que se enseñorea de su dominio. Parte de este problema es el éxito de la metáfora de Raymond. Dijo que solo quería darle a la comunidad algunas herramientas para comprender el éxito de Linux y razonar al respecto. Pero sus dos visiones de una catedral y un bazar tenían tal claridad que la gente se concentraba más en dividir el mundo en catedrales y bazares. En realidad, hay una gran cantidad de mezcla en el medio. Los bazares más eficientes en la actualidad son los centros comerciales suburbanos que tienen una empresa administradora que construye el sitio, alquila las tiendas y crea una experiencia unificada. Las áreas comerciales del centro a menudo fallaban porque siempre había un dueño de tienda que podía arruinar una cuadra entera instalando una tienda que vendiera pornografía. Por otro lado, la religión siempre ha sido una especie de bazar. Martín Lutero dividió efectivamente el cristianismo al introducir la competencia. Incluso dentro de las denominaciones, diferentes parroquias luchan por los corazones y las almas de las personas. El mismo desenfoque se aplica al mundo del software de código abierto. El kernel de Linux, por ejemplo, contiene muchos miles de líneas de código fuente. Algunos ponen el número en 500.000. Algunas personas talentosas como Alan Cox o Linus Torvalds lo saben todo, pero la mayoría solo están familiarizados con los rincones que necesitan saber. Estas personas, que pueden ser miles, son superadas en número por los millones que usan el sistema operativo Linux a diario. Es interesante preguntarse si la proporción entre usuarios técnicamente ungidos y alegres en el mundo del código libre es comparable a la proporción en el dominio de Microsoft. Después de todo, Microsoft compartirá su código fuente con socios cercanos después de que firmen algunos formularios de confidencialidad.[^9] Si bien Microsoft tiene cuidado con lo que les dice a sus socios, solo revelará información cuando haya algo que ganar. Otras compañías ya se lanzaron y comenzaron a ofrecer el código fuente a todos los usuarios que quieran verlo. [9]: Al momento de escribir este artículo, Microsoft no ha publicado su código fuente, pero se sabe que la empresa está examinando la opción como parte de su acuerdo con el Departamento de Justicia. Responder a esta pregunta es imposible por dos razones diferentes. Primero, nadie sabe lo que Microsoft revela a sus socios porque mantiene toda esta información en secreto, por reflejo. Los contratos generalmente se negocian bajo confidencialidad, y la empresa no ha tenido reparos en explotar el poder que proviene de la falta de información. En segundo lugar, nadie sabe realmente quién lee el código fuente de Linux por la razón opuesta. La fuente de GNU/Linux está ampliamente disponible y se descarga con frecuencia, pero eso no significa que se lea o estudie. Los CD de Red Hat vienen con un CD lleno de binarios precompilados y el segundo lleno de código fuente. ¿Quién sabe quién mete el segundo CDROM en su computadora? Todos son libres de hacerlo en la privacidad de su propio cubículo, por lo que no se mantienen registros. Si tuviera que apostar, diría que las proporciones de cognoscenti a usuarios desinformados en los mundos de Linux y Microsoft son bastante similares. Leer el código fuente requiere demasiado tiempo y demasiado esfuerzo para que muchos en el mundo de Linux aprovechen el enorme río de información disponible para ellos. Si esto es cierto o al menos casi cierto, entonces ¿por qué el mundo del código libre ha podido moverse mucho más rápido que el mundo de Microsoft? La respuesta no es que todos en el mundo de la fuente libre estén usando la Fuente, es que todos son libres de usarla. Cuando una persona necesita hacer una pregunta o rascarse una picazón, la Fuente está disponible sin hacer preguntas ni consultar a ningún abogado. Incluso a las 3:00 a.m., una persona puede leer la Fuente. En Microsoft y otras corporaciones, a menudo necesitan esperar a que la persona que dirige esa división o sección les dé permiso para acceder al código fuente. Hay otras ventajas. El mundo del código fuente gratuito dedica una gran cantidad de tiempo a mantener el código fuente limpio y accesible. Un programador que trata de salirse con la suya con una mano de obra descuidada y una mala documentación pagará por ello más tarde cuando otros lleguen y hagan miles de preguntas. Los desarrolladores corporativos, por otro lado, tienen capas de secreto y burocracia para aislarlos de preguntas y comentarios. A menudo es difícil encontrar al programador adecuado en la madriguera de conejos de los cubículos que tiene el código fuente en primer lugar. Se citó a un programador de Microsoft diciendo: "Un desarrollador de Microsoft que trabaja en el sistema operativo no puede rascarse la picazón que tiene con Excel, ni el desarrollador de Excel puede rascarse la picazón con el sistema operativo; le llevaría meses descubrir cómo para compilar, depurar e instalar, y probablemente no pudo obtener el acceso adecuado a la fuente de todos modos". Este problema es endémico en las corporaciones. Los clientes están comprando la versión binaria, no el código fuente, por lo que no hay razón para disfrazar las alas detrás del escenario del teatro. Sin embargo, después de un tiempo, la gente cambia de cubículo, se muda a otras corporaciones y la información desaparece. Si bien las empresas intentan mantener bases de datos de código fuente para sincronizar el desarrollo, los esfuerzos a menudo fracasan. Después de que Apple canceló el desarrollo de su dispositivo portátil Newton, muchos usuarios de Newton estaban furiosos. Habían basado grandes proyectos en la plataforma y no querían reiniciar su trabajo. Muchos preguntaron si Apple podría simplemente regalar el código fuente del sistema operativo en lugar de dejar que se pudra en algún disco duro. Apple eludió estas solicitudes, y esto hizo que algunas personas se volvieran aún más cínicas. Un desarrollador externo especuló: "Probablemente no sería posible volver a crear el sistema operativo. Todos los desarrolladores se fueron. Todos fueron a Palm, y probablemente no podrían volver a armarlo si quisieran". Por supuesto, las corporaciones intentan combatir esta podredumbre haciendo que sus programadores hagan un buen trabajo al principio y escriban mucha documentación. En la práctica, esto falla un poco porque no es recompensado por la cultura del secreto. Conozco a un programador que trabajó para un proyecto en el MIT. El jefe pensó que estaba siendo inteligente al solicitar comentarios sobre cada procedimiento y, de hecho, lo hizo cumplir con un robot de escaneo de texto automatizado que revisaría el código fuente y contaría los comentarios. Mi amigo se dio la vuelta y conectó una versión de los populares chatterbots de inteligencia artificial como Eliza y canalizó las respuestas al campo de comentarios. Entonces todos estaban felices. El chatterbot llenó el campo de comentarios, la policía de comentarios automatizada encontró algo vagamente inteligente y el programador pasó su tiempo libre haciendo otras cosas. El jefe nunca descubrió el problema. Los programadores son iguales en todo el mundo, y unirse al mundo del código libre no los hace mejores personas ni destruye su descaro. Pero los penaliza si otros vienen e intentan usar su código. Si es inescrutable, descuidado o difícil de entender, los demás lo ignorarán o los acosarán con preguntas. Eso es un fuerte incentivo para hacerlo bien. 11.4 Código abierto y bombillas Las limitaciones del poder del código abierto podrían resumirse en la respuesta a la pregunta "¿Cuántos desarrolladores de código abierto se necesitan para cambiar una bombilla?" La respuesta es: 17. Diecisiete para discutir sobre la licencia; 17 para discutir sobre la muerte cerebral de la arquitectura de la bombilla; 17 para discutir sobre un nuevo modelo que abarque todos los modelos de iluminación y que facilite el reemplazo de velas, fogatas, luces piloto y tragaluces con el mismo mecanismo fácil de extender; 17 para especular sobre la conspiración industrial secreta que asegura que las bombillas se quemarán con frecuencia; 1 para finalmente cambiar la bombilla; y 16 que deciden que esta solución es lo suficientemente buena por el momento. El modelo de desarrollo de código abierto es una excelente manera para que personas muy creativas produzcan software fascinante que rompa paradigmas y establezca nuevos estándares de excelencia. Sin embargo, puede que no sea la mejor manera de terminar trabajos aburridos como ajustar una interfaz gráfica o asegurarse de que el software de programación utilizado por los ejecutivos sea lo más resistente posible. Si bien el modelo de desarrollo abierto ha abordado con éxito el problema de la creación de excelentes herramientas, de la creación de un sistema operativo sólido y de la creación de aplicaciones de electrodomésticos muy flexibles, como navegadores web, está muy lejos de ganar la batalla por el escritorio. Algunas personas de código libre dicen que las aplicaciones de escritorio para usuarios promedio están a la vuelta de la esquina y la siguiente parada en el Free Software Express. Otros no están tan seguros. David Henkel-Wallace es uno de los fundadores de la empresa de software libre Cygnus. Esta empresa basó su éxito en el apoyo a las herramientas de desarrollo creadas por la Free Software Foundation de Stallman. Firmarían contratos con empresas para responder cualquier pregunta que tuvieran sobre el uso de las herramientas de software libre. Al principio, las empresas se negaban a pagar por el soporte hasta que se dieron cuenta de que era más barato que contratar personal técnico interno para hacer el trabajo. A John Gilmore, uno de los cofundadores, le gustaba decir: "Hacemos que el software gratuito sea asequible". La empresa creció ayudando a los fabricantes de chips a ajustar el compilador FSF, GCC, para su chip. A menudo, esta era una tarea difícil y ardua, pero era muy valiosa para el fabricante del chip porque los clientes potenciales sabían que podían conseguir un buen compilador para producir software para el chip. Si bien Intel continuó dominando el escritorio, el mercado de chips integrados para productos como estufas, hornos de microondas, VCR u otras cajas inteligentes creció a medida que los fabricantes lanzaban nuevos chips para que fuera más barato y más fácil agregar funciones inteligentes a las cajas que antes eran tontas. . Los ingenieros de las empresas a menudo estaban encantados de descubrir que podían seguir usando GCC para escribir software para un nuevo chip, y esto facilitó la venta del chip. Cygnus siempre distribuyó a la Fuente sus modificaciones a GCC como exigía la Licencia Pública General de GNU. Esto no fue un gran problema porque los fabricantes de chips querían que el software fuera gratuito y fácil de usar para todos. Esto convirtió a Cygnus en uno de los centros de intercambio de gran parte de la información sobre cómo funcionaba GCC y cómo hacerlo más rápido. Henkel-Wallace se apresura a elogiar el poder del código fuente disponible públicamente para los clientes de Cygnus. Después de todo, todos eran programadores. Si veían algo que no les gustaba con GCC, sabían cómo hurgar en el interior y arreglarlo. Ese era su trabajo. "[GCC] es una herramienta de compilación y fue utilizada por los desarrolladores, por lo que fueron lo suficientemente inteligentes. Cuando algo molestaba a alguien, lo solucionábamos. Había un acoplamiento muy estrecho", dijo. Sin embargo, se pregunta abiertamente si el procesador de textos promedio o el usuario de herramientas básicas podrá hacer algo. Él dice: "La desventaja es que es difícil transferir ese conocimiento con un usuario que no es un desarrollador. Digamos que Quicken tiene una característica especial para los abogados. Necesita tener un modelo más formal porque los abogados no son desarrolladores. (Somos afortunados en ese sentido)". Es decir, los abogados no están lo suficientemente instruidos en las entrañas del desarrollo informático para quejarse de la manera correcta. Un programador podría decir: "GCC está optimizando demasiado código muerto que en realidad no está muerto". Otras personas en la comunidad de GCC sabrían lo que está pasando y podrían solucionarlo. Un abogado podría simplemente decir: "Quicken arruinó mi facturación y me hizo facturar veintiséis horas en un día". Esto no identificaría el problema lo suficiente como para que la gente lo resuelva. El abogado no entiende el interior del software como el programador. En situaciones como esta, Henkel-Wallace cree que un equipo de estilo corporativo puede ser el único que puede estudiar los problemas lo suficientemente a fondo como para encontrar soluciones. Intuit, el fabricante de Quicken, es bien conocido por grabar en video a muchos usuarios estándar que usan su producto por primera vez. Esto les permite identificar los puntos ásperos del programa e identificar los lugares donde podría mejorarse. Este incesante alisado y pulido ha convertido al producto en una de las herramientas más conocidas y utilizadas en los escritorios. No está claro que los no programadores podrían haber logrado la misma calidad trabajando junto con la Fuente a su disposición. 11.5 La Fuente Hay corrientes más profundas y filosóficas en el mundo del código abierto. La industria de las computadoras personales tiene solo unas pocas décadas. Si bien ha avanzado rápidamente y ha resuelto muchos problemas, todavía hay muy poca comprensión del campo y de lo que se necesita para que una computadora sea fácil de usar. Esta ha sido la gran lucha, y el mundo del código libre puede ser una parte esencial de este viaje. Tim O'Reilly, el editor de muchos libros y un defensor vocal del mundo del código abierto, dice: "Hemos pasado por este período de pensar en los programas como artefactos. Un objeto binario es una cosa. El código abierto es parte del pensamiento de las computadoras como un proceso". En otras palabras, hemos hecho un buen trabajo al crear computadoras que se pueden comprar listas para usar y software que se puede comprar en cajas retractiladas, pero no hemos hecho un buen trabajo al hacer posible que la gente hable con Las máquinas. En gran medida, el proceso ha sido una búsqueda de un buen lenguaje para comunicarse con la computadora. La mayor parte del desarrollo reciente siguió al trabajo en Xerox PARC que creó algunas de las primeras interfaces gráficas de usuario. Apple siguió su ejemplo y Microsoft siguió a Apple. Todos aceptaron la idea de que crear una imagen clara que representara los archivos en una pantalla sería una metáfora clara que facilitaría la interacción de las personas con las computadoras. Arrastrar un archivo a la papelera era de alguna manera más fácil para las personas que escribir un comando críptico como "rm". En la década de 1980, ese tipo de pensamiento gráfico se consideraba brillante. Las imágenes eran más bonitas que las palabras, por lo que era fácil mirar la bonita y limpia pantalla de Macintosh y pensar que era más fácil de usar simplemente porque era más fácil de mirar. Pero las características bonitas simplemente escondían una gran cantidad de complejidad, y aun así era difícil trabajar con las máquinas. Don Norman, un ingeniero de interfaz humano/computadora de Apple, escribió una vez una discusión fascinante sobre el diseño de la compañía del interruptor de encendido y apagado de su computadora. Señaló que el interruptor no podía ser un simple interruptor de alimentación que pudiera apagar y encender porque la computadora necesitaba orquestar el procedimiento de encendido y apagado. Necesitaba cerrar archivos, almacenar datos de forma segura y asegurarse de que todo estuviera listo para comenzar de nuevo. El diseño del interruptor de encendido se hizo aún más complicado por el hecho de que se suponía que funcionaba incluso cuando la computadora fallaba. Es decir, si una mala programación desordena la memoria y estropea el procesador central, se supone que el interruptor de encendido apagará la máquina. Por supuesto, la computadora ni siquiera pudo sumar dos números después de fallar, por lo que ni siquiera pudo comenzar a realizar todo el trabajo administrativo necesario para apagar la máquina. El Macintosh en el que escribí este libro puede fallar tanto que el interruptor de encendido no funciona, y solo puedo reiniciarlo metiendo un clip en un agujero oculto. El trabajo de Norman muestra lo difícil que puede ser idear un lenguaje simple que permita a los humanos y las computadoras comunicarse sobre una tarea que solía resolverse con un interruptor de luz de dos posiciones. Este problema se puede ver en toda la industria. Un tutor de informática me dijo: "Estoy tan cansado de decirle a la gente que apague sus computadoras presionando el botón 'Inicio'". Microsoft Windows coloca todas las funciones en un árbol de menús que surge de un botón llamado "Inicio". Esta puede haber sido una excelente manera de capturar el potencial para hacer cosas nuevas que sintieron que estaban vendiendo, pero sigue siendo confuso para todos los nuevos usuarios de las máquinas. ¿Por qué deberían presionar Start para detenerlo? La búsqueda de este control a nivel de Fuente puede tomar muchos giros extraños. A mediados de la década de 1980, los programadores de Apple se dieron cuenta de que habían ido demasiado lejos cuando simplificaron la interfaz de la Mac. El lenguaje visual de señalar y hacer clic en los íconos puede haber sido excelente para los nuevos usuarios, pero estaba empezando a frustrar a los usuarios sofisticados que querían automatizar lo que hacían. Muchos diseñadores gráficos se encontraban haciendo repetidamente los mismos pasos con los archivos de imagen, y era aburrido. Se preguntaron, ¿por qué la computadora no podía simplemente repetir todas sus instrucciones y ahorrarles todo eso de apuntar y hacer clic? En cierto sentido, los usuarios sofisticados de Mac buscaban la Fuente. Querían poder escribir y modificar programas simples que controlaran su software. El problema era que la pantalla gráfica de la Mac no era realmente adecuada para la tarea. ¿Cómo describirías mover el mouse y hacer clic en un botón? ¿Cómo se te ocurre un lenguaje que signifique "recorta esta muestra y pégala aquí"? Las acciones eran tan visuales que no había palabras ni lenguaje para describirlas. Este problema confundió a Apple durante los siguientes 10 años, y la compañía está terminando poco a poco su solución, conocida como AppleScript. La tarea no ha sido sencilla, pero ha sido gratificante para muchos que utilizan sus Macintosh como cadenas importantes en las líneas de producción de datos. Apple incluyó instrucciones para mover íconos a ubicaciones, cargar archivos, cambiar el color de los íconos e iniciar programas con otros. La mejor extensión fue un truco que hizo que el AppleScript fuera "grabable". Es decir, podría encender una grabadora antes de pasar por los diferentes trabajos. La Mac llevaría un registro de tus acciones y generaría un programa que te permitiría repetir lo que estabas haciendo. Aún así, los resultados estuvieron lejos de ser simples de entender o usar. Aquí hay un fragmento simple de código AppleScript que seleccionará todos los archivos en un directorio con la palabra "Speckle" en su título y los abrirá con otra aplicación: Esta fuente se puede ejecutar una y otra vez para finalizar una tarea. Poner esta herramienta a disposición de los usuarios ha sido un reto para Apple porque les obliga a facilitar la programación. Muchas personas aprenden AppleScript activando la función de grabación y observando lo que sucede cuando hacen lo que harían normalmente. Luego, aprenden a insertar algunos comandos más para realizar la tarea con éxito. Al final, se convierten en programadores que manipulan la Fuente sin darse cuenta. O'Reilly y otros creen que el esfuerzo de código abierto es solo una extensión de esta necesidad. A medida que las computadoras se vuelven más y más complejas, los desarrolladores deben hacer que el funcionamiento interno sea cada vez más abierto para los usuarios. Esta es la única forma en que los usuarios pueden resolver sus problemas y usar las computadoras de manera efectiva. "La vanguardia de la industria informática está en el infoware. No hay mucho jugo en el tipo de aplicaciones que escribimos en los años ochenta y noventa. A medida que tengamos reconocimiento de voz, iremos aún más en la dirección del código abierto, " él dice. "Cada vez hay más recetas escritas. Estas van a migrar a capas cada vez más bajas de software y la computadora tendrá un vocabulario cada vez más grande". Es decir, cada vez más la Fuente necesitará volverse transparente para los usuarios. No es solo una batalla política de Microsoft contra el mundo. No es solo la lucha de un programador meter la nariz en cada rincón de un dispositivo. Se trata de la usabilidad. Cada vez más personas necesitan escribir programas para enseñar a las computadoras a hacer lo que necesitan hacer. El acceso a la Fuente es la única forma de lograrlo. En otras palabras, las computadoras se están convirtiendo en una parte cada vez más grande de nuestras vidas. Su lenguaje es cada vez más comprensible para los humanos, y los humanos hablan mejor el lenguaje de las computadoras. Estamos convergiendo. Cuanto más lo hagamos, más importante será la Fuente. No hay nada que Microsoft o las empresas estadounidenses puedan hacer al respecto. Van a tener que acompañarlos. Van a tener que darnos acceso a la Fuente.