Gentoo Logo

Renuncia de responsabilidad: La versión original de este artículo fue publicada por IBM developerWorks y es propiedad de Westtech Information Services. Este documento es una versión actualizada del artículo original y contiene mejoras introducidas por el Equipo de Documentación de Gentoo.
Este documento carece de soporte activo.


Creando la distribución. Parte 1

1.  El nacimiento de la distribución Gentoo Linux

Linux y yo

Hay un momento en el que para un entendido en Linux, éste se convierte en algo más que un nombre y se muestra como algo más maravilloso, potente y truculento que cualquier otra cosa que un desarrollador se haya encontrado. Mi revelación vino mientras estaba trabajando en la Universidad de Nuevo México como administrador de sistemas. Nuestros servidores NT se comportaban bastante bien y tuve algún tiempo extra en mis manos. Instalé Debian en un servidor Pentium 166 y comencé a aprender ... y a aprender y a aprender y a aprender. Y entonces me quedé enganchado.

Primero aprendí los entresijos básicos de Linux: cómo manejarse, hacer copias de seguridad, correr Samba, etc. Entonces configuré qmail y Apache y aprendí python y programación de la shell. Construí una Intranet departamental. Instalé Linux en mi casa y probé diferentes distribuciones. Finalmente opté por Stampede Linux. Ya sabe como va la progresión: primero luchas por adquirir lo básico de Linux; luego cuando tienes un conocimiento decente, personalizas tu Linux, aprendiendo sobre la marcha. Ya que Linux no tiene nada que ocultar, puedes explorar la tecnología y herramientas que lo hace funcionar mientras mejoras tu fluidez en Linux.

Linux es acerca del potencial

Linux ofrece algo que nunca antes había visto. Si tuviera que expresar ese concepto mágico en palabras, lo llamaría potencial: el potencial para cambiar, para mejorar, para arreglar cosas, y por supuesto, incluso para romper cosas. Conforme actualizaba a las nuevas versiones del núcleo comprobé que Linux mejoraba delante de mis ojos y se transformaba cada día. ¡Y yo quería seguir!, era parte de la transformación. Era divertido.

Si es como yo, antes de ser expuesto a Linux y el código abierto, esperaba que esas grandes compañías en Redmond y Cupertino le proporcionaran un sistema operativo de última generación que finalmente funcionara exactamente como quería. Pero, sorpresa, ese sueño nunca se convirtió en realidad. Y mientras estábamos esperando, llegó Linux. Aunque tenía bastantes filos ásperos, nos daba algo para nosotros chicos y chicas hacker que podíamos perfeccionar mientras esperábamos por el siguiente gran evento. Y sonriendo todo el rato continuamos hackeando.

Linux tiene que ver con la gente

Lo siguiente que aprendí era que Linux tiene que ver con la gente. ¿No es esto bueno? Linux no es solo un puñado de líneas de código. Es una comunidad. Confiamos en esta comunidad para dar respuesta a nuestras preguntas, y llegamos a formar parte de la comunidad cuando empezamos a ayudar a otros contribuyendo con nuestro tiempo y conocimientos.

IRC (Internet relay chat) es un gran lugar para conocer gente y gastar cantidades enormes de tiempo. El canal #stampede en irc.openprojects.net llegó a ser mi lugar frecuentado oficial. Ahí fue donde haría mis preguntas sobre Linux. También fue donde empecé a ayudar a otros. #stampede necesitaba usuarios experimentados en Linux para ayudar a los principiantes quién había conseguido instalar la distribución. Como es común en IRC, mucha de la gente con experiencia en Stampede habían perdido su entusiasmo por contestar (una y otra vez) preguntas de principiante. Estaba tan entusiasmado, por conocer realmente las respuestas a esas preguntas de los principiantes, ¡que no podía resistirme a ayudar!. Y así fue como me involucré en Stampede. Era simplemente otro tipo que quería contestar preguntas. Desde luego no era completamente altruista, ya que también me ayudaba a mi mismo a tener un nivel de conocimientos de Linux tal como el que el más experimentado del canal (¡sin mencionar los propios desarrolladores!) pudiera ofrecer.

Enrolándose

