Libro abiertoInicio de Lecturas en español



"Ya sabemos que el Open Source no depende del código; depende de la Comunidad"

Una entrevista con Wilfredo Sánchez, ex-desarrollador principal del proyecto Darwin (Macintosh OS X)

Más información: eiohel@openoffice.org | ver condiciones para su reproducción


Editor's Column

Louis Suarez-Potts

15 de febrero de 2001

En un artículo anterior, Reviewing the Others: Darwin, analicé de manera breve el ambicioso proyecto Darwin de Apple. Ese artículo fue el primero en una serie esporádica sobre proyectos de código fuente abierto grandes; se entiende que la serie debe aportar una visión completa del tema para toda la comunidad de OpenOffice.org. La entrevista reproducida abajo nos comunica la perspectiva de un desarrollador principal sobre la cuestión del Open Source.

Wilfredo Sánchez era, hasta hace poco, el desarrollador principal del proyecto Darwin, el corazón de código fuente abierto del nuevo sistema operativa OS X ("diez") de Apple. Fred mantiene todavía los lazos con Darwin, donde participa como desarrollador activo, pero ya no está con Apple. En la actualidad, como el lo dice, es "el director de programas de código fuente abierto de KnowNow, Inc", donde está "trabajando en la tecnología para permitir lo que se ha llamado el 'web de dos sentidos'." Fred, de modo muy amable, encontró tiempo en su agenda para responder a algunas preguntas que hicé por correo electrónico la semana pasada. Mis preguntas están en cursiva; sus respuestas en letra normal.

Una ojeada a tu curriculum demuestra que has participado como desarrollador y director de proyecto en casi todos los proyectos importantes de código fuente abierto de los últimos diez años. ¿Qué es lo que inicialmente te llamó la atención del Open Source? ¿Y los temas que te atrajeron al principio, todavía son vigentes?

Mi interés data de la universidad. Era un estudiante en el MIT (Instituto de Tecnología de Massachusetts) en 1990, y lo que único que sabía de los ordenadores era cómo usar unos pocos programas en clónicos IBM PC que funcionaban bajo DOS, y antes que aquello, con el Atari 800 y el TRS-80. No sabía mucho sobre la programación. Así que llegué al MIT con un montón de floppies PC (los floppies -"disquetes blandos"- de verdad), y tenían esos ordenadores extraños sin disqueteras (máquinas DEC VAX y IBM PC/RT), y estaba yo completamente perdido.

Lo que enseguida aprendí es que el software que emplea la gran mayoría de los usuarios de todo el mundo no es todo el software que hay. De hecho, en muchos aspectos, no es el mejor que hay. Y lo que aprendí mucho después es que casi todo se creaba por medio del trabajo colaborativo entre personas que mayoritariamente sólo querían ver lo que podían hacer con el software. Supongo que no era el Open Source en el sentido moderno de la frase, pero era bastante parecido, y las raices de lo que hoy en día es el Open Source vienen de aquellos proyectos.

También me encontré un par de veces (él no se acordará) con RMS (Richard Stallman) y a mucha gente que contribuía de manera habitual al proyecto GNU, que nació en MIT, así que desde entonces he tenido mucho respeto por lo que Richard y el resto de dicha comunidad han hecho para crear un conjunto de software que puede compartirse y en el cual la gente puede collaborar sin las restricciones impuestas en la comunidad Unix, donde tus amigos y tú teníais que pagar mucho dinero para poder participar.

Me gustaba mucho la idea de poder contribuir a toda esta actividad, pero dado que no programaba mucho, más que nada usaba el software y pensaba que era lo que más se llevaba. Tardé mucho en encontrar algo que podría hacer de manera útil. De hecho, no tuve ocasión de contribuir al Open Source de manera significativa hasta que llegué a Apple en 1997.

Cuando empecé en Apple, la gente de NeXT acababan de llegar al campus Apple, y estábamos trabajando sobre la versión Rhapsody Developer original. Lo primero que ví era que teníamos un verdadero cargamento de software en el sistema que me resultaba familiar, pero gran parte de todo aquello era anticuado o incompleto.

