Eric Raymond | Versão Original
Home JDV | Sobre esta tradução | Fonte Original
Tradução da versão 1.51 (06 Out 2017)
2. Nenhum problema deve jamais ser resolvido duas vezes.
2. Pegue um dos Unixes de código aberto e aprenda a usá-lo.
4. Se você não tem Inglês funcional, aprenda.
1. Escreva software de código aberto
2. Ajude a testar e depurar software de código aberto
4. Ajude a manter a infraestrutura funcionando
5. Sirva a cultura hacker em si
Nota Histórica: Hacking, Open Source, e Software Livre
Como editor do Jargon File,[1] e autor de alguns outros documentos bem conhecidos de natureza similar, eu frequentemente recebo emails de iniciantes entusiasmados perguntando (de fato) "como posso aprender a ser um grande hacker?". Voltando a 1996, eu notei que não parecia haver nenhum outro FAQ ou documento na web que endereçasse essa questão vital, então eu iniciei este. Muitos hackers agora consideram este como definitivo, e eu suponho que isso signifique que ele é. Ainda sim, eu não tenho a pretensão de ser a autoridade exclusiva neste tópico; se você não gostar do que leu aqui, escreva o seu próprio.
Se você está lendo uma cópia deste documento offline, a versão atual está em http://catb.org/~esr/faqs/hacker-howto.html.
Nota: existe uma lista de Perguntas Mais Frequentes no final deste documento. Por favor, leia duas vezes antes de enviar-me um email perguntando sobre este documento.
Muitas traduções deste documento estão disponíveis: Árabe, Bielorrusso, Búlgaro, Chinês, Dinamarquês, Holandês, Estoniano, Francês, Alemão, Grego, Italiano, Hebraico, Japonês, Lituano, Norueguês, Persa, Polonês, Português (Brasileiro), Português (Brasileiro/Atualizado), Romeno, Espanhol, Turco, e Sueco. Note que uma vez que este documento muda, ocasionalmente, elas podem estar desatualizadas em graus variados.
O diagrama de cinco-pontos-em-nove-quadrados que decora este documento é chamado de glider (planador). É um padrão simples com algumas propriedades surpreendentes em uma simulação matemática chamada Vida, que tem fascinado hackers por muitos anos. Eu acho que ele é um bom emblema visual para o que os hackers são — abstratos, a princípio, parecendo um tanto misteriosos, mas um portal para um mundo inteiro com uma intrigante lógica própria. Leia mais sobre o emblema glider aqui.
Se você achar esse documento valioso, por favor me apoie no Patreon. E considere também suportar outros hackers que produzem código que você usa e valoriza. Muitas doações pequenas mas contínuas somam rapidamente, e podem libertar as pessoas que têm lhe dado presentes do trabalho delas para criar mais valor.
O Jargon File contém um monte de definições do termo 'hacker', a maioria tendo a ver com aptidão técnica e um deleite por resolver problemas e superar limites. Se você quer saber como tornar-se um hacker, no entanto, apenas duas são realmente relevantes.
Existe uma comunidade, uma cultura compartilhada, de programadores experts e magos de rede cuja a história remonta a décadas atrás, aos primeiros minicomputadores e aos primeiros experimentos na ARPAnet. Os membros dessa cultura originaram o termo 'hacker'. Hackers construíram a Internet. Hackers fizeram do sistema operacional Unix o que ele é hoje. Hackers fazem a World Wide Web funcionar. Se você é parte desta cultura, se você tem contribuído para ela e outras pessoas nela sabem quem você é e chamam você de hacker, você é um hacker.
A mentalidade hacker não é confinada a esta cultura do hacker-de-software. Existem pessoas que aplicam a atitude hacker em outras coisas, como eletrônica ou música — na verdade, você pode encontrá-la nos níveis mais altos de qualquer ciência ou arte. Hackers de software reconhecem esses espíritos aparentados de outros lugares e podem chamá-los de "hackers" também — e alguns afirmam que a natureza hacker é realmente independente do meio particular onde o hacker trabalha. Mas no restante deste documento iremos focar nas habilidades e atitudes de um hackers de software, e nas tradições da cultura compartilhada que deu origem ao termo 'hacker'.
Existem outros grupos de pessoas que se dizem hackers, mas não são. São (adolescentes do sexo masculino, na maioria) que se divertem invadindo computadores e fraudando o sistema telefônico. Verdadeiros hackers chamam essas pessoas de 'crackers' e não têm nada a ver com eles. Hackers de verdade consideram os crackers preguiçosos, irresponsáveis, e não muito brilhantes, e alegam que ser capaz de quebrar sistemas de segurança torna alguém hacker tanto quanto fazer ligação direta em carros torna alguém um engenheiro automotivo. Infelizmente, muitos jornalistas e escritores foram levados à usar a palavra 'hacker' para descrever crackers; isso é muito irritante para os hackers de verdade.
Se você quer ser um hacker, continue lendo. Se você quer ser um cracker, vá ler o grupo de notícias alt.2600 e prepare-se para pegar de cinco a dez anos de cadeia[2] depois de descobrir que você não é tão esperto quando acha que é. E isso é tudo que falarei sobre crackers.
2. Nenhum problema deve jamais ser resolvido duas vezes..
3. Tédio e trabalho repetitivo são nocivos..
Hackers resolvem problemas e constroem coisas, e acreditam em liberdade e na ajuda mútua voluntária. Para ser aceito como um hacker, você tem que se comportar de acordo com essa atitude. E para se comportar de acordo com essa atitude, você precisa realmente acreditar nessa atitude.
Mas se você acha que cultivar a cultura hacker é apenas um meio de ganhar aceitação na cultura, você perderá o ponto. Tornar-se o tipo de pessoa que acredita nessas coisas é importante para você — para ajudá-lo a aprender e manter-se motivado. Assim como em todas as artes criativas, a maneira mais efetiva para tornar-se um mestre é imitar a maneira de pensar dos mestres — não apenas intelectualmente mas também emocionalmente.
Ou, como o seguinte poema Zen moderno diz:
olhe o mestre,
caminhe com o mestre,
veja através do mestre,
Então, se você quer se tornar um hacker, repita as seguintes coisas até você acreditar nelas:
Ser um hacker é muito divertido, mas é o tipo de diversão que necessita de muito esforço. O esforço necessita de motivação. Atletas de sucesso retiram sua motivação de um tipo de prazer físico em trabalhar seus corpos, em tentar ultrapassar seus próprios limites físicos. De forma similar, para ser um hacker você tem que ter uma emoção básica por resolver problemas, afiar suas habilidades, e exercitar sua inteligência.
Se você não é o tipo de pessoa que se sente assim naturalmente, você precisará tornar-se uma para ser um hacker. Caso contrário, você verá sua energia para hackear sendo esvaída por distrações como sexo, dinheiro, e aprovação social.
(Você também tem que desenvolver uma espécie de fé na sua pórpria capacidade de aprendizado — crer que, mesmo que você não saiba tudo que precisa para resolver um problema, se você atacar apenas um pedaço dele e aprender a partir disso, você aprenderá o suficiente para resolver o próximo pedaço — e assim por diante, até que você termine.)
Mentes criativas são um recurso valioso e limitado. Não devem ser desperdiçadas reinventando a roda quando existem tantos problemas novos e fascinantes esperando por aí.
Para comportar-se como um hacker, você tem que acreditar que o tempo de pensamento de outros hackers é precioso — tanto que é quase um dever moral para você, compartilhar informação, resolver problemas e então dar as soluções para que outros hackers possam resolver novos problemas ao invés de ter que reendereçar os antigos perpetuamente.
Perceba, no entanto, que "nenhum problema deve jamais ser resolvido duas vezes." não implica que você tem que considerar todas as soluções existentes como sagradas, ou que existe apenas uma solução certa para qualquer problema dado. Frequentemente, nós aprendemos muito sobre um problema que não conhecíamos antes estudando a primeira versão da solução. É OK, e frequentemente necessário, decidir que nós podemos fazer melhor. O que não é OK são barreiras artificiais técnicas, legais, ou institucionais (como código-fonte fechado) que impedem uma boa solução de ser reutilizada e força as pessoas a reinventarem rodas.
(Você não tem que acreditar que você é obrigado a dar toda a sua produção criativa, ainda que hackers que o fazem são os mais respeitados pelos outros hackers. É consistente com os valores hackers vender o suficiente da sua produção para mantê-lo alimentado e pagar o aluguél e computadores. Está bem usar suas habilidades de hacker para manter a família ou mesmo ficar rico, com tanto que você não esqueça sua lealdade à sua arte e seus colegas hackers enquanto faz isso.)
Hackers (e pessoas criativas em geral) não podem ficar entediadas ou ter que fazer trabalho repetitivo, porque quando isso acontece significa que eles não estão fazendo o que apenas eles podem fazer — resolver novos problemas. Esse desperdício prejudica a todos. Portanto, tédio e trabalho repetitivo não são apenas desagradáveis, mas também nocivos.
Para comportar-se como um hacker, você tem que acreditar nisso o suficiente para querer automatizar as partes chatas tanto quanto possível, não apenas para você mesmo, mas para as outras pessoas (especialmente outros hackers).
(Há uma exceção aparente a isso. Às vezes, hackers farão coisas que podem parecer repetitivas ou tediosas para um observador, como um exercício de "limpeza mental", ou para adquirir uma habilidade ou ter alguma espécie particular de experiência que não seria possível de outro modo. Mas isso é por opção — ninguém que consiga pensar deve jamais ser forçada ao tédio.
Hackers são naturalmente antiautoritários. Qualquer um que pode lhe dar ordens pode impedi-lo de resolver qualquer que seja o problema pelo qual você está fascinado — e, dada a maneira com que mentes autoritárias funcionam, irá geralmente encontrar alguma razão terrivelmente estúpida para fazê-lo. Então, a atitude autoritária deve ser combatida onde quer que você a encontre, para que não sufoque você e outros hackers.
(Isso não é o mesmo que combater toda e qualquer autoridade. Crianças precisam ser orientadas e criminosos, detidos. Um hacker pode concordar em aceitar alguns tipos de autoridade a fim de obter algo que ele quer mais que o tempo que ele gasta seguindo ordens. Mas isso é uma barganha restrita e consciente; o tipo de sujeição pessoal que os autoritários querem não está em oferta.)
Pessoas autoritárias prosperam na censura e no segredo. E desconfiam da cooperação voluntária e compartilhamento de informação — só gostam de 'cooperação' que eles possam controlar. Então, para se comportar como um hacker, você tem que desenvolver uma hostilidade instintiva à censura, ao segredo, e ao uso da força ou mentira para compelir[3] adultos responsáveis. E você tem que estar disposto a agir de acordo com essa crença.
Para ser um hacker, você tem que desenvolver algumas dessas atitudes. Mas apenas ter uma atitude não fará de você um hacker, assim como não fará de você um atleta campeão ou uma estrela de rock. Para tornar-se um hacker é necessário inteligência, prática, dedicação, e trabalho duro.
Portanto, você tem que aprender a desconfiar de atitude e respeitar todo o tipo de competência. Hackers não deixarão posers[4] desperdiçar o tempo deles, mas eles idolatram competência — especialmente competência em hackear, mas competência em qualquer coisa é valorizada. Competência em habilidades que poucos conseguem dominar é especialmente boa, e competência em habilidades que envolvem agudeza mental, perícia e concentração é melhor.
Se você reverenciar competência, você gostará de desenvolvê-la em você mesmo — o trabalho duro e a dedicação se tornarão um tipo de jogo intenso, ao invés de trabalho repetitivo. Essa atitude é vital para se tornar um hacker.
A atitude hacker é vital, mas habilidades são ainda mais vitais. Atitude não substitui competência, e há um certo conjunto de habilidades que você precisa ter antes de qualquer hacker sonhar chamar você de um.
Esse conjunto muda lentamente com o tempo, conforme a tecnologia cria novas habilidades e torna as antigas obsoletas. Por exemplo, isso costumava incluir programação em linguagem de máquina, e até recentemente[5], não envolvia HTML. Mas agora claramente inclui o seguinte:
Essa é, claro, a habilidade hacker fundamental. Se você não sabe nenhuma linguagem de programação, eu recomendo começar com Python. É uma linguagem com um design limpo, é bem documentada, e relativamente gentil para iniciantes. Apesar de ser uma ótima primeira linguagem, ela não é um brinquedo; ela é muito poderosa e flexível, e se adéqua bem para grandes projetos. Eu escrevi uma avaliação de Python mais detalhada. Bons tutoriais estão disponíveis no web site do Python; há também um excelente tutorial em Computer Science Circles.
Eu costumava recomendar Java como uma boa linguagem para aprender no início, mas essa crítica me fez mudar de ideia (procure por "The Pitfalls of Java as a First Programming Language" dentro dela). Um hacker não pode, como eles devastadoramente colocaram "abordar resolução de problemas como um encanador em uma loja de ferragens"; você precisa saber o que o componente realmente faz. Agora eu acho que é provavelmente melhor aprender C e Lisp primeiro do que Java.
Há talvez um ponto mais geral aqui. Se uma linguagem faz muito por você, ela pode ser, ao mesmo tempo, uma boa ferramenta para produção e uma má para aprendizado. Não são só linguagens que têm esse problema; frameworks para aplicações web como RubyOnRails, CakePHP, Django podem fazer com que seja muito fácil atingir um nível superficial de entendimento, que deixará você sem recursos quando você tiver que atacar um problema difícil, ou apenas debugar a solução para um problema fácil.
Se você levar programação à sério, você terá que aprender C, a linguagem core do Unix. C++ é muito próxima de C; se você souber uma, aprender a outra não será difícil. No entanto, nenhuma delas é boa para tentar aprender como sua primeira linguagem. Na verdade, quanto mais você evitar programar em C, mais produtivo você será.
C é muito eficiente, e economiza muito os recursos de sua máquina. Infelizmente, C obtém essa eficiência obrigando você a fazer muito gerenciamento de recursos em baixo nível (como memória) manualmente. Todo esse código em baixo nível é complexo e suscetível a bugs, absorverá uma grande quantidade do seu tempo em depuração. Com as máquinas de hoje, poderosas como são, isso normalmente não vale a pena — é mais inteligente usar uma linguagem que use o tempo da máquina com menos eficiência, mas seu tempo com muito mais eficiência. Portanto, Python.
Outras linguagens particularmente importantes para hackers incluem Perl e LISP. Perl vale a pena aprender por razões práticas; é largamente usada por active web pages e administração de sistemas, então mesmo que você nunca escreva Perl você deve aprender a lê-lo. Muitas pessoas usam Perl da maneira que eu sugiro que você deva usar Python, para evitar programação em C em trabalhos que não necessitem da eficiência de máquina do C. Você precisará ser capaz de entender o código delas.
LISP vale a pena aprender por uma razão diferente — a profunda experiência de iluminação que você terá quando finalmente entendê-lo. Essa experiência fará de você um melhor programador pelo resto de seus dias, mesmo que você nunca use LISP de verdade por is só. (Você pode obter alguma experiência de iniciante com LISP facilmente escrevendo e modificando modos de edição para o editor de texto Emacs ou plugins Script-Fu para o GIMP.)
Na verdade, é melhor aprender todas as cinco: Python, C/C++, Java, Perl, e LISP. Além de serem as linguagens mais importantes para hackerar, elas representam abordagens de programação muito diferentes, e cada uma irá educá-lo de forma valiosa.
Mas esteja ciente de que você não atingirá o nível de habilidade de um hacker ou mesmo meramente a de um programador simplesmente acumulando linguagens — você precisa aprender como pensar sobre problemas de programação de uma maneira geral, independente de qualquer linguagem. Para ser um hacker real, você precisa chegar ao ponto onde você possa aprender uma nova linguagem em questão de dias relacionando o que está no manual com o que você já sabe. Isso significa que você deve aprender muitas linguagens bem diferentes.
Eu não posso dar instruções completas aqui de como programar — isso é uma habilidade complexa. Mas posso dizer que livros e cursos não farão isso — muitos, talvez a maioria dos melhores hackers são autodidatas. Você pode aprender os recursos da linguagem — pedaços de conhecimento — de livros, mas a mentalidade que transforma esse conhecimento em habilidades de vida pode ser aprendido apenas pela prática e estudo. O que fará isso é (a) ler código e (b) escrever código.
Peter Norvig, que é um dos top hackers do Google e o coautor do livro de IA mais largamente utilizado, escreveu um excelente artigo chamado Teach Yourself Programming in Ten Years (Ensine a Você Mesmo Programação em Dez Anos). Sua "receita para o sucesso em programação" merece muita atenção.
Aprender a programar é como aprender a escrever bem em linguagem natural. A melhor maneira para fazer isso é ler coisas escritas por mestres da forma, escrever algumas coisas você mesmo, ler mais um monte, escrever um pouco mais, ler mais um monte, escrever um pouco mais... e repetir até sua escrita começar a desenvolver o tipo de força e economia que você vê em seus modelos.
Eu tenho tido mais a dizer sobre esse processo de aprendizagem em How To Learn Hacking (Como Aprender a Hackear). Esse é um um conjunto simples de instruções, mas não um conjunto fácil.
Achar bom código para ler era difícil, porque haviam poucos programas grandes disponíveis em código-fonte para que hackers novatos pudessem ler e mexer. Isso mudou dramaticamente; software open-source[7] (software de código aberto), ferramentas de programação, e sistemas operacionais (todos feitos por hackers) estão amplamente disponíveis atualmente. O que me traz perfeitamente ao próximo tópico...
Eu assumirei que você tem um computador pessoal ou tem acesso a um. (Pare um momento para apreciar o quanto isso significa. A cultura hacker originalmente evoluiu quando computadores eram tão caros que um indivíduo não poderia ter um.) O passo mais importante que um novato deve dar para adquirir habilidades de hacker é pegar uma cópia do Linux ou um dos BSD-Unixes, instalá-la em uma máquina pessoal, e executá-la.
Sim, existem outros sistemas operacionais no mundo além do Unix. Mas eles são distribuídos em binário — você não pode ler o código-fonte, e não pode modificá-lo. Tentar aprender a hackear em uma máquina Microsoft Windows ou em qualquer outro sistema de código fechado é como tentar aprender a dançar com o corpo engessado.
No Mac OS X é possível, mas apenas parte do sistema é de código aberto — É provável que você esbarre em muitas barreiras, e você teria que ser cuidadoso de não desenvolver o mal hábito de depender do código proprietário da Apple. Se você se concentrar no Unix por baixo do capô, você pode aprender algumas coisas úteis.
Unix é o sistema operacional da Internet. Embora você possa aprender a usar a Internet sem saber Unix, vocẽ não pode ser um hacker de Internet sem entender Unix. Por essa razão, a cultura hacker hoje é fortemente centrada no Unix. (Isso não foi sempre verdade, e alguns hackers dos velhos tempos ainda não estão contentes com isso, mas a simbiose entre o Unix e a Internet tornou-se forte o suficiente que nem os músculos da Microsoft parecem capazes de diminuí-lo seriamente.)
Então, pegue um Unix — Eu gosto do Linux mas existem outros caminhos (e sim, você pode rodar ambos Linux e Microsoft Windows na mesma máquina). Aprenda. Rode. Mexa nele. Acesse a Internet através dele. Leia o código. Modifique o código. Você terá ferramentas de programação (incluindo C, LISP, Python e Perl) melhores do que qualquer sistema operacional Microsoft pode sonhar em ter, você se divertirá, e absorverá mais conhecimento do que você perceber, até olhar para trás como um mestre hacker.
Para aprender mais sobre Unix, veja The Loginataka. Você também pode querer dar um olhada em The Art Of Unix Programming (A Arte de Programação Unix).
O blog Let's Go Larval! é uma janela para o processo de aprendizado de um novo usuário Linux que acho ser excepcionalmente lúcido e útil. O post How I Learned Linux (Como aprendi Linux) é um bom ponto de partida.
Para botar a mão no Linux, veja o site Linux Online!; você pode baixá-lo de lá ou (uma ideia melhor) achar um grupo local de usuários Linux para ajudá-lo com a instalação.
Durante os primeiros dez anos da vida desse HOWTO, eu reportava que da perspectiva de um novo usuário, todas as distribuições Linux eram quase equivalentes. Mas em 2006-2007, uma verdadeira melhor escolha surgiu: Ubuntu. Enquanto outras distros têm suas próprias áreas de expertise, Ubuntu é de longe a mais acessível para iniciantes no Linux. Cuidado, no entanto, com a horrível e quase inutilizável interface desktop "Unity" que o Ubuntu introduziu como padrão alguns anos mais tarde; as variações Xubuntu ou Kubuntu são melhores.
Você pode encontrar ajuda e recursos sobre BSD Unix em www.bsd.org.
Uma boa maneira para se ter uma ideia, na prática,[6] é bootar o que os fãs de Linux chamam de live CD, uma distribuição que roda completamente a partir de um CD ou dispositivo USB sem ter que modificar o seu disco rígido. Isso pode funcionar devagar, pois CDs funcionam mais devagar, mas é uma maneira de se dar uma olhada nas possibilidades sem ter que fazer nada drástico.
Eu escrevi uma cartilha sobre o básico de Unix e Internet.
Eu costumava recomendar não instalar nem Linux, nem BSD como um projeto solo se você for um iniciante. Atualmente os instaladores tornaram-se bons o suficiente que, fazer isso totalmente por você mesmo, é possível, mesmo para um iniciante. Ainda assim, eu ainda recomendo fazer contato com o seu grupo local de usuários Linux e pedir ajuda. Isso não doí, e pode facilitar o processo.
A maioria das coisas que a cultura hacker tem construído funciona invisivelmente, ajudando no funcionamento de fábricas, escritórios e universidades sem nenhum impacto óbvio na vida dos não-hackers. A Web é uma grande exceção, o enorme e brilhante brinquedo dos hackers que até mesmo políticos admitem ter mudado o mundo. Por esse motivo (e vários outros também) você precisa aprender como trabalhar na Web.
Isso não significa apenas aprender como usar um browser (qualquer um pode fazer isso), mas aprender a escrever HTML, a linguagem de marcação da Web. Se você não sabe programar, escrever HTML o ensinará alguns hábitos mentais que o ajudarão a aprender. Então, construa uma home page (página inicial).
Mas apenas ter uma home page não é, nem de perto, bom o suficiente para fazer de você um hacker. A Web é cheia de home pages. A maioria delas é inútil, porcaria sem conteúdo — porcaria muito bem apresentada, note bem, mas porcaria mesmo assim (para mais sobre esse assunto, veja The HTML Hell Page).
Para valer a pena, sua paǵina deve ter conteúdo — o qual deve ser interessante e/ou útil à outros hackers. E isso nos trás ao próximo tópico...
Como estadunidense e falante nativo da língua inglesa, eu tenho relutado em sugerir isso, para que não fosse tomado como uma espécie de imperialismo cultural. Mas vários falantes nativos de outras línguas me pediram para apontar que o inglês é o idioma de trabalho para a cultura hacker e a Internet, e que você precisará saber para funcionar na comunidade hacker.
Por volta de 1991 eu aprendi que muitos hackers que têm o inglês como segunda língua usam isso em discussões técnicas mesmo quando compartilham a mesma língua materna; foi relatado naquele momento que o inglês tem um vocabulário técnico mais rico que qualquer outro idioma e, portanto, é simplesmente uma ferramenta melhor para o trabalho. Por razões semelhantes, as traduções de livros técnicos escritos em inglês são muitas vezes insatisfatórias (quando são feitas).
Linus Torvalds, um finlandês, comenta seu código em inglês (aparentemente nunca lhe ocorreu fazer o contrário). Sua fluência em inglês tem sido um fator importante na sua capacidade de recrutar uma comunidade mundial de desenvolvedores para o Linux. É um exemplo que vale a pena seguir.
Ser um falante de língua nativa não garante que você tenha habilidades de linguagem boas o suficiente para funcionar como hacker. Se a sua escrita é semialfabetizada, gramaticalmente incorreta e cheia de erros ortográficos, muitos hackers (inclusive eu) tenderão a ignorá-lo. Embora a escrita desleixada não signifique invariavelmente um pensamento descuidado, geralmente achamos que a correlação é forte — e não temos lugar para pensadores desleixados. Se você ainda não pode escrever com competência, aprenda.
Como a maioria das culturas sem uma economia monetária, a cultura hacker funciona baseada em reputação. Você está tentando resolver problemas interessantes, mas o quão interessante eles são, e se suas soluções são realmente boas, são algo que apenas seus pares técnicos ou superiores são normalmente capazes de julgar.
Consequentemente, quando você joga o jogo hacker, você aprende a manter a pontuação principalmente pelo que outros hackers pensam de sua habilidade (é por isso que você não é realmente um hacker até que outros hackers consistentemente o chamem assim). Este fato é obscurecido pela imagem de hackear como trabalho solitário; também por um tabu hacker-cultural (gradualmente decadente desde o final da década de 1990, mas ainda potente) contra a admissão de que o ego ou a validação externa estão envolvidos na motivação de todos.
Especificamente, a cultura hacker é o que os antropólogos chamam de cultura da dádiva. Você ganha status e reputação, não por dominar outras pessoas, nem por ser belo, nem por ter coisas que outras pessoas desejam, mas sim por dar as coisas. Especificamente, dando seu tempo, sua criatividade e os resultados de sua habilidade.
Existem basicamente cinco tipos de coisas que você pode fazer para ser respeitado pelos hackers:
O primeiro (o mais central e o mais tradicional) é escrever programas que outros hackers pensam serem divertidos ou úteis, e fornecer os fontes do programa para toda a cultura hacker usar.
(Nós costumávamos chamar essas obras de "software livre", mas isso confundiu muitas pessoas que não tinham certeza exatamente do que "livre" significava. A maioria de nós agora prefere o termo software "open-source"). [7]
Os semideuses mais reverenciados da cultura hacker são pessoas que escreveram programas competentes que atendiam a uma necessidade generalizada e os deram, de modo que agora todos os usam.
Mas há um pouco de um ponto histórico bem aqui. Enquanto os hackers sempre buscaram os desenvolvedores de código aberto entre eles como o núcleo mais duro da nossa comunidade, antes da metade da década de 1990, a maioria dos hackers trabalhava em código fechado. Isso ainda era verdade quando eu escrevi a primeira versão deste HOWTO em 1996; foi preciso a integração do software de código aberto depois de 1997 para mudar as coisas. Hoje, "a comunidade hacker" e "desenvolvedores de código aberto" são duas descrições para o que é essencialmente a mesma cultura e população — mas vale lembrar que isso nem sempre foi assim (Para mais sobre isso, veja a seção chamada "Nota Histórica: Hacking, Open Source, e Software Livre".)
Também servem aqueles que ficam e depuram software de código aberto.[8] Nesse mundo imperfeito, inevitavelmente, passamos a maior parte do tempo de desenvolvimento de software na fase de depuração. É por isso que qualquer autor de código aberto que pensa irá dizer-lhe que os bons testadores beta (que sabem descrever claramente os sintomas, localizar bem os problemas, tolerar os erros em uma versão rápida e estão dispostos a aplicar algumas rotinas simples de diagnóstico) têm seu valor avaliado em rubis. Mesmo um desses pode fazer a diferença entre uma fase de depuração que é necessária, um pesadelo exaustivo e uma que é meramente um incômodo saudável.
Se você é novato, tente encontrar um programa em desenvolvimento que esteja interessado e seja um bom testador beta. Há uma progressão natural entre ajudar a testar programas, ajudar a depurá-los, e ajudar a modificá-los. Você aprenderá muito dessa maneira e gerará um bom carma com pessoas que irão ajudá-lo mais tarde.
Outra coisa boa é coletar e filtrar informações úteis e interessantes em páginas da Web ou documentos como listas de Perguntas Frequentes (FAQ), e disponibilizá-las.
Os responsáveis pelos maiores FAQs técnicos recebem quase tanto respeito quanto os autores de código aberto.
A cultura hacker (e o desenvolvimento de engenharia da Internet) são mantidos por voluntários. Há muito trabalho sem glamour, mas necessário, que precisa ser feito para manter as coisas funcionando — administrar listas de discussão, moderar grupos de notícias, manter grandes sites de arquivos de software, desenvolver RFCs e outros padrões técnicos.
As pessoas que fazem bem esse tipo de coisa recebem muito respeito, porque todos sabem que esses trabalhos são um enorme consumo de tempo e não são tão divertidos como brincar com código. Fazer isso mostra dedicação.
Finalmente, você pode servir e propagar a própria cultura (por exemplo, escrevendo um guia preciso sobre como se tornar um hacker :-)). Isso não é algo que você terá posicionado para fazer até que já esteja pela área por algum tempo, e se torne bem conhecido por uma das quatro primeiras coisas.
A cultura hacker não possui líderes, falando exatamente, mas tem heróis culturais, chefes tribais, historiadores, e porta-vozes. Quando você estiver nas trincheiras o suficiente, você poderá se tornar um desses. Cuidado: os hackers desconfiam de ego inflado em seus chefes tribais, então, visivelmente alcançar esse tipo de fama é perigoso. Ao invés de lutar por isso, você tem que posicionar-se de forma que caia no seu colo, e depois seja modesto e gracioso sobre seu status.
Ao contrário do mito popular, você não precisa ser um nerd para ser um hacker. No entanto isso ajuda, e muitos hackers são de fato nerds. Ser um pária social ajuda você a se concentrar nas coisas realmente importantes, como pensar e hackear.
Por esse motivo, muitos hackers adotaram o rótulo "geek" como um emblema de orgulho — é uma maneira de declarar sua independência das expectativas sociais normais (bem como um gosto por outras coisas como a ficção científica e jogos de estratégia que geralmente fazem parte de ser um hacker). O termo "nerd" costumava ser usado dessa maneira na década de 1990, quando 'nerd' era um pejorativo leve e 'geek' era um bastante mais severo; Em algum momento, depois dos anos 2000, eles mudaram de lugar, pelo menos na cultura popular dos Estados Unidos, e agora existe uma cultura significativa de orgulho-geek entre pessoas que não são técnicas.
Se você consegue se concentrar o suficiente em hackear para ser bom nisso e ainda ter uma vida, está tudo bem. Isso é muito mais fácil hoje do que era quando eu era novato na década de 1970; A cultura dominante é muito mais amigável para os tecno nerds agora. Há ainda um número crescente de pessoas que percebem que os hackers são geralmente amantes de alta qualidade, assim como maridos/esposas.
Se você é atraído por hackear porque você não tem vida, está OK também — pelo menos você não terá problemas para se concentrar. Talvez você tenha uma vida mais tarde.
Novamente, para ser um hacker, você deve entrar na mentalidade hacker. Há algumas coisas que você pode fazer quando não está em um computador que parecem ajudar. Elas não são substitutas para hackear (nada é), mas muitos hackers as fazem e sentem que elas se conectam de forma básica com a essência de hackear.
Aprenda a escrever bem em seu idioma nativo. Embora seja um estereótipo comum que os programadores não conseguem escrever, um número surpreendente de hackers (incluindo todos os mais completos que conheço) são escritores muito hábeis.
Leia a ficção científica. Vá à convenções de ficção científica (uma boa maneira de conhecer hackers e proto-hackers).
Junte-se a um hackerspace e faça coisas (outra boa maneira de conhecer hackers e proto-hackers).
Pratique artes marciais. O tipo de disciplina mental necessária para as artes marciais parece ser semelhante em importantes formas ao que os hackers fazem. As formas mais populares entre os hackers são definitivamente artes asiáticas de mãos vazias, como Tae Kwon Do, várias formas de Karatê, Kung Fu, Aikido ou Ju Jitsu. Esgrima ocidental e artes da espada asiática também têm seguidores visíveis. Em locais onde é legal, tiro de pistola vem aumentando em popularidade desde o final da década de 1990. As artes marciais mais hackerianas são aquelas que enfatizam a disciplina mental, o relaxamento da consciência e o controle preciso, em vez de força, atletismo ou tenacidade física.
Estude uma disciplina de meditação real. O favorito perene entre hackers é o Zen (importante, é possível beneficiar-se do Zen sem adquirir uma religião ou descartar uma que você já possui). Outros estilos também podem funcionar, mas tenha o cuidado de escolher um que não exija que você acredite em coisas loucas.
Desenvolva um ouvido analítico para música. Aprenda a apreciar tipos peculiares de música. Aprenda a tocar bem um instrumento musical, ou a cantar.
Desenvolva sua apreciação por trocadilhos e jogo de palavras.
Quanto mais dessas coisas você já fizer, mais é provável que você seja um biotipo hacker natural. Por que essas coisas em particular, não está completamente claro, mas elas estão conectadas com uma combinação de habilidades do lado esquerdo e direito do cérebro que parece ser importante; hackers precisam ser capazes de ambos, raciocinar logicamente, e dar um passo fora da lógica aparente de um problema imediatamente.
Trabalhe tão intensamente quanto você brinca e brinque tão intensamente quanto você trabalha. Para verdadeiros hackers, os limites entre "brincar", "trabalho", "ciência" e "arte" tendem a desaparecer, ou se fundir em uma brincadeira criativa de alto nível. Além disso, não se contente com uma gama limitada de habilidades. Embora a maioria dos hackers se autodescrevam como programadores, eles são muito provavelmente mais do que competentes em várias habilidades relacionadas — administração de sistema, web design e solucionar problemas de hardware em PC, são algumas habilidades comuns. Um hacker que é administrador de sistema, por outro lado, é provavelmente bastante habilidoso na programação de scripts e em web design. Os hackers não fazem as coisas por metade; se eles investem em uma habilidade, eles tendem a ficar muito bons nela.
Não use um ID de usuário ou apelido bobo ou grandioso.
Não entre em guerras flamejantes na Usenet (ou em qualquer outro lugar).
Não se chame de "cyberpunk", e não perca seu tempo com quem o faz.
Não publique ou envie por e-mail textos cheios de erros ortográficos e gramática ruim.
A única reputação que você fará fazendo qualquer uma dessas coisas é como um twit[9]. Os hackers têm longa memória — pode demorar anos para que você se redima o suficiente para ser aceito.
O problema com pseudônimos ou identificadores merece alguma amplificação. Esconder sua identidade por trás de um pseudônimo é um comportamento juvenil e bobo característico de crackers, warez d00dz[10] e outras formas de vida mais baixas. Hackers não fazem isso; eles têm orgulho do que fazem e querem isso associado aos seus nomes reais. Então, se você tiver uma pseudônimo, deixe-o. Na cultura hacker, isso só irá marcar você como um perdedor.
Quando eu originalmente escrevi esse how-to no final de 1996, algumas das condições ao seu redor eram muito diferentes de como são hoje. Algumas palavras sobre essas mudanças podem ajudar a esclarecer as coisas para pessoas que estão confusas sobre o relacionamento de código aberto, software livre e Linux com a comunidade hacker. Se você não tem curiosidade sobre isso, pode ignorar e ir direto ao FAQ e à bibliografia daqui.
O ethos e a comunidade hacker como descrevi aqui antecede o surgimento do Linux após 1990; eu primeiro me envolvi em torno de 1976, e suas raízes são prontamente rastreáveis até o início da década de 1960. Mas, antes do Linux, a maioria do hacking (hackeamento) era feito em sistemas operacionais proprietários ou em um punhado de sistemas domésticos quase experimentais, como os ITS do MIT que nunca foram implantados fora de seus nichos acadêmicos originais. Embora houvesse algumas tentativas anteriores (pré-Linux) para mudar essa situação, seu impacto era, na melhor das hipóteses, muito marginal e confinado à comunidades de verdadeiros crentes dedicados, que eram pequenas minorias, mesmo dentro da comunidade hacker, sem falar em relação ao mundo maior de software em geral.
O que agora é chamado de "open source" remonta à tão longe quanto a comunidade hacker, mas até 1985 era uma prática popular sem nome, em vez de um movimento consciente com teorias e manifestos anexados a ela. Esta pré-história terminou quando, em 1985, o hacker Richard Stallman ("RMS") tentou dar-lhe um nome — "software livre". Mas seu ato de nomeação também era um ato de reivindicação; ele anexou bagagem ideológica ao rótulo de "software livre" que grande parte da comunidade de hackers existente nunca aceitou. Como resultado, o rótulo de "software livre" foi largamente rejeitado por uma minoria substancial da comunidade hacker (especialmente entre aqueles associados ao BSD Unix), e usado com sérias, mas silenciosas ressalvas pela maioria do restante (incluindo eu próprio).
Apesar dessas ressalvas, a reivindicação de RMS para definir e liderar a comunidade hacker sob a bandeira do "software livre" foi amplamente mantido até meados da década de 1990. Isso foi seriamente desafiado apenas pelo surgimento do Linux. O Linux deu ao desenvolvimento de código aberto um lar natural. Muitos projetos surgidos em termos que agora chamaríamos de código aberto, migraram de Unixes proprietários para o Linux. A comunidade em torno do Linux cresceu de forma explosiva, tornando-se muito maior e mais heterogênea do que a cultura hacker pré-Linux. RMS tentou decididamente cooptar toda essa atividade em seu movimento de "software livre", mas foi frustrado pela diversidade explosiva da comunidade Linux e pelo ceticismo público de seu fundador, Linus Torvalds. Torvalds continuou a usar o termo "software livre" por falta de qualquer alternativa, mas rejeitou publicamente a bagagem ideológica de RMS. Muitos hackers mais novos seguiram o exemplo.
Em 1996, quando publiquei pela primeira vez este Hacker HOWTO, a comunidade hacker estava rapidamente se reorganizando em torno do Linux e um punhado de outros sistemas operacionais de código aberto (principalmente aqueles que descendiam do BSD Unix). A memória comunitária do fato de que a maioria de nós passaram décadas desenvolvendo software de código fechado em sistemas operacionais de código fechado ainda não começara a desaparecer, mas esse fato já estava começando a parecer parte de um passado morto; os hackers estavam, cada vez mais, se definindo como hackers por seus anexos à projetos de código aberto, como Linux ou Apache.
O termo "open source", no entanto, ainda não havia surgido; não o faria até o início de 1998. Quando isso aconteceu, a maioria da comunidade hacker adotou-o dentro de seis meses; as exceções eram uma minoria vinculada ideologicamente ao termo "software livre". Desde 1998, e especialmente depois de 2003, a identificação de 'hacking' com 'desenvolvimento de código aberto (e software livre)' tornou-se extremamente próxima. Hoje, há pouco interesse em tentar distinguir entre essas categorias, e parece improvável que isso mude no futuro.
Vale lembrar, no entanto, que isso nem sempre foi assim.
Paul Graham escreveu um ensaio chamado Great Hackers (Grandes Hackes), e outro sobre Undergraduation (Graduação), nos quais ele fala com muita sabedoria.
Hackers mais jovens podem achar Things Every Hacker Once Knew (Coisas Que Todo Hacker Uma Vez Sabia) interessante e útil.
Também escrevi A Brief History Of Hackerdom (Uma Breve História do Hackerimo).
Escrevi um artigo, The Cathedral and the Bazaar (A Catedral e o Bazar), o qual explica muito sobre o funcionamento do Linux e das culturas open source. Eu abordei este tópico ainda mais diretamente em sua sequência Homesteading the Noosphere (Homenagem à Noosfera).
Rick Moen escreveu um excelente documento, how to run a Linux user group (como dirigir um grupo de usuários Linux).
Rick Moen e eu colaboramos em outro documento, How To Ask Smart Questions (Como Fazer Perguntas Inteligentes). Isso irá ajudá-lo a procurar ajuda de forma a tornar mais provável que você realmente a obtenha.
Se você precisar de instruções sobre o básico de como os computadores pessoais, Unix e a Internet funcionam, veja The Unix and Internet Fundamentals HOWTO (HOWTO sobre Fundamentos de Unix e Internet).
Quando você liberar software ou escrever patches para software, tente seguir as diretrizes em Software Release Practice HOWTO (HOWTO sobre Práticas de Liberação de Software).
Se você gosta de poesia Zen, você também pode gostar de Rootless Root: The Unix Koans of Master Foo (Raiz sem Raízes: Os Koans Unix do Mestre Foo).
P: Como eu sei se já sou um hacker?
P: Você vai me ensinar como hackear?
P: Como posso começar, então?
P: Quando você tem que começar? É tarde demais para eu aprender?
P: Quanto tempo demorará para eu aprender a hackear?
P: Visual Basic é uma boa linguagem de programação para começar?
P: Você me ajudaria a quebrar um sistema ou me ensinaria a quebrar?
P: Como posso obter a senha da conta de outra pessoa?
P: Como posso entrar/ler/monitorar o email de outra pessoa?
P: Como posso roubar privilégios de moderador de canal no IRC?
P: Fui crackeado. Você vai me ajudar a me defender de novos ataques?
P: Estou tendo problemas com o meu Windows. Você me ajuda?
P: Onde posso encontrar alguns hackers reais para conversar?
P: Você pode recomendar livros úteis sobre assuntos relacionados à hackear?
P: Preciso ser bom em matemática para me tornar um hacker?
P: Qual linguagem eu devo aprender primeiro?
P: Que tipo de hardware eu preciso?
P: Eu quero contribuir. Você pode me ajudar a escolher um problema para trabalhar?
P: Preciso odiar e atacar a Microsoft?
P: Mas o software de código aberto não deixará os programadores incapazes de ganhar a vida?
P: Onde posso obter um Unix livre?
Como eu sei se já sou um hacker?
Pergunte a si mesmo as três perguntas seguintes:
Você fala código, fluentemente?
Você se identifica com os objetivos e os valores da comunidade hacker?
Um membro bem estabelecido da comunidade hacker já o chamou de hacker?
Se você pode responder sim às três perguntas, você já é um hacker. Duas não são suficientes.
O primeiro teste é sobre habilidades. Você provavelmente passa se você tiver as habilidades técnicas mínimas descritas anteriormente neste documento. Você atravessa isso se você tem tido uma quantidade substancial de código aceita por um projeto de desenvolvimento de código aberto.
O segundo teste é sobre atitude. Se os cinco princípios da mentalidade hacker pareciam óbvios para você, mais como uma descrição da maneira como você já vive do que qualquer coisa tipo romance, você já está a meio caminho de passá-lo. Essa é a metade interna; a outra, a metade externa, é o grau em que você se identifica com os projetos de longo prazo da comunidade hacker.
Aqui está uma lista incompleta, mas indicativa, de alguns desses projetos: É importante para você que o Linux melhore e se espalhe? Você é apaixonado pela liberdade de software? Hostil aos monopólios? Você acha que os computadores podem ser instrumentos de empoeiramento que tornam o mundo um lugar mais rico e mais humano?
Mas há uma nota de cautela aqui. A comunidade hacker tem alguns interesses políticos específicos, principalmente defensivos — dois deles estão defendendo os direitos de liberdade de expressão e afastando o poder de "propriedade intelectual" que faria o open source ilegal. Alguns desses projetos de longo prazo são organizações de liberdades civis como a Electronic Frontier Foundation (Fundação Fronteira Eletrônica), e a atitude externa inclui adequadamente o apoio delas. Mas além disso, a maioria dos hackers vê tentativas de sistematizar a atitude hacker em um programa político explícito com suspeita; nós aprendemos, da maneira mais difícil, que essas tentativas são divisórias e distrativas. Se alguém tenta recrutá-lo para marchar em seu capitólio [11] em nome da atitude hacker, eles perderam o ponto. A resposta certa é provavelmente "Cale-se e mostre-lhes o código."
O terceiro teste tem um elemento complicado de recursividade sobre ele. Eu mencionei na seção chamada "O que é um hacker?" que ser um hacker é, em parte, uma questão de pertencer a uma subcultura particular ou a uma rede social com uma história compartilhada, interna e externa. No passado, os hackers eram um grupo muito menos coeso e autoconsciente do que é hoje. Mas a importância do aspecto da rede social aumentou ao longo dos últimos trinta anos, já que a Internet fez as conexões com o núcleo da subcultura mais fácil de desenvolver e manter. Um índice comportamental fácil de mudança é que, neste século, temos nossas próprias camisetas.
Os sociólogos, que estudam redes como os da cultura hacker sob a rubrica geral de "colégios invisíveis", notaram que uma das características dessas redes é que elas têm gatekeepers — membros principais com a autoridade social para endossar novos membros na rede. Porque a "faculdade invisível" que é a cultura hacker é livre e informal, o papel de gatekeeper também é informal. Mas uma coisa que todos os hackers entendem intuitivamente é que nem todo hacker é um gatekeeper. Gatekeepers tem que ter um certo grau de senioridade e realização antes que possam conferir o título. O quanto, é difícil de quantificar, mas todo hacker sabe quando o vê.
Você vai me ensinar como hackear?
Desde a primeira publicação desta página, recebi vários pedidos por semana (muitas vezes vários por dia) de pessoas pedindo "me ensine tudo sobre hackear". Infelizmente, não tenho tempo nem energia para fazer isso; meus próprios projetos hacker, e trabalhar como um defensor do open source, consomem 110% do meu tempo.
Mesmo se eu pudesse, hackear é uma atitude e habilidade que basicamente você precisa ensinar a si mesmo. Você descobrirá que, enquanto hackers reais querem ajudá-lo, eles não o respeitarão se você implorar para receber tudo o que eles sabem de bandeja.
Aprenda algumas coisas primeiro. Mostre que está tentando, que você é capaz de aprender sozinho. Em seguida, vá aos hackers que você encontra com perguntas específicas.
Se você enviar um e-mail a um hacker pedindo conselho, aqui estão duas coisas a serem conhecidas de antemão. Primeiro, nós descobrimos que pessoas que são preguiçosas ou descuidadas na sua escrita geralmente são muito preguiçosas e descuidadas em seus pensamentos para serem bons hackers — então, tome cuidado para escrever corretamente e use boa gramática e pontuação, caso contrário você provavelmente será ignorado. Em segundo lugar, não se atreva a pedir uma resposta à uma conta de ISP diferente da conta a qual você está enviando o e-mail; achamos que pessoas que fazem isso geralmente são ladrões usando contas roubadas, e não temos interesse em recompensar ou ajudar o roubo.
A melhor maneira de começar é provavelmente ir à uma reunião de um GUL (grupo de usuários Linux). Você pode encontrar esses grupos na página de informações Gerias do Linux, do LDP; provavelmente há um perto de você, possivelmente associado a uma faculdade ou universidade. Os membros do GUL provavelmente darão um Linux se você pedir, e certamente o ajudarão a instalar um e começar.
Seu próximo passo (e seu primeiro passo, se você não conseguir encontrar um GUL por perto) deve ser encontrar um projeto de código aberto que lhe interessa. Comece lendo o código e revisando os erros. Aprenda a contribuir, e trabalhe no seu espaço.
A única maneira de entrar nisso é trabalhar para melhorar suas habilidades. Se você me pedir pessoalmente conselhos sobre como começar, eu vou lhe dizer exatamente as mesmas coisas, porque eu não tenho nenhum atalho mágico para você. Eu também marcarei você mentalmente como um provável perdedor — porque se lhe faltou perseverança para ler esse FAQ e inteligência para entender que a única maneira de trabalhar é melhorar suas habilidades, você está sem esperança.
Outra possibilidade interessante é visitar um hackerspace. Há um movimento crescente de pessoas criando locais físicos — clubes de criadores — onde podem se encontrar para trabalhar em projetos de hardware e software juntos ou trabalhar sozinhos em uma atmosfera congenial. Hackerspaces muitas vezes colecionam ferramentas e equipamentos especializados que seriam muito caros ou logisticamente inconvenientes para os indivíduos possuírem. Hackerspaces são fáceis de encontrar na Internet; um pode estar localizado perto de você.
Qualquer idade em que você está motivado para começar é uma boa idade. A maioria das pessoas parecem se interessar entre 15 e 20 anos, mas conheço exceções em ambas as direções.
Quanto tempo demorará para eu aprender a hackear?
Isso depende de quão talentoso você é, e o quão duro você trabalha nisso. A maioria das pessoas que tentam podem adquirir um conjunto de habilidades respeitável entre dezoito meses a dois anos, se elas se concentrarem. Porém, não pense que isso termina aí; no hackeamento (como em muitos outros campos), leva cerca de dez anos para alcançar a maestria. E se você é um hacker de verdade, você passará o resto de sua vida aprendendo e aperfeiçoando sua habilidade.
Visual Basic é uma boa linguagem de programação para começar?
Se você está fazendo essa pergunta, quase certamente significa que você está pensando em tentar hackear no Microsoft Windows. Isso é uma má ideia por si só. Quando comparei tentar aprender a hackear no Windows à tentar aprender a dançar com o corpo engessado, eu não estava brincando. Não vá lá. É feio, e nunca deixa de ser feio.
Existe um problema específico com o Visual Basic; principalmente que ele não é portável. Embora exista um protótipo de implementação de código aberto do Visual Basic, os padrões ECMA aplicáveis não abrangem mais do que um pequeno conjunto de suas interfaces de programação. No Windows, a maior parte do suporte da biblioteca é proprietária de um único fornecedor (Microsoft); Se você não é extremamente cuidadoso sobre quais recursos você usa — mais cuidadoso do que qualquer iniciante é realmente capaz de ser — você acabará trancado apenas nas plataformas que a Microsoft opte por suportar. Se você está começando em um Unix, linguagens muito melhores com melhores bibliotecas estão disponíveis. Python, por exemplo.
Além disso, como outros Basics, o Visual Basic é uma linguagem mal projetada que irá ensinar-lhe maus hábitos de programação. Não, não me peça para descrevê-los em detalhes; essa explicação preencheria um livro. Aprenda uma linguagem bem projetada.
Um desses maus hábitos é tornar-se dependente de bibliotecas, widgets e ferramentas de desenvolvimento de um único fornecedor. Em geral, qualquer linguagem que não seja totalmente suportada em pelo menos Linux ou um dos BSDs e/ou pelo menos três sistemas operacionais de fornecedores diferentes, é um sistema ruim para aprender a hackear.
Você me ajudaria a quebrar um sistema ou me ensinaria a quebrar?
Não. Qualquer um que ainda possa fazer tal pergunta depois de ler este FAQ é muito estúpido para ser educável, mesmo que eu tivesse tempo para tutoria. Qualquer solicitação desse tipo que eu receber por e-mail será ignorada ou respondida com extrema descortesia.
Isso é crackear. Vá embora, idiota.
Como posso entrar/ler/monitorar o email de outra pessoa?
Isso é crackear. Cai fora, imbecil!
Como posso roubar privilégios de moderador de canal no IRC?
Isso é crackear. Se manda, cretino.
Fui crackeado. Você vai me ajudar a me defender de novos ataques?
Não. Toda vez que me fizeram essa pergunta até agora, foi algum pobre coitado executando o Microsoft Windows. Não é possível proteger eficazmente os sistemas Windows contra ataques; o código e a arquitetura simplesmente têm muitas falhas, o que torna proteger o Windows como tentar resgatar um barco com uma peneira. A única prevenção confiável começa com a mudança para o Linux ou algum outro sistema operacional projetado pelo menos para ser capaz de ter segurança.
Estou tendo problemas com o meu Windows. Você me ajuda?
Sim. Vá para um prompt DOS e digite "format c:". Qualquer problema que você esteja enfrentando acabará dentro de alguns minutos.
Onde posso encontrar alguns hackers reais para conversar?
A melhor maneira é encontrar um grupo local de usuários do Unix ou Linux e ir às suas reuniões (você pode encontrar links para várias listas de grupos de usuários no site LDP no ibiblio).
(Eu costumava dizer aqui que você não encontraria hackers reais no IRC, mas fui levado a crer que isso está mudando. Aparentemente, algumas comunidades hackers reais, anexadas à coisas como GIMP e Perl, têm canais IRC agora.)
Você pode recomendar livros úteis sobre assuntos relacionados à hackear?
Eu mantenho uma Lista de Leituras sobre Linux que você pode achar útil. O Loginataka também pode ser interessante.
Para uma introdução ao Python, veja o tutorial no site do Python.
Preciso ser bom em matemática para me tornar um hacker?
Não. Hackear usa muito pouco matemática formal ou aritmética. Em particular, você geralmente não precisará de trigonometria, cálculo ou análise (há exceções em algumas áreas de aplicação específicas, como computação gráfica 3D). Conhecer alguma lógica formal e álgebra booleana é bom. Alguns fundamentos de matemática discreta (incluindo teoria de conjuntos finitos, combinatória e teoria dos grafos) podem ser úteis.
Muito mais importante: você precisa pensar logicamente e seguir cadeias de raciocínio exato, como fazem os matemáticos. Embora o conteúdo da maioria das matemáticas não o ajude, você precisará de disciplina e inteligência para lidar com a matemática. Se você não tem inteligência, há pouca esperança para você como hacker; se você não tem a disciplina, é melhor cultivá-la.
Eu acho que uma boa maneira de descobrir se você tem o que é preciso, é pegar uma cópia do livro de Raymond Smullyan What Is The Name Of This Book?. Os enigmas lógicos lúdicos de Smullyan estão muito no espírito hacker. Ser capaz de resolvê-los é um bom sinal; desfrutar de resolvê-los é ainda melhor.
Qual linguagem eu devo aprender primeiro?
HTML, se você ainda não o conhece. Há muitos livros muito bonitos, exageradamente intensivos e ruins por aí, e angustiantemente, poucos bons. O que mais gosto é HTML: The Definitive Guide (HTML: O Guia Definitivo).
Mas HTML não é uma linguagem de programação completa. Quando você estiver pronto para começar a programar, eu recomendaria começar com Python. Você ouvirá muitas pessoas recomendando Perl, mas é mais difícil de aprender e (na minha opinião) menos bem projetado.
C é realmente importante, mas também é muito mais difícil do que Python ou Perl. Não tente aprender primeiro.
Usuários de Windows, não se conformem com o Visual Basic. Ele irá ensinar-lhes maus hábitos, e não é portável fora do Windows. Evitem.
Era comum computadores pessoais serem pouco poderosos e com pouca memória, o suficiente para que eles colocassem limites artificiais no processo de aprendizado de um hacker. Isso deixou de ser verdade em meados da década de 1990; qualquer máquina a partir de um Intel 486DX50 é mais que poderosa para desenvolvimento, para usar o X (modo gráfico) e Internet, e os menores discos que você pode comprar hoje são grandes o suficiente.
O importante na escolha de uma máquina para aprender, é se o seu hardware é compatível com Linux (ou compatível com BSD, se você escolher esse caminho). Mais uma vez, isso será verdade para quase todas as máquinas modernas. As únicas áreas realmente pegajosas são modems e placas wireless; algumas máquinas possuem hardware específico para Windows, que não funciona com Linux.
Há uma FAQ sobre compatibilidade de hardware; a última versão está aqui.
Não, porque não conheço seus talentos ou interesses. Você tem que ser auto-motivado ou você não vai ficar bom, e é por isso que ter outras pessoas escolhendo sua direção quase nunca funciona.
Preciso odiar e atacar a Microsoft?
Não, você não precisa. Não que a Microsoft não seja repugnante, mas houve uma cultura hacker muito antes da Microsoft, e ainda haverá uma tempos depois que a Microsoft virar história. Qualquer energia que você gaste odiando a Microsoft seria melhor gasta amando seu ofício. Escreva um bom código — isso vai insultar a Microsoft o suficiente, sem poluir o seu carma.
Isso parece improvável — até agora, a indústria de software de código aberto parece estar criando empregos em vez de acabar com eles. Se ter um programa escrito é um ganho econômico maior do que não tê-lo escrito, um programador será pago, o programa sendo ou não, de código aberto depois de pronto. E, não importa quanto software "livre" seja escrito, sempre parece haver mais demanda por aplicativos novos e customizados. Eu escrevi mais sobre isso nas páginas de Open Source.
Onde posso obter um Unix livre?
Se você ainda não possui um Unix instalado em sua máquina, em algum outro lugar nesta página eu incluí referências de onde obter o Unix mais utilizado. Para ser um hacker, você precisa de motivação, iniciativa e a habilidade de se educar. Comece agora...