Cuando la gente me pregunta cómo enrolarse en un proyecto de código abierto, les digo que encuentren un lugar en el que puedan ser de ayuda, incluso si es únicamente contestando las preguntas más básicas acerca de Linux. Un deseo sincero de ayudar a otros es una gran entrada en la comunidad Linux porque este sentimiento está en el corazón de todo desarrollo de código abierto (incluyendo Linux). Cuanto menos así debería ser.

A lo largo del camino inevitablemente encuentras gente que sabe más que tú. Y debes aprender de ellos cómo los principiantes continúan aprendiendo de ti. También es cierto que mientras ganas experiencia te encuentras oportunidades de ayudar de nuevas formas. Quizá alguno de los desarrolladores de proyectos que te encuentras sugiera algo, o incluso pida ayuda. Te pueden incluso invitar a que seas parte del equipo de desarrollo. Si estas centrado en ayudar a otros, éstos estarían locos si te ignoraran. Si estás ayudando a mucha gente, seguramente seas percibido en la comunidad. Esto fue lo que sucedió entre el proyecto Stampede y yo.

Gradualmente me involucré más y más en el desarrollo de Stampede. En breve, fui un desarrollador de Stampede. Con la bendición de skibum (Matt Wood, el principal líder de Stampede), comencé trabajando en una nueva versión del primitivo formato de empaquetamiento .slp de Stampede. Por entonces el formato de empaquetamiento .slp consistía en un fichero .tar.bz2 con un pie añadido al final que contenía información sobre el autor del paquete, una descripción de los contenidos, el creador del paquete, etc. Este enfoque tenía dos serios problemas: los campos eran de longitud fija y el pie realmente no era tan grande, y no había ningún tipo de extensibilidad construida en el formato (no había forma de añadir campos adicionales al formato .slp en el futuro). Obviamente este hecho necesitaba una puesta a punto enorme.

Trabajando con los desarrolladores senior de Stampede, escribí una propuesta de como tratar el problema. Entonces comencé a codificar las herramientas prototipo en Python. El nuevo formato (llamado slpv6) era de alguna forma similar al formato IFF del mundo Amiga. Esta nueva generación del formato .slp permitía 2 32 campos. 2 32 categorías de campos, y una longitud máxima de campo de 2 32 bytes. No solo el formato era muy extensible, era más compacto que el texto plano y fácil de analizar. Tanto texto como datos binarios podían ser almacenados en este formato, lo que permitía muchas posibilidades de cara al futuro. La idea era añadir esta cabecera dinámica de nueva generación al final del fichero, produciendo por lo tanto una nueva generación de formato .slp que serviría a los usuarios de Stampede durante los años venideros manteniendo la compatibilidad con el estándar UNIX de formatos de fichero.

La gente puede volverse fea

El desarrollo de slpv6 iba bien y todos los desarrolladores senior estaban felices con mi progreso. Pero, desafortunadamente, dos desarrolladores Stampede de menor nivel querían controlar el proyecto slpv6. No les gustaba el rumbo que yo estaba tomando, y gastaron la mayor parte de su tiempo insultando el nuevo sistema slpv6. A pesar de que pasé horas en discusiones defendiendo la propuesta ante sus ataques, no fueron capaces de resolver nada. Eventualmente quedó claro que eran naturalmente argumentativos y que no se mostrarían contentos hasta que se optara por su camino. Afortunadamente para mi, mi proyecto tenía la aprobación de los desarrolladores senior de Stampede. Pero estas discusiones empezaron a calar en mi, e hicieron el desarrollo de Stampede muy desagradable. ¡Uff!

No podía ignorar a estos tipos ya que tenía que dejarme caer por #stampede para chatear con desarrolladores de mayor nivel. Cada vez que entraba en el canal, ellos se volvían combativos, tratando de socavar mi trabajo. Usarían técnicas enrevesadas como solicitar reuniones de desarrollo (realmente era solo una oportunidad de insultar mi trabajo ante los desarrolladores senior). También tratarían de pedir una votación, intentando obtener el control de Stampede. Desde luego solo pedirían una votación cuando pensaran que habían convencido a la suficiente cantidad de gente para ponerse de acuerdo con ellos. A lo largo de todo esto, continué mi desarrollo de slpb6. No es necesario añadir que el desarrollo senior admiraba mi trabajo y quería que continuara con él (sin su apoyo no habría sido capaz de sacarlo adelante).

Comprendiendo al freak