Había utilizado el NeXTStep en el Media Lab de MIT y otra vez en el Disney Online, y molaba mucho el hecho de que tenía el entorno Unix debajo, pero cada vez que querías hacer una cosa estándar de Unix, tenías que ajustarlo un poco. Así que veías excepciones de casos especiales en los scripts de autoconf para NeXTStep, donde es casi lo mismo que cualquier otro (4.3) sistema BSD, pero lo hacía un poquito diferente, o algo faltaba. Y después de cierto tiempo, estos ajustes empiezan a sumar. Habíamos heredado el software en Apple, y pensaba que podía ayudar limpiándolo algo. Así que buscaba un tar GNU más nuevo, o añadía un tcsh, porque todo buen Unix debe tener el tcsh... y después el BASH... y entonces el Perl... y no podía faltar el Apache, y seguía y seguía. Y hablé con unos amigos del MIT quienes me engancharon al NetBSD y asumí el objetivo de intentar sincronizar con la comunidad de usuarios de BSD.

Lo que me parecía obvio en ese momento era que necesitabamos mantener una relación continuada con los proveedores avanzados del software, para que pudíesemos abogar por nuestros cambios y coordinar las versiones nuevas y evitar el problema con el cual el NeXT chocó frontalmente, debido básicamente a código divergente, que hace que sea muy complicado mantenerte al día con lo que está pasando en otros sitios. Escribí un paper sobre este tema, empleando el Rhapsody como caso de estudio y lo presenté en FREENIX durante el USENIX 1999. Como resultado del trabajo que estaba haciendo, me involucré en muchos de los proyectos que aportaban el código que utilizaba. Y así es cómo me involucré con el Open Source. Tardé gran parte de los años 90 en conseguirlo.

Tu involucración te ha dado una perspectiva extraordinaria sobre el movimiento, sus jugadores principales, y la gente que de verdad lo hacen funcionar: los desarrolladores: ¿Cómo caracterizas los cambios (si ha habido) que han sucedido entre y para los desarrolladores desde tu inicio?

Pues, creo que mientras todavía estaba aprendiendo, había gente que trabajaba en lo que esencialmente era software propietario (aunque todavía abierto de manera significativa), software como el Unix BSD en Cal (la Universidad de California, Berkeley); y había gente que querían hacer que el software no sólo estuviera abierto, también libremente compartido con todos sin preocuparse de un grupo centralizado que se les podría quitarlo, como el proyecto GNU. El proyecto GNU era un esfuerzo realmente importante, porque el software libre no era la norma, y estaban trabajando muchísimo para asegurarse que habría código libre suficiente disponible para que la gente pudiera aprovecharlo en hacer trabajos de verdad y resolver problemas reales, y emplearon una licencia especial para garantizar la libertad del código. Ese software sigue siendo importante hoy en día, por supuesto, particularmente en el caso de Linux.

Pero creo que sabemos algo hoy que no necesariamente sabíamos entonces: el componente crítico del Open Source no es el código. La verdadera mágia está en la comunidad que emplea y desarrolla el software. Si coges una buena idea, y creas una buena comunidad alrededor de ella, puedes terminar teniendo un software excelente, y por lo que he podido ver, no hay persona ni empresa que sea capaz de quitártelo. La tésis del paper que escribí para FREENIX era fundamentalmente que si existe un buen proyecto Open Source, cualquier empresa que coge el código del proyecto, que lo trabaja, y que elige no formar parte de la comunidad, se quedará con un producto menos atractivo que el que la comunidad conseguirá, porque el Internet facilita comunidades muy grandes y diversas que de manera inevitable pueden trabajar más rápido que una empresa individual, por lo menos en los espacios de trabajo [problem spaces] que han sido configurados como propios por los proyectos Open Source.

