Si estás leyendo una copia de este documento fuera de la red, la versión original en inglés actualizada está en http://www.tuxedo.org/~esr/faqs/hacker-howto.html, y la traducción al castellano está en http://www.webhost.cl/~alvherre/hacker-howto_es.html.
Existe una comunidad, una cultura compartida, de programadores expertos y brujos de redes, cuya historia se puede rastrear décadas atrás, hasta las primeras minicomputadoras de tiempo compartido y los primigenios experimentos de ARPAnet. Los miembros de esta cultura acuñaron el término `hacker'. Los hackers construyeron Internet. Los hackers hicieron del sistema operativo UNIX lo que es en la actualidad. Los hackers hacen andar Usenet. Los hackers hacen que funcione WWW. Si eres parte de esta cultura, si has contribuido a ella y otra gente te dice "hacker", entonces eres un hacker.
La mentalidad de hacker no está confinada a esta cultura de hackers en software. Hay personas que aplican la actitud de hacker a otras cosas, como electrónica o música -- de hecho, puedes encontrarla en los más altos niveles de cualquier ciencia o arte. Los hackers en software reconocen estos espíritus emparentados y los denominan `hackers' también -- y algunos sostienen que la naturaleza de hacker es en realidad independiente del medio particular en el cual el hacker trabaja. En el resto de este documento nos concentraremos en las habilidades y actitudes de los hackers en software, y en las tradiciones de la cultura compartida que originó el término `hacker'.
Existe otro grupo de personas que a gritos se autodenominan hackers, pero no lo son. Éstas son personas (principalmente varones adolescentes) que se divierten ingresando ilegalmente en computadores y estafando al sistema de telefonía. Los hackers de verdad tienen un nombre para esas personas: `crackers', y no quieren saber nada con ellos. Los hackers de verdad opinan que la mayoría de los crackers son flojos, irresponsables, y no muy brillantes, y fundamentan su crítica en que ser capaz de romper la seguridad no lo hace a uno un hacker, de la misma manera que ser capaz de encender un auto con un puente en la llave no lo puede transformar en ingeniero automotriz. Desafortunadamente, muchos periodistas y editores utilizan erróneamente la palabra `hacker' para describir a los crackers; esto es causa de enorme irritación para los verdaderos hackers.
La diferencia básica es esta: los hackers construyen cosas, los crackers las destruyen.
Si deseas ser un hacker, continúa leyendo. Si quieres ser un cracker, mejor mira en el grupo de news alt.2600 y prepárate para soportar la dura realidad cuando descubras que no eres tan inteligente como crees. Y eso es todo lo que voy a decir acerca de los crackers.
Pero si piensas que el cultivo de las actitudes de hacker es una forma de ganar aceptación en la cultura, malinterpretarás el tema. La transformación en la clase de persona que cree en esas cosas es importante para ti: para ayudarte a aprender y mantenerte motivado. Como en las artes creativas, el modo más efectivo de transformarse en un maestro es imitar la mentalidad de los maestros -- no sólo intelectualmente, sino además emocionalmente.
Por lo tanto, si quieres ser un hacker, repite lo siguiente hasta que lo creas:
Si no eres la clase de persona que naturalmente siente de esta manera las cosas, necesitará poder experimentarlas para llegar a ser un hacker. De otra manera, encontrarás que tu energía para `hackear' será absorbida por otras distracciones como sexo, dinero y aprobación social.
(Además deberás desarrollar cierta clase de fe en tu propia capacidad de aprendizaje -- la creencia de que aún cuando puedas no saber todo lo que necesitas para resolver el problema, si tomas una parte de él y aprendes desde allí, aprenderás lo suficiente para resolver la siguiente parte, y así, hasta que lo resuelvas completo.)
Para comportarte como hacker, debes creer que el tiempo empleado para pensar por los otros hackers es precioso -- tanto, que es casi una obligación moral para ti el compartir la información, resolver los problemas y luego exponer la solución de manera que los otros hackers puedan resolver nuevos problemas, en lugar de enfrentarse perpetuamente con los viejos.
(No pienses que estás obligado a regalar todo tu producto creativo, aunque aquellos hackers que lo hacen son los que obtienen más respeto de los demás hackers. Se considera consistente con los valores de un hacker que se venda lo suficiente para pagar la comida, la casa y los gastos relacionados con el computador. También es consistente la utilización de estas habilidades de hacker para sostener a su familia, o incluso hacerse rico, siempre que no te olvides que eres un hacker mientras lo haces.)
Para comportarte como hacker, debes creer en esto lo suficiente como para automatizar aquellas partes de tareas todo lo que se pueda, no solamente para ti, sino en beneficio de todos los demás (especialmente otros hackers).
(Existe una aparente excepción a esta regla. Los hackers hacen cosas a veces que pueden parecer repetitivas o aburridas pero como ejercicio para lograr limpieza mental, o para obtener cierta habilidad, u obtener cierta clase de experiencia que no podría tener de otro modo. Pero esto es una elección -- ninguna persona pensante debiera nunca ser forzada a hacer cosas aburridas.)
(Esto no es lo mismo que combatir toda autoridad. Los niños necesitan guía, y los criminales restricciones. Un hacker puede estar de acuerdo en aceptar cierta clase de autoridad para poder obtener algo que desea más que el tiempo que gasta en seguir órdenes. Pero éste es un pacto limitado, consciente; la clase de sumisión que desean los autoritarios no está en oferta.)
Los autoritarios florecen en la censura y el secreto. Y desconfían de la cooperación voluntaria y el intercambio de información -- sólo les agrada la cooperación que tienen bajo su control. Así que para comportarte como hacker, deberás desarrollar una hostilidad instintiva hacia la censura, el secreto, y la utilización de la fuerza o el fraude para someter a adultos responsables. Y deberás estar preparado para actuar en consecuencia.
Por lo tanto, debes aprender a desconfiar de la actitud y respetar la habilidad en todas sus formas. A ningún hacker le gusta perder el tiempo con quienes adoptan la pose de hacker, pero veneran la habilidad -- especialmente la habilidad al hackear, aunque la habilidad en cualquier ámbito está bien. Especialmente buenas son las habilidades exigentes que pocos pueden dominar, y las mejores son las habilidades exigentes que involucran agudeza mental, maña y concentración.
Si respetas la habilidad, disfrutarás desarrollándola en ti mismo -- el pesado trabajo y la dedicación se transformarán en una especie de juego intenso, y no una rutina. Y éso es lo vital para transformarse en hacker.
Este conjunto cambia lentamente a lo largo del tiempo a medida que la tecnología crea nuevas habilidades y descarta otras por obsoletas. Por ejemplo, se incluía la programación en lenguaje de máquina, y no se hablaba de HTML hasta hace poco. Pero por ahora es claro que se debe incluir lo siguiente:
Pero no creas que podrás ser un hacker, siquiera un programador, si conoces un único lenguaje -- debes aprender a pensar en los problemas de programación de una manera general, independiente de cualquier lenguaje. Para ser un hacker de verdad, debes llegar al punto en el cual puedes aprender un lenguaje nuevo en días, relacionando lo que está en el manual con lo que sabes de antes. Esto significa que debes aprender varios lenguajes muy diferentes entre sí.
Si quieres entrar a programar de verdad, tendrás que aprender C, el lenguaje central de Unix (aunque no es el que se debe intentar aprender primero). Otros lenguajes de importancia son Perl y LISP. Perl vale la pena por razones prácticas: es muy usado en páginas WWW 'activas' y en administración de sistemas; tanto así que aunque nunca llegues a escribirlo, al menos tienes que aprender a leerlo. LISP es interesante de aprender por la profunda e iluminadora experiencia que tendrás cuando finalmente lo consigas: la experiencia te hará un mejor programador el resto de tu vida, incluso si nunca usas demasiado el mismo LISP.
Lo mejor, en realidad, es aprender estos cuatro lenguajes (Python, C, Perl y LISP). Además de ser los lenguajes más importantes para hackear, representan enfoques muy disímiles a la programación, y cada uno te educará de maneras importantes.
No puedo explicar en detalle en este documento como puedes aprender a programar -- es una habilidad compleja. Pero puedo adelantarte que los libros y los cursos no servirán (muchos, y tal vez la mayoría de los mejores hackers son autodidactas). Lo que sí servirá es (a) leer código y (b) escribir código.
El aprendizaje de la programación es como aprender a escribir bien un lenguaje natural. La mejor manera de aprender es leer algunas cosas escritas por los maestros del estilo, luego escribir algunas cosas tú mismo, leer mucho más, escribir un poco más... y repetir esto hasta que lo que escribes empiece a mostrar la clase de fuerza y economía que ves en tus modelos.
Antes era difícil encontrar código de buena calidad para leer, porque había pocos programas de cierta magnitud disponibles en código fuente de tal manera que los nóveles hackers pudieran meterles mano. Esta situación ha cambiado dramáticamente: software libre, herramientas de programación libres, y sistemas operativos libres (todo ello hecho por hackers) están ampliamente disponibles en la actualidad. Lo que me lleva elegentemente a nuestro siguiente tema...
Si, es cierto que existen otros sistemas operativos en el mundo además de Unix. Pero sólo pueden encontrarse en formato binario -- No puedes leer el código ni modificarlo. Si intentas aprender a hackear en una máquina DOS, Windows o en un MacOS te sentirás como si trataras de bailar metido en una armadura.
Además, Unix es el sistema operativo de Internet. Si bien puedes aprender a usar Internet sin saber Unix, nunca podrás ser un hacker en Internet sin conocerlo. Por este motivo, la cultura hacker actual está centrada fuertemente en Unix. (Esto no siempre fue así, e incluso la situación le desagrada a algunos de los hackers más viejos, pero la simbiosis entre Unix y la Internet es tan fuerte que hasta la energía de Microsoft parece incapaz de hacerle mella.)
Así que obtén un Unix -- personalmente me gusta Linux, pero hay otros. Aprende a usarlo. Hazlo funcionar. Métele mano, anímate. Comunícate en Internet mediante él. Lee el código. Modifícalo. En ese sistema se incluyen mejores herramientas de programación (incluyendo Python, C, Lisp y Perl) de lo que cualquier sistema operativo de Microsoft podría siquiera soñar, además te divertirás y te sumergirás en un caudal de conocimientos de tal magnitud que nunca hubieras imaginado, hasta que en cierto momento, mirando hacia atrás, te darás cuenta que ya eres un maestro hacker consumado.
Si quieres saber más sobre del aprendizaje de Unix, mira The Loginataka.
Para meter mano en Linux, mira en el directorio de distribuciones Linux o en el programa `Linux CD Giveaway' en Metalab.
Esto sólo no significa aprender a manejar un navegador (cualquiera puede hacer eso), sino que debes aprender a escribir HTML, el lenguaje de marcas de WWW. Si aún no sabes programar, el aprendizaje que implica la escritura de HTML te enseñará algunos de los hábitos mentales que te ayudarán luego con la programación. Así que haz una página personal.
Pero no creas que por tener una página personal estás más cerca de ser un hacker. La Web está llena de páginas personales. La mayoría de ellas son sin sentido, basura sin contenido -- basura muy vistosa, pero basura al fin (si deseas ver más sobre este tema mira en The HTML Hell Page).
Para que valga la pena, tu página debe tener contenido -- debe ser interesante y útil para los otros hackers. Y esto nos lleva al próximo tema...
De acuerdo a esto, cuando juegas el juego de los hackers, aprendes a evaluarte principalmente en función de lo que los otros hackers piensan acerca de tus habilidades (éste es el motivo por el cual no puedes ser un hacker de verdad hasta que otros hackers te denominen así de manera frecuente). Este hecho está empañado por la imagen del trabajo de hackear como trabajo solitario; también por un tabú cultural (que ha disminuido, pero aún es fuerte) que impide que se admita al ego o la validación externa como elementos involucrados en la propia motivación.
Específicamente, el hackerismo es lo que los antropólogos denominan cultura de la donación. Ganas status y reputación no mediante la dominación de otras personas, no por ser hermoso ni por tener cosas que otras personas desean, sino por regalar cosas. Específicamente, al regalar tu tiempo, tu creatividad, y el resultado de tus habilidades.
Existen básicamente cinco clases de cosas que puedes hacer para obtener el respeto de los hackers:
Los más reverenciados semidioses del hackerismo son las personas que han escrito programas de gran magnitud, con grandes capacidades que satisfacen necesidades de largo alcance, y los donan, de tal manera que cualquiera pueda utilizarlos.
Si eres un novato, trata de encontrar un programa en desarrollo en el cual estés interesado, y sé un buen beta-tester. Hay una progresión natural desde ayudar a probar programas, luego ayudar a depurarlos, y más adelante ayudar a modificarlos. Aprenderás mucho de esa manera, y crearás buen karma con gente que te ayudará más adelante.
La gente que mantiene las FAQ técnicas más importantes gozan de casi tanto respeto como los autores de software libre.
La gente que desarrolla estas actividades goza de mucho respeto, porque todos saben que esos trabajos son grandes consumidores de tiempo y no tan divertidos como meterse con el código. Los que lo llevan adelante demuestran su dedicación.
La cultura hacker no tiene líderes, exactamente, pero tiene héroes culturales, consejeros tribales y voceros. Cuando hayas estado en las trincheras tiempo suficiente, podrás transformarte en uno de ellos. Pero ten cuidado: los hackers desconfían del ego ruidoso en sus jefes tribales, así que la búsqueda visible de esa clase de fama es peligrosa. Más que esforzarte por ella, tienes que ponerte de forma que te caiga, y luego adoptar una actitud moderada y cortés acerca de ella.
Por esta razón, muchos hackers han adoptado la etiqueta `nerd' e incluso utilizan el más áspero término `geek' como insignia de orgullo -- es su forma de declarar su propia independencia de las expectativas sociales normales. Si te interesa una explicación más detallada ve The Geek Page.
Si puedes encontrar la concentración suficiente en las tareas de hacker para ser bueno en ello, y encima disfrutar de la vida, está bien. Es muchísimo más fácil ahora que cuando yo era un novato; la cultura popular ve con mejores ojos a los tecno-nerds en la actualidad. Hay además un número creciente de personas que se dan cuenta que los hackers frecuentemente son un material de alta calidad para cónyuge. Si deseas ver algo más acerca de esto, vé la Girl's Guide to Geek Guys.
Si te sientes atraído por la actividad hacker porque no tienes una vida personal, está bien también -- al menos no tendrás problemas de concentración. A lo mejor más adelante puedes conseguir una vida decente.
Finalmente, unas pocas cosas que no debes hacer.
Peter Seebach mantiene una excelente Hacker FAQ para administradores que no saben como tratar con hackers.
El Loginataka nombra alguna de las cosas que hay que decir acerca del entrenamiento apropiado y la actitud de un hacker de Unix.
Además he escrito A Brief History Of Hackerdom.
También he escrito un artículo, The
Cathedral and the Bazaar, que explica en detalle como trabaja la cultura
Linux y OpenSource. He tratado este tema más directamente en su
secuela
Homesteading the Noosphere.
Aunque pudiera, el hackeo es una actitud y habilidad que debes aprender por ti mismo. Verás que los hackers de verdad quieren ayudarte, pero no te respetarán si les pides que te den en bandeja todo lo que saben.
Aprende unas cuantas cosas primero. Muéstrales que estás intentando, que eres capaz de aprender por tu cuenta. Luego habla con ellos y hazles tus preguntas.
No. Cualquiera que pueda hacer una pregunta como esa despues de leer este documento es demasiado estúpido para ser educable, aún si tuviera el tiempo para enseñar. Cualquier petición de este tipo por correo será ignorada o contestada con extrema dureza
La mejor manera es encontrar un grupo local de usuarios de Unix o Linux y asistir a sus reuniones (existe una lista de grupos en la página de Metalab: Linux Users' Group.
(Solía decir que no encontrarías hackers de verdad en IRC, pero me han dicho que esto está cambiando. Aparentemente algunas comunidades de hackers unidas a proyectos como GIMP y Perl tienen sus propios canales de IRC).
Cuando estés listo para comenzar con programación, te recomiendo que empieces con Perl o Python. C es realmente importante, pero también mucho más difícil.