Estos dos tipos pertenecen a una categoría de desarrolladores que a mi me gusta llamar "el freak". Pero aunque hicieron que mi desarrollo fuera muy desagradable, también aprendí mucho de tratar con ellos. En este punto me gustaría ofrecer una exposición de los desarrolladores freak, algo como una vista general y extensa: las cualidades que hacen a un freak, el modus operandi del freak, y cómo el líder de desarrollo del proyecto, puede enfrentarse y posiblemente reformar al freak sin ejercer mucho esfuerzo.

Para evitar daño emocional, necesitará un requisito previo: una posición firme. Si no es capaz de enfrentarse al freak en una respetuosa pero firme actitud, no hay esperanza. La meta del freak es controlar lo suficiente de su proyecto para que él o ella se sientan poderosos. El freak usará diversas técnicas para que esto suceda. Primero comenzará criticando con malos modos o se quejará amargamente sobre el proyecto y/o los desarrolladores que trabajan en un proyecto. Entonces se abstendrán de ofrecer ninguna solución constructiva. Tampoco estarán dispuestos a ayudar en el proyecto de ninguna forma hasta que sean promocionados al rol de jefe de proyecto. Su meta es convencerle de darle la mayor autoridad posible para que puedan resolver los problemas que solo ellos, con sus finamente entrenados ojos de freak, pueden ver.

Si la crítica y las protestas no son efectivas, solicitarán una reunión de desarrolladores. Esta será su oportunidad de intentar dividir su equipo de desarrollo en dos facciones. Cuando crean que tienen bastante gente de su lado, pedirán una votación (sabiendo que la ganarán). En caso de no ganar la votación o ésta fuera invalidada, intentarían otra reunión de desarrollo la semana siguiente en la cual tratarían de dividir su equipo de desarrollo. Repetirán este proceso continuamente.

Si el enfoque de las reuniones de desarrolladores no funciona, los freaks se reformarán. Adoptando este rol intentarán hacer más eficiente (léase: socavar) el opresivo y desagradable proceso de toma de decisiones ejecutivo, intentado reemplazarlo por uno más democrático (léase: fácilmente manipulable). Esto a menudo implica convencerle que debe hacer lo que la mayoría de los desarrolladores deseen. Los freaks adoran esto porque no se pueden anular esas votaciones de reuniones de desarrolladores de ninguna forma (¡jajaja!). Si permite que esto suceda, esta básicamente dándole al freak las llaves de su Lexus. Nos quedamos sin poder.

Desde otro punto de vista, los freaks irritarán y distraerán a sus productivos desarrolladores. Entonces convertirán a su equipo en un una masa histérica mientras tratan con gran esfuerzo de reformar la estructura de poder de su proyecto. Si sus esfuerzos son finalmente mitigados, tratarán de reunir la mayor cantidad de detractores y desmembrar su proyecto. ¡Vaya!

Manejando al freak

Puede identificar a estos tipo de forma muy sencilla. son los que no escriben nada de código (ni tienen la intención de hacerlo). En lugar de eso, gastan su tiempo hablando de cosas más importantes. Ya sabe, esas cosas de la gestión. Si es el líder de un proyecto, es muy fácil tratar con ellos. Simplemente dígales que no considerará ninguna propuesta a menos que produzcan algo de código válido. O insista en que están ayudando constructivamente al proyecto actual, lo que incluye obedecer al jefe de proyecto, antes de darles la oportunidad de ofrecer alguna crítica (constructiva). Si escriben buen código o comienzan a ofrecer más ayuda, entonces perfecto. Si no, dígales que abandonen el proyecto. Ellos abandonarán (si los ignora durante el suficiente tiempo), o comenzarán a escribir algo de código y generalmente se volverán más agradables.

Desafortunadamente los desarrolladores senior no se encargan de la gestión de los freaks. En otras palabras, permiten que estos dos tipos me molesten a mi (y a otros) continuamente. Aunque los desarrolladores senior estuvieron siempre a favor de mi trabajo desarrollando, nunca hicieron gran cosa para poner a estos tipos bajo control. Por eso un día decidí que sería más fácil para mi crear mi propia distribución en lugar de aguantar a estos dos freaks. Dejé el desarrollo en Stampede y comencé a hacer planes para producir mi propia distro.