La otra cara de la moneda es que los proyectos Open Source pueden beneficiarse enormemente cuando consiguen que empresas apliquen sus energias al software abierto en lugar de inventar algo en paralelo; estas empresas tienen muchos recursos que pueden dedicar a problemas de importancia. El Apache Software Foundation es un maravilloso ejemplo de esto; hemos visto esfuerzos verdaderamente magníficos por parte de empresas como IBM, Sun y Covalent que han ampliado los espacios de trabajo en los cuales nuestra comunidad se esmera y han aumentado la calidad y la utilidad del código de manera importantísima. No sólo han contribuido el software, también aportan el personal a jornada completa para nuestros proyectos, y mientras es indudable que ha habido roces por el camino, estoy convencido que todas las partes que han participado -incluyendo por supuesto todos los usuarios- están mucho mejor situados como consecuencia de esta colaboración.

Por otro lado, creo que algunos de los mejores activos del espacio Open Source -los temas GNU- todavía está con la idea de que es la licencia que protege el software. Esto no está mal en sí, pero la licencia GNU tiene en mi opinion problemas legítimos para personas o empresas que no pueden, por cualquier razón, aceptar los términos para el software que no sea aquello del código GNU original, y no creo que excluir a esas empresas sea lo mejor para una comunidad abierta. Es decir, en este contexto, la GPL (en su forma actual) llega a inhibir que se comparte el código, en lugar de facilitarlo.

De hecho, es más complicado que eso: el proyecto GNU propone sus ideas particulares de libertad en el software, y su objetivo no es exactamente garantizar que el mejor software del mundo se haga de esta manera colaborativa, que es lo que entiendo yo como el verdadero Open Source. Así que no es una casualidad que las cosas salgan de este modo; sólo que creo que es desafortunado, porque mi interés está en compartir el código y crear comunidades. También creo que muchos autores GPL no han pensado el tema hasta el final. Lo que creo percibir es una especie de "mayoría de edad", tanto para el modelo de desarrollo Open Source como -y esto es fascinante- para la industria del software y cómo puede encajarse en todo esto. Es un momento apasionante para ser un desarrollador de software.

El Open Source depende, de manera notoria, de la "comunidad." Pero no está claro quiénes son la comunidad, quiénes la componen, y cómo se constituye. ¿Puedes dar alguna pista sobre las comunidades Open Source? Es decir, ¿cómo se forma una comunidad de desarrolladores, cuáles son sus elementos clave, y cómo funciona el todo?

Como te dije antes, creo que la comunidad es un componente fundamental de un proyecto Open Source, así que esta pregunta es muy buena, aunque no muy facil de contestar. Como yo lo veo, una comunidad es un grupo de personas con algún interés en un espacio de trabajo dado y una visión para poder con él y saber qué hacer con el resultado. Suelen agruparse alrededor de un código, porque el código define unos bonitos límites a la extensión del espacio, pero puede que el código se deseche y se reescriba o se modifique de otra manera y se extienda para reflejar la visión del grupo, que evolucione en la medida que los miembros descubran nuevas ideas, o los componentes cambien.

Las comunidades con más éxito que yo conozco tienden a tener unas características comunes: tienden a tener un grupo "corazón", compuesto de los desarrolladores más activos y también de otras personas que se les conoce como entendidos del espacio de trabajo. El grupo "corazón" y el código son lo que aportan la continuidad y la dirección, y más o menos representan la visión de todo el grupo.

Hay muchos modelos organizativos diferentes de various proyectos Open Source, y realmente no soy experto en el que mejor funciona, dado que sólo he ayudado a crear uno. Para Darwin, tuvimos un grupo "corazón" bastante evidente, siendo las personas tech del equipo Core OS en Apple, ya con responsabilidad para el código; y la visión inicial se ha definido de manera contundente por el producto Mac OS: el papel primario de Darwin es apoyar el avance de Mac OS. Puede que esto parezca demasiado estrecha, pero creo que la visión es correcta; más de 100.000 personas compraron el Mac OS X Public Beta, y me imagino que la versión definitiva a punto de lanzarse tendrá una base de instalaciones importante para finales de año. Esto significa que habrá mucha gente con algún interés en ver que el sistema mejore, y no está nada mal que la gente vaya picando así.

Lo más interesante es ver si el grupo "corazón" de Darwin crecerá para incluir a gente fuera de Apple, y de esta manera permitir que la visión se extienda más allá de los límites de lo que está haciendo Apple con Mac OS. No digo los que trabajan en el código [los committers], que ya están, sino más bien si Apple será capaz de permitir que otros miembros de la comunidad fuera de la empresa tomen la iniciativa.

El mejor ejemplo de una nueva comunidad formándose que he visto es el proyecto Subversion en CollabNet. Karl Fogel y algunos gurus más del área de control de código fuente se juntaron y empezaron a diseñar algo fundamentalmente mejor que el estándar actual, el CVS (Concurrent Versions System). Y han hecho un gran trabajo. Inicialmente se mantuvo, de manera intencionada, un grupo pequeño, por medio de no hacer mucha publicidad, no con la idea de esconderse, simplemente con el objetivo de poder definir bien la visión antes de que entraran más cocineros en la cocina. Desde entonces he visto todo tipo de progresos, algunas ideas realmente maravillosas, y sinceramente creo que cuando hayan acabado, cambiaré a Subversion, y jamás volveré a CVS en la vida.

Hay un elemento de polvos mágicos en cómo se gestionó todo aquello, algo que no entiendo del todo, así que no sé si sería capaz de reproducirlo, pero era increíble verlo, y estoy a la caza de otros ejemplos para que pueda aprender de ellos.

Existe otro problema que tiene un proyecto Open Source y que es eso de conseguir nuevos miembros. ¿Cómo has podido conseguirlo? ¿Qué estrategias has empleado?

Esto nos devuelve a la economía del Open Source, y los desarrolladores son un recurso finito. Las comunidades se alimentan por necesidad. Si no puedes conseguir miembros, quizás es porque no existe una demanda. Y no creo que el crecimiento sea un requísito. No sé cuántas personas tiene el fetchmail hoy para mantenerlo, pero no creo que necesiten otros 20 desarrolladores.

Puede ser duro para nuevos proyectos, porque hay un problema de arranque: necesitas el código para que haya usuarios que dependan de él. Esto alimenta al conjunto de los desarrolladores, que escriben el código. Así que tiene que haber alguien que sea el primer desarrollador para escribir código suficiente y ayudar a que otras personas se lancen a ello. Una vez conseguido ésto último, un buen proyecto se autoalimenta.

Hay personas que creen que Open Source significa que haces un tarball y una licencia decente, lo colocas en un servidor ftp y ya lo tienes. Quizás para estar a la última moda es suficiente, pero es radicalmente falso si crees que lo importante es la comunidad. Debes limpiar el código (para lecturabilidad, documentación, el lenguaje de mal gusto inevitable, las complicaciones legales, los nombres internos de código, etc.). Debes darte a conocer. Debes fácilitar el proceso para la gente que se interesan lo suficiente para querer contribuir mejoras, para que no se te escapen.

Así que necesitas cosas como listas de correo, servidores CVS y más, pero lo que es mucho más importante, implica un compromiso continuo con la comunidad que creas para que puedas ayudarles a la gente que quiera ayudarte a ti a hacer el código mejor, y todo esto incluye el convencer a tus desarrolladores internos que deban dedicar algo de su tiempo en ayudar de vez en cuando a gente que no conocen. Puedes conseguir una infraestructura excelente en SourceForge, pero no se crea una comunidad sólo con la infraestructura.

Y ésa es la clave. No es una operación de poca monta convertir un proyecto en Open Source. Implica un trabajo real y gente real de manera continuada. La gente se pregunta por qué una empresa no se convierte un código caducado en Open Source, y aquí tenemos el porqué. Si no tienes los recursos para invertir, no siempre se puede justificar la iniciativa. De verdad, no es fácil hacerlo; he hablado con gente en otras empresas también para confirmarlo.


NOTA: Condiciones para la publicación y difusión posterior del artículo:

Desde el subproyecto native-lang/es de OpenOffice.org, agradecemos la colaboración y la generosidad del propietario del copyright.

arriba



Libro abiertoInicio de Lecturas en español