Aunque me sentía un poco extraño por dejar el proyecto a causa de estos dos desarrolladores de bajo nivel, el hecho que no hubiesen sido manejados de forma adecuada indicaba que el proyecto tenía serios problemas de gestión. Si los desarrolladores de alto nivel no querían o no eran capaces de asegurarse que el esfuerzo en el desarrollo de Stampede era agradable y gratificante, entonces yo no quería estar allí.

Comenzando de nuevo

Una vez fuera, suspiré enormemente de relajo. ¡Uau! Finalmente, las cosas se calmaban y paraban. Ahora era el momento de definir que trataría mi distribución y de cómo contribuiría a la escena de las distribuciones Linux. Una de las cosas que me atrajo de Stampede era su rendimiento (gracias al uso del compilador experimental optimizado para Pentium pgcc). Decidí, por tanto enfocar en primer lugar en el rendimiento. Aparte de minimizar la utilización de la CPU, también quería minimizar la sobrecarga. Demasiadas distribuciones (especialmente esas encogidas y envueltas tan populares) habilitan tantos demonios por defecto que te queda muy poca RAM para abrir un xterm a continuación. Quería que mi distribución fuera pequeña e inteligente, y enfocada en maximizar el rendimiento del hardware en el que corriese. Decidí usar un enfoque holístico y acometer el problema del rendimiento desde todos los ángulos.

Pero tenía una seria falta de recursos, ¡ya que era el único desarrollador de mi distribución! ¿Cómo podía crear algo comparable a Caldera o RedHat desde la base, yo solo? La respuesta eran los automatismos. Tenía que escribir guiones para automatizarlo todo, por lo que tendría un consumo de tiempo mínimo en las labores repetitivas. Después de todo, eso es lo que mejor hacen las computadoras ¿no?.

Comprobé rápidamente que escribir escribir guiones simples para el tipo de automatismo que necesitaba no iba a ser suficiente. Necesitaba diseñar un sistema completo para generar una distribución Linux desde cero. Con indecisión la llamé sistema ebuild y me puse a trabajar. El sistema ebuild sería capaz de crear automáticamente todos los binarios de la distribución, automatizando todo, desde el desempaquetado y parcheado de las fuentes hasta su compilación, instalación y empaquetado. Después de obtener un prototipo básico de ebuild funcionando, comencé a crear los guiones ebuild para los componentes clave de una distribución Linux (como gcc, glibc, binutils, util-linux, y sus amigos). Mi equipo de desarrollo Stampede se fue convirtiendo gradualmente en mi propio sistema, ya que había rediseñado los guiones de inicialización (basándome en los guiones de inicialización de Stampede que yo había diseñado previamente) y testeado e instalado cada nuevo paquete que había creado.

Unos meses después, tenía una distribución Linux, completa y autohospedada. La llamé Enoch y me relajé y sonreí feliz. Pero, ¿que pasó con Enoch?, y ¿cómo evolucionó Gentoo Linux?. Acompáñeme en mi siguiente artículo y le contaré la historia de cómo Enoch se convirtió en Gentoo Linux, y de los muchos nuevos retos que afronté por el camino.

Recursos

Acerca del autor

Daniel Robbins vive en Albuquerque, Nuevo Méjico. Fue Presidente/CEO de Gentoo Technologies Inc., el Arquitecto Jefe del proyecto Gentoo y es un autor que contribuye en varios libros publicados por MacMillan: Caldera OpenLinux Unleashed, SuSE Linux Unleashed, y Samba Unleashed. Daniel ha estado envuelto de alguna u otra forma en el mundo de las computadoras desde el segundo grado cuando entró en contacto con el lenguaje de programación Logo y una dosis potencialmente letal de Pac Man. Esto probablemente explica porqué desde entonces sirvió como Artista Gráfico en SONY/Electronic Publishing/Psygnosis. Daniel disfruta de su tiempo con su mujer Mary y su nueva hija Hadassah. Puedes contactar con Daniel en drobbins@gentoo.org.



Imprimir

Página actualizada 9 de octubre, 2005

Sumario: Cada uno de nosotros tiene una historia que contar acerca de nuestras experiencias con Linux. Esta es la historia Linux de Daniel Robbins. En éste, primero de tres artículos nos habla de como llegó a ser un desarrollador del proyecto Linux Stampede, y de cómo eventualmente dejó Stampede para comenzar su propia distribución llamada Enoch.

Daniel Robbins
Autor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.