Niniejszy dokument jest tłumaczeniem oryginału dostępnego na http://www.catb.org/esr/faqs/hacker-howto.html w wersji 1.50. Autorem oryginału jest Eric S. Raymond. Motywacją, dla której chcę podzielić się tłumaczeniem jest ogromna wartość edukacyjna dokumentu. W mojej opinii stanowi on zbiór bardzo cennych oraz inspirujących rad dla początkujących i rozwijających się programistów. Przed rozpoczęciem lektury warto zapoznać się z definicją pojęcia ‘hacker’. Zapraszam do lektury.

Aktualizacja: Dokument został zaakceptowany jako oficjalne tłumaczenie na stronie oryginalnego tłumaczenia.

Dlaczego powstał ten dokument?

Jako twórca Jargon File (kompendium slangu hackerskiego przyp. tłum.) często otrzymuję prośby e-mailem od wielu entuzjastycznych nowicjuszy w Sieci pytających (w skrócie): “w jaki sposób mogę zostać doskonałym hackerem?”. Jeszcze w 1996 dostrzegłem brak FAQ czy innego dokumentu w sieci poruszającego ten temat, więc zdecydowałem się napisać własny. Dziś wielu hackerów uznaje ten dokument za wyczerpujący temat, moim zdaniem mówi to samo za siebie. Pomimo tego, nie uważam się za wyłączny autorytet w temacie; jeśli nie podoba Ci się teść tego dokumentu, napisz swój.

Jeśli czytasz zrzut tego dokumentu offline, bieżąca wersja (oryginalna w języku angielskim przyp. tłum.) znajduje się na http://www.catb.org/esr/faqs/hacker-howto.html. Tłumaczenie dostępne jest na http://michalp.net/blog/posts/hacker-howto.

Symbol pięciu kropek w dziewięciu kwadratach dekorujący ten dokument nazywany jest glider. Jest to prosty wzór posiadający pewne zaskakujące właściwości w matematycznej symulacji zwanej Life, od lat fascynowały one hackerów. Uważam, że stanowi on dobry emblemat reprezentujący jacy są hackerzy - myślący abstrakcyjnie, z pozoru tajemniczy, lecz są bramą do całego świata z całą jego skomplikowaną logiką. Więcej na temat glidera można przeczytać na http://www.catb.org/~esr/hacker-emblem/.

Jeśli uważasz ten dokument za wartościowy, proszę wesprzyj mnie na Patreon (autora oryginału przyp. tłum.). Ponadto rozważ wesprzyj także innych hackerów, którzy stworzyli kod, z którego korzystasz i który cenisz. Wiele małych, lecz ciągłych darowizn sumuje się szybko, wspierając ludzi, którzy obdarowali was swoją pracą do tworzenia jeszcze większych wartości.

Kim jest Hacker?

Jargon File zawiera garść definicji terminu “hacker”, w większości opierających się na biegłości w zagadnieniach technicznych, znajdowaniu upodobania w rozwiązywaniu problemów i przekraczaniu ograniczeń. Jeśli jednak chcesz wiedzieć, w jaki sposób zostać hackerem, tylko dwie z nich są naprawdę odpowiednie.

Istnieje społeczność, kultura grupowa, złożona z ekspertów w dziedzinie programowania i magików sieciowych, której historia sięga wstecz poprzez dziesięciolecia do pierwszych wielodostępnych minikomputerów z podziałem czasu i najwcześniejszych eksperymentów z siecią ARPAnet. Członkowie tej kultury zapoczątkowali termin hacker. Hackerzy zbudowali Internet. Hackerzy uczynili z UNIXa system operayjny, jakim jest dzisiaj. Hackerzy zapoczątkowali Usenet. Hackerzy sprawili, że WWW (World Wide Web) zaczęła działać. Jeśli jesteś częścią tej kultury, jeśli bierzesz w niej czynny udział i inni ludzie z tej grupy Ciebie znają i nazywają Cię hackerem - wtedy jesteś hackerem.

Jest druga grupa ludzi, którzy głośno nazywają siebie hackerami, ale nimi nie są. Wspomniani ludzie (w większości niedorosłe osobniki płci męskiej) znajdują podnietę we włamywaniu się do komputerów i robieniu zamieszania* w systemie telefonicznym. Prawdziwi hackerzy nazywają takich ludzi “crackerami” i nie chcą mieć z nimi nic wspólnego. Prawdziwi hackerzy w większości uważają, że crackerzy są leniwi, nieodpowiedzialni i niezbyt błyskotliwi, a fakt, że jesteś w stanie przełamać system ochrony nie czyni Cię hackerem bardziej niż umiejętność uruchamiania samochodu “na krótko” czyni kogoś inżynierem w dziedzinie motoryzacji. Niestety, wielu dziennikarzy i autorów publikacji dało się oszukać i używają słowa “hacker” na określenie crackera. A to bezgranicznie irytuje hackerów z prawdziwego zdarzenia.

Podstawowa różnica jest następująca: hackerzy coś tworzą, a crackerzy to niszczą.

Jeśli chcesz być hackerem, czytaj dalej. Jeśli masz ambicję zostać crackerem, przeczytaj grupę dyskusyjną alt.2600 i przygotuj się na pięć do dziesięciu lat odsiadki po tym, jak okaże się, że nie jesteś tak bystry, jak myślałeś. I to wszystko co mam do powiedzenia o crackerach.

Postawa Hackera

1. Świat jest pełen fascynujących problemów, czekających na rozwiązanie

2. Żaden problem nie powinien być rozwiązywany dwukrotnie

3. Nuda i harówka są złe

4. Wolność jest dobra

5. Postawa nie zastąpi kompetencji

Hackerzy rozwiązują problemy i tworzą rzeczy wierząc w wolność i wzajemną pomoc. Chcąc być zaakceptowanym jako hacker, musisz zachowywać się jakbyś sam miał takie podejścia. Jednak żeby zachowywać się tak, jakbyś miał takie podejście, musisz w nie naprawdę uwierzyć.

Jednakże, jeśli myślisz o rozwijaniu postaw hackerskich jedynie jak o metodzie uzyskania akceptacji wewnątrz kultury, zmierzasz w złym kierunku. Bardzo ważne jest, abyś stał się takim typem człowieka, który wierzy w te rzeczy - po to, byś łatwiej uczył się i zachował motywację. Jak we wszystkich dziedzinach twórczej sztuki, najefektywniejszą metodą zostania mistrzem jest naśladowanie stylu myślenia mistrzów - nie tylko intelektualnie, lecz również emocjonalnie. Jak mówi jedno z przysłów Zen:

By podążać ścieżką: poszukuj mistrza, podążaj za mistrzem, walcz z mistrzem, przejrzyj mistrza, zostań mistrzem.

Chcąc zatem być hackerem, powtarzaj następujące zasady tak długo, aż zaczniesz w nie wierzyć:

1. Świat jest pełen fascynujących problemów, czekających na rozwiązanie

Być hackerem to mnóstwo zabawy, ale to tego typu zabawa, która pochłania mnóstwo wysiłku. Wysiłek wymaga motywacji. Atleci odnoszący sukcesy biorą swoją motywację z formy fizycznego zadowolenia płynącego z umiejętności nakłonienia własnego ciała, aby działało tak, jak sobie tego życzą, z popychania samych siebie poza własne fizyczne ograniczenia. Podobnie, aby być hackerem, musisz odczuwać podstawową satysfakcję z rozwiązywania problemów, wyostrzania własnych umiejętności i ćwiczenia swojej inteligencji.

Jeśli nie jesteś osobą myślącą tak w sposób naturalny, musisz takim zostać, jeśli chcesz być hackerem. W przeciwnym razie zorientujesz się, że twoja hackerska energia jest uszczuplana przez zagadnienia takie jak seks, pieniądze i społeczna akceptacja.

(Musisz również rozwinąć w sobie rodzaj wiary we własne możliwości uczenia się - wiary, że możesz nie wiedzieć wszystkiego, czego potrzebujesz do rozwiązania problemu, ale jeśli zmierzysz się z nim choć trochę i wskutek tego nauczysz się czegoś, umiesz już wystarczająco, żeby ugryźć następny kawałek i tak dalej, aż będzie po wszystkim.)

2. Żaden problem nie powinien być rozwiązywany dwukrotnie

Twórcze umysły są wartościowym, rzadkim surowcem. Nie powinny być marnotrawione na powtórne “wynajdowanie koła” jeśli jest tyle fascynujących problemów czekających na rozwiązanie.

Aby zachowywać się jak hacker musisz wierzyć, że myślowy czas innych hackerów jest cenny - tak bardzo, że niemal moralnym obowiązkiem jest, abyś dzielił się informacjami, rozwiązywał problemy i rozdawał rozwiązania tak, aby inni hackerzy mogli rozwiązywać nowe problemy zamiast konieczności ciągłego przetwarzania starych.

(Nie musisz wierzyć, że masz obowiązek rozdawać za darmo całą swoją twórczą działalność, choć hackerzy, którzy tak czynią uzyskują najwięcej szacunku w tej społeczności. Nie jest sprzeczne z wartościami hackera, żebyś mógł sprzedać wystarczająco dużo, aby mieć dostęp do pożywienia, dachu nad głową i komputerów. Jest logiczne, że używasz swoich hackerskich umiejętności aby utrzymać rodzinę lub wręcz wzbogacić się, tak długo, dopóki robiąc to nie zapomnisz, że jesteś hackerem.)

3. Nuda i harówka są złe

Hackerzy (i twórczy ludzie w ogóle) nigdy nie powinni zanudzać się czy też być zmuszonymi do zaharowywania się przy głupiej i powtarzalnej robocie, ponieważ jeśli tak się stanie, okaże się, że nie robią tego, co powinni - rozwiązywania problemów. To marnotrawstwo szkodzi wszystkim. Dlatego znudzenie i nużąca praca są nie tylko nieprzyjemne, ale w rzeczywistości szkodliwe.

Chcąc zachowywać się tak, jak hacker, musisz uwierzyć w to wystarczająco mocno, aby zautomatyzować nudne fragmenty tak bardzo, jak to możliwe, nie tylko dla siebie, ale i dla innych (w szczególności innych hackerów).

(Jest jednak pewien oczywisty wyjątek od tej reguły. Hackerzy czasem robią rzeczy, które mogą wydawać się powtarzalnymi lub nudnymi dla obserwatora jako ćwiczenia oczyszczające umysł, lub, gdy w celu osiągnięcia konkretnego rodzaju doświadczenia nie można inaczej. Ale jest to wybór - nikt, kto jest istotą myślącą nie powinien być zmuszany do nudy.)

4. Wolność jest dobra

Hackerzy z natury sprzeciwiają się narzucaniu władzy. Każdy, kto może wydawać Ci polecenia jest w stanie powstrzymać Cię przed rozwiązywaniem problemu, niezależnie jak bardzo byłbyś nim zafascynowany - a biorąc pod uwagę sposób działania władczych umysłów, zawsze znajdą one jakiś niebywale głupi powód aby tak uczynić. Więc autokratyczne nastawienie powinno być zwalczane gdziekolwiek byś go nie znalazł, w przeciwnym razie stłumi Ciebie i innych hackerów.

(To nie jest wszakże to samo, co zwalczanie wszelkich form władzy. Dzieci muszą być wychowywane a przestępcy izolowani. Hacker może zgodzić się na zaakceptowanie pewnych form władzy w celu osiągnięcia czegoś co ceni bardziej niż czas, który poświęci spełniając rozkazy. Ale to jest ograniczona i świadoma transakcja, nikt nie oferuje takiej formy uległości, jakiej oczekiwaliby ludzie o autokratycznym nastawieniu).

Autokratom służy cenzura i utajnienie. Nie ufają oni dobrowolnej współpracy i chęci dzielenia się informacjami - jedyną współpracą, którą lubią jest ta kontrolowana przez nich. Więc aby zachowywać się jak hacker, musisz wytworzyć w sobie instynktowną wrogość wobec cenzury, utajnienia i używania siły lub podstępu do wywierania przymusu na odpowiedzialnych za swoje czyny dorosłych ludziach. I musisz być gotów do działania zgodnie z tymi przekonaniami.

5. Postawa nie zastąpi kompetencji

Chcąc być hackerem musisz wytworzyć w sobie niektóre z tych postaw. Ale kopiowanie postawy samej dla siebie nie uczyni z Ciebie hackera, tak samo jak postawa nie uczyni z Ciebie mistrza w sporcie lub gwiazdy rocka. Żeby zostać hackerem potrzeba inteligencji, ćwiczeń, poświęcenia i ciężkiej pracy.

W związku z tym musisz nauczyć się niedowierzania w postawę oraz szacunku dla kompetencji pod każdą postacią. Hackerzy nie pozwolą pozerom marnować ich czasu, ale cenią sobie kompetencję - szczególnie kompetencję w hackerstwie, ale każda inna jest też dobra. Kompetencja w dziedzinach, które niewielu potrafi opanować jest szczególnie ceniona, a kompetencja w dziedzinach, które wymagają umysłowej dokładności, wysiłku i koncentracji jest ze wszystkich najlepsza.

Jeśli jesteś czcicielem kompetencji, będziesz z przyjemnością rozwijać je w sobie - ciężka praca i poświęcenie staną się formą intensywnej zabawy, nie zaś harówką. A to jest szczególnie istotne w procesie stawania się hackerem.

Podstawowe umiejętności hackera

1. Naucz się programowania

2. Pobierz jednego z otarto-źródłowych Unixów i naucz się go używać

3. Naucz się używać WWW i pisać w HTML

4. Jeśli nie znasz języka angielskiego, naucz się go

Postawa hackera jest istotna, ale umiejętności znaczą jeszcze więcej. Postawa nie zastąpi kompetencji i można wyróżnić pewien konkretny zestaw umiejętności, które będziesz musiał posiąść, zanim hackerom przyśni się nazwać Ciebie jednym z nich.

Ten zestaw zmienia się powoli w czasie wraz z techniką wytwarzającą nowe zdolności i czyniące inne z nich przestarzałymi. Na przykład kiedyś do zasobu zdolności hackera zaliczało się programowanie w języku maszynowym, natomiast do niedawna nie należała do nich znajomość HTMLa. W chwili obecnej w miarę jasno można zaliczyć do nich następujące:

1. Naucz się programowania

Jest to oczywiście, fundamentalna umiejętność hackera. Jeśli nie znasz żadnego języka programowania, polecam zacząć od Pythona. Jest zaprojektowany w sposób czysty, dobrze udokumentowany i relatywnie prosty dla początkujący. Pomimo bycia dobrym pierwszym językiem do nauki, nie jest to tylko zabawka; jest on bardzo potężny, elastyczny i dobrze dopasowany do dużych projektów. Napisałem bardziej szczegółową ocenę Pythona (dla linuxjournal.com przyp. tłum.). Dobre tutoriale dostępne są na stronie języka Python; jeden doskonały tutorial dostępny jest na Computer Science Circles (warto również przejść kurs na codeacademy.com przyp. tłum.).

Kiedyś rekomendowałem Javę jako dobry język by nauczyć się go wcześnie, jednak ta krytyka zmieniła moją opinię (wyszukaj w nim “The Pitfalls of Java as a First Programming Language”). Hacker nie może, jak druzgocąco to określili:

“podchodzić do rozwiązania problemu jak hydraulik w sklepie z narzędziami”

Musisz wiedzieć za co właściwie odpowiadają poszczególne komponenty. Teraz myślę, że prawdopodobnie najlepiej nauczyć się języków C oraz Lisp, dopiero później Javy.

Kwestia ta jednak może być bardziej ogólna. Jeżeli język wyręcza Cię zbyt mocno, może być jednocześnie dobrym narzędziem do wytwarzania oprogramowania i złym do nauki programowania. Problem dotyczy nie tylko języków programowania, frameworki aplikacji webowych takie jak RubyOnRails, CakePHP czy Django pozwalają w szybki sposób uzyskać powierzchowne zrozumienie pozostawiając bez środków kiedy trzeba zmierzyć się z trudnym problemem, lub nawet debugować łatwy problem.

Jeśli zajmiesz się poważnym programowaniem, będziesz musiał nauczyć się C, rdzennego języka systemu UNIX. C++ jest mocno związany z C; jeśli znasz jeden z nich, nauka drugiego nie sprawi Ci trudności. Jednak żaden z nich nie jest dobrym kandydatem na pierwszy język do nauki. Właściwie im więcej unikasz programowania w C tym bardziej będziesz produktywny.

C jest bardzo wydajne oraz oszczędne dla zasobów systemu. Niestety, C osiąga tę efektywność wymagając od Ciebie samodzielnego, bardzo nisko-poziomowego zarządzania zasobami (takimi jak pamięć). Cały ten nisko-poziomowy kod jest skomplikowany, podatny na bugi oraz pochłania ogromne ilości czasu na debuggowanie. Przy mocy obliczeniowej dzisiejszych maszyn, jest to zazwyczaj zły kompromis - mądrzejszym rozwiązaniem jest zastosowanie języka, który wykorzystuje czas maszynowy mniej efektywnie, lecz czyni twój czas bardziej efektywnym. Tak więc Python.

Innymi językami o szczególnym znaczeniu dla hackerów są między innymi Perl i Lisp. Perla warto uczyć się z konkretnych powodów; jest szeroko stosowany w aktywnych stronach internetowych i administracji systemami, więc nawet jeśli nigdy nie będziesz pisać w Perlu, powinieneś poznać go aby rozumieć czytany kod. Wielu ludzi używa Perla w sposób, w który ja sugeruję używać Pythona: by unikać rozwiązywania w C problemów, które nie wymagają jego wydajności. Będziesz potrzebował zrozumieć ich kod.

LISP jest warty nauki z innego powodu - głębokiego oświecenia, którego doświadczysz kiedy w końcu go zrozumiesz. To doświadczenie uczni Cię lepszym programistą, nawet jeśli nigdy nie będziesz z niego korzystać. (Możesz uzyskać trochę doświadczenia z LISPem w dość łatwy sposób pisząc i modyfikując tryby w Emacs’ie lub pluginy Script-Fu w GIMPie.)

Właściwie najlepiej zrobisz ucząc się wszystkich pięciu języków: Pythona, C/C++, Javy, Perla i LISPa. Pomimo bycia najistotniejszymi językami w świecie hackingu, reprezentują one różne podejścia do programowania i każdy może nauczyć wartościowych dróg rozwiązywania problemów.

Bądź jednak świadom, że nie osiągniesz poziomu umiejętności hackera, a nawet zwykłego programisty, jeśli będziesz uczyć się kolejnych języków programowania - musisz nauczyć się myśleć o problemie programistycznym w sposób ogólny, niezależny od jakiegokolwiek języka. Chcąc zostać prawdziwym hackerem, potrzebujesz osiągnąć poziom, na którym możesz nauczyć się nowego języka w ciągu dni poprzez porównanie tego, co wyczytasz w podręczniku z tym, co już umiesz. Oznacza to, że powinienieś nauczyć się kilku bardzo różniących się od siebie języków.

Nie mogę dać tu kompletnych instrukcji jak nauczyć się programowania - to skomplikowana umiejętność. Mogę jednak powiedzieć, że książki i kursy tego nie zrobią - wielu, może większość najlepszych hackerów to samouki. Możesz nauczyć się cech języka - porcji wiedzy - z książek, lecz rozumowanie, które czyni wiedzę żywą umiejętnością rozwiniesz tylko przez praktykę i staż. Co Ci pomoże to: (a) czytanie kodu, (b) pisanie kodu.

Peter Norvig, jeden z najlepszych hackerów Google oraz współautor najpopularniejszych podręczników w dziedzinie AI (Artificial Intelligence - sztucznej inteligencji przyp. tłum.), napisał znakomity esej zatytułowany Teach Yourself Programming in Ten Years (Naucz się programowania w dziesięć lat przyp. tłum.). Jego “recepta na sukces programistyczny” szczególnej uwagi.

Nauka programowania jest jak nauka doskonałego pisania w języku naturalnym. Najlepszą metodą jest czytanie rzeczy pisanych przez mistrzów formy, pisanie samemu, czytanie dużo więcej, pisanie nieco więcej, czytanie jeszcze więcej, pisanie jeszcze trochę więcej … powtarzaj aż Twoje pisanie zacznie rozwijać się do siły i wydajności, którą obserwujesz w swoich wzorcach.

Miałem więcej do powiedzenia na temat procesu nauki w How To Learn Hacking. Jest to prosty zestaw instrukcji, lecz nie łatwy w realizacji.

Kiedyś znalezienie dobrego kodu było zadaniem trudnym, ponieważ mało było dużych programów dostępnych w kodzie źródłowym do czytania i zabawy dla świeżo opierzonych hackerów. Zmieniło się to jednak znacząco; otwarte oprogramowanie, narzędzia programistyczne, systemy operacyjne (wszystkie zbudowane przez hackerów) są dziś szeroko dostępne. Zgrabnie doprowadza mnie do następnego tematu…

2. Pobierz jednego z otarto-źródłowych Unixów i naucz się go używać

Zakładam, że masz komputer, lub możesz uzyskać dostęp do takowego (Doceń jak wiele to znaczy. Kultura hackerów rozwijał się w czasach, gdy komputery były zbyt drogie by posiadać taki nawłasność). Jeden z najważniejszych kroków, który musi postawić nowicjusz w kierunku osiągnięcia umiejętności hackera jest zdobycie kopii Linuxa lub jednego z BSD-UNIXów, zainstalowanie go na komputerze i uruchomienie.

Tak, są na tym świecie systemy operacyjne poza UNIXem. Jednak udostępniane są w kodzie binarnym - nie możesz poczytać kodu i nie możesz go zmodyfikować. Próbowanie nauki hackerstwa w Microsoft Windows lub pod dowolnym zamknięto-źródłowym systemem jest jak nauka tańca z gipsem na całym ciele.

Pod Mac OS X jest to możliwe, lecz system jest otwarty tylko częściowo - prawdopodobnie natkniesz się na wiele przeszkód i będziesz musiał zachować ostrożność by nie nabyć złego nawyku polegania na własnościowym kodzie Apple. Jeśli koncentrujesz się na UNIXie pod spodem, możesz nauczyć się kilku użytecznych rzeczy.

UNIX jest systemem operacyjnym Internetu. Podczas gdy możesz nauczyć się posługiwania Internetem bez znajomości UNIXa, bez zrozumienia go nie nauczysz się internetowego hackerstwa. Z tego powodu kultura hackerów jest silnie scentralizowana wokół UNIXa. (To nie zawsze była prawda i niektórzy hackerzy starej daty nie są z tego powodu szczęśliwi, ale symbioza pomiędzy UNIXem i Internetem stała się tak silna, że nawet potęga Microsoftu nie jest w stanie zadać jej poważnego ciosu).

Więc postaw UNIXa - osobiście lubię Linuxa, ale są inne możliwości (oczywiście, możesz używać Linuxa i DOS/Windows na tej samej maszynie). Naucz się go. Zarządzaj nim. Baw się nim. Nawiąż kontakt z Internetem za jego pomocą. Czytaj jego kod źródłowy. Modyfikuj kod. Otrzymasz lepsze narzędzia programistyczne (włączając C, LISP, Python, i Perl) niż system operacyjny Microsoftu mógłby marzyć, będziesz miał kupę frajdy i wsiąkniesz więcej wiedzy niż się zorientujesz zanim nie spojrzysz na to później z perspektywy hackerskiego mistrza.

Więcej informacji na temat nauki UNIXa, zobacz The Loginataka. Możesz również być zainteresowany dokumentem The Art Of UNIX Programming.

Blog Let’s Go Larval! jest oknem na proces nauki nowego użytkownika Linuxa, który uważam za niezwykle przejrzysty i pomocny. Post How I Learned Linux jest dobrym punktem wyjścia.

Chcąc dopaść Linuxa w swoje ręce, zobacz Linux Online!; możesz pobrać stamtąd Linuxa lub (lepszy pomysł) znaleźć lokalną grupę użytkowników Linuxa, która pomoże Ci z instalacją.

W ciągu dziesięciu lat życia tego artykułu, zauważyłem że z punktu widzenia nowego użytkownika, wszystkie dystrybucje Linuxa są niemal identyczny. Jednak w 2006-2007, wyłonił się najlepszy kandydat: Ubuntu. Podczas gdy inne dystrybucje są silne w pewnych obszarach, Ubuntu jest najbardziej przystępnym dla nowych użytkowników. Uważaj jednak, z ohydnym i prawie-nie do użytku interfejsem “Unity”, które Ubuntu wprowadziło jako domyślny kilka lat później; warianty Xubuntu lub Kubuntu są lepsze.

Pomoc i zasoby na temat UNIXa BSD znajdziesz na bsd.org.

Dobrym sposobem na zanurzenie palców w wodzie jest uruchomienie tego, co zwolennicy Linuxa nazywają live CD, dystrybucję która działa wyłącznie z płyty CD (lub DVD czy napędu USB przyp. tłum.) nie modyfikując dysku twardego. Rozwiązanie takie będzie powolne, ponieważ CD są powolne (lepszym rozwiązaniem jest live USB przyp. tłum.), lecz jest to sposób na poznanie możliwości bez podejmowania drastycznych działań.

Napisałem elementarz na temat podstaw UNIXa oraz Internetu.

Kiedyś odradzałem instalację Linuxa czy BSD jako samodzielnego systemu dla początkujących. W dzisiejszych czasach instalatory stały się na tyle dobre, że umożliwiają samodzielną instalację nawet początkującym. Mimo tego, wciąż radzę kontaktowanie się z lokalną grupą użytkowników Linuxa i prośbę o pomoc. Nie zrobi Ci to krzywdy, a może uprościć proces.

3. Naucz się używać WWW i pisać w HTML

Większość rzeczy, które zostały zbudowane przez kulturę hackerską jest ukrytych przed wzrokiem pozwalając kierować fabrykami, biurami i uniwersytetami bez widocznego piętna na stylu życia nie-hackerów. Sieć jest jednym wielkim wyjątkiem, wielką błyszczącą zabawką hackerów, która, co potwierdzają nawet politycy, zmienia świat. Z tego jednego powodu (i wielu innych równie dobrych) powinieneś nauczyć się jak ona działa.

Nie oznacza to po umiejętności posługiwania się przeglądarką (każdy to może zrobić), ale umiejętność się pisania w HTML, języku sieci. Jeśli nie umiesz programować, pisanie w HTMLu wyrobi Ci parę nawyków, które pomogą Ci w nauce. Zatem: zbuduj własną stronę domową.

Jednakże posiadanie samej strony domowej nie jest jeszcze wystarczające do uczynienia Cię hackerem. Sieć jest pełna stron domowych. Większość z nich jest bezcelowym, pozbawionym zawartości osadem - bardzo wymyślnie wyglądającym, trzeba zauważyć, ale osadem bez dwóch zdań (po więcej informacji wejdź na The HTML Hell Page).

By być wartościową, Twoja strona musi zawierać treść - musi być interesująca i/lub użyteczna dla innych hackerów. Ta użyteczność przenosi nas do następnego tematu…

4. Jeśli nie znasz języka angielskiego, naucz się go

Jako Amerykanin, którego rodzimy język to angielski, początkowo byłem niechętny by to zasugerować, aby nie przyjęto tego jako rodzaju imperializmu kulturowego. Jednak kilku native-speakerów innych języków nalegało bym wskazał, że angielski jest roboczym językiem kultury hackerskiej i Internetu, zatem musisz go znać by funkcjonować w społeczności hackerów.

Jeszcze około 1991 dowiedziałem się, że wielu hackerów, dla których angielski nie jest rodzimym językiem, używają go w dyskusjach technicznych nawet wtedy, gdy są tej samej narodowości; powiedziano mi wtedy, że angielski ma bogatsze słownictwo techniczne niż jakikolwiek język i jest zwyczajnie lepszym narzędziem pracy. Z podobnych powodów, tłumaczenia technicznych książek napisanych w języku angielskim są często niesatysfakcjonujące (jeśli w ogóle są wykonywane).

Linus Torvalds, który jest Finem, komentuje swój kod w języku angielskim (okazuje się że nigdy nie robił inaczej). Jego płynna znajomość angielskiego była istotnym czynnikiem w jego umiejętności do rekrutowania światowej społeczności developerów dla Linuxa. To jest przykład warty naśladowania.

Bycie native-speakerem języka angielskiego nie gwarantuje, że masz wystarczające umiejętności językowe by funkcjonować jako hacker. Jeśli twoje umiejętności piśmiennicze są słabe, piszesz niegramatycznie i popełniasz literówki, wielu hackerów (w tym ja) będzie raczej Cię ignorować. Podczas gdy niechlujne pisanie nie oznacza niechlujnego myślenia, jednak zazwyczaj korelacja między jednym a drugim jest dość mocna - a nam nie są potrzebne osoby o niechlujnym sposobie myślenia. Jeśli dotychczas nie nauczyłeś się pisać sprawnie, naucz się.

Status w kulturze hackerskiej

1. Twórz otwarte oprogramowanie

2. Pomóż testować i debugować otwarte oprogramowanie

3. Publikuj użyteczne informacje

4. Pomóż w utrzymywaniu infrastruktury

5. Służ samej kulturze

Podobnie jak większość kultur nie zawierających ekonomii pieniądza, hackerstwo opiera się na reputacji. Starasz się rozwiązać interesujące problemy, ale na ile są one interesujące oraz na ile Twoje rozwiązania są dobre jest zagadnieniem, to sprawy, które osądzić potrafią tylko techniczni współpracownicy i przełożeni.

W związku z tym, jeśli bierzesz udział w tej hackerskiej zabawie uczysz się oceniać własne wyniki tylko na podstawie tego, co inni sądzą o Twoich umiejętnościach (stąd właśnie bierze się stwierdzenie, że nie jesteś hackerem dopóki inni hackerzy systematycznie nie nazywają Cię hackerem). Ten fakt jest nieco stłumiony przez wizerunek hackera jako samotnika; podobnie działa tabu kultury hackerskiej (stopniowo zanikające od lat 1990-tych ale ciągle obecne) sprzeciwiające się wyznaniu, że ego lub zewnętrzne uznanie mogą być w ogóle czyimkolwiek czynnikiem motywującym.

Z pewnego punktu widzenia hackerstwo jest czymś, co antropologia nazywa kulturą darów. Zdobywasz w niej status i reputację nie poprzez dominacje nad innymi ludźmi, nie za swoją urodę, nie dlatego, że posiadasz to, co inni chcą mieć, ale dlatego, że dajesz coś innym za darmo. W szczególności rozdając swój czas, swoją kreatywność, wyniki swoich umiejętności.

Ogólnie wyróżnia się pięć rzeczy, które można robić by zostać szanowanym hackerem:

1. Twórz otwarte oprogramowanie

Pierwszym (centralnym i najbardziej tradycyjnym) elementem jest tworzenie programów, które są odbierane przez innych hackerów jako zabawne lub użyteczne, oraz udostępnianie kodów źródłowych do użytku dla całej kultury hackerskiej.

(Zwyczajowo nazywało się te prace “oprogramowaniem darmowym”, ale zbyt wielu ludzi nie wiedziało do końca co miałoby znaczyć pojęcie “darmowy”. Wielu z nas woli teraz określenie “oprogramowanie z dostępnym kodem źródłowym”* - “open source” software).

“Półbogami” hackerstwa są ludzie, którzy napisali duże, użyteczne programy, stanowiące odpowiedź na szerokie zapotrzebowanie, a teraz udostępniają je za darmo, do użytku dla wszystkich zainteresowanych.

Warto wtrącić w tym miejscu dygresję historyczną. Pomimo tego, że rdzeń społeczności hackerskiej zawsze stanowili developerzy tworzący open-sorce, do drugiej połowy lat 90’ większość hackerów pracowała nad zamkniętym oprogramowaniem. Gdy w 1996 powstawała pierwsza wersja tego dokumentu, taki stan rzeczy wciąż się utrzymywał; dopiero po 1997 otwarte oprogramowanie stało się tak popularne. Dziś “społeczność hackerów” oraz “developerzy open source” opisują dokładnie tę samą społeczność i kulturę - warto jednak pamiętać, że nie zawsze tak było. (Jeśli chcesz dowiedzieć się więcej, przejdź do sekcji Notka historyczna: Open Source oraz Free Software)

2. Pomóż testować i debugować otwarte oprogramowanie

Hackerzy pomagają testować i usuwać błędy w oprogramowaniu z dostępnym kodem źródłowym. W tym niedoskonałym świecie nieuniknione jest, że większość naszego czasu przy tworzeniu oprogramowania poświęcamy na usuwanie błędów. Z tego powodu każdy twórca open source powie Ci, że dobry beta-tester (taki, który potrafi opisać symptomy, dobrze zlokalizować problemy, toleruje błędy we wczesnych wersjach i umie zastosować kilka prostych procedur diagnostycznych) jest na wagę złota. Nawet jeden taki człowiek jest w stanie pokazać różnicę pomiędzy procesem debugowania wydającym się czasochłonnym, wyczerpującym koszmarem, a takim, który jest wręcz dobroczynną uciążliwością.

Jeśli jesteś nowicjuszem, spróbuj znaleźć program w trakcie procesu tworzenia, który Cię zainteresuje i bądź dobrym beta-testerem. Istnieje naturalny postęp od pomagania przy testowaniu, poprzez pomoc przy usuwaniu błędów aż do pomocy przy tworzeniu programu. W ten sposób nauczysz się wiele i wytworzysz dobrą karmę z ludźmi, którzy później pomogą i Tobie.

3. Publikuj użyteczne informacje

Inną użyteczną działalnością jest gromadzenie i filtrowanie użytecznych informacji i umieszczanie ich na stronach internetowych i w dokumentach typu FAQ (Frequently Asked Questions - “często zadawane pytania”) oraz udostępnianie ich dla szerokiego forum.

Osoby zarządzające dokumentami technicznymi typu FAQ są szanowane prawie tak, jak autorzy oprogramowania.

4. Pomóż w utrzymywaniu infrastruktury

Kultura hackerska (i techniczny rozwój internetu, jeśli o tym mowa) jest napędzana przez ochotników. Jest wiele koniecznej, ale niezbyt widowiskowej roboty, którą trzeba wykonać, aby wszystko działało tak, jak należy - administracja e-mailowymi listami dyskusyjnymi, filtrowanie grup dyskusyjnych (moderowanie), zarządzanie dużymi archiwami oprogramowania, rozwijanie różnych standardów technicznych.

Ludzie wykonujący dobrze ten rodzaj pracy uzyskują dużo szacunku, bo każdy wie, że ta robota pochłania mnóstwo czasu i nie jest tak ciekawa, jak zabawa z kodem. Robienie tego pokazuje poświęcenie.

5. Służ samej kulturze

W końcu, możesz służyć samej kulturze oraz szerzyć jej ideologię (chociażby pisząc niezłą rozprawę na temat: “Jak zostać hackerem” :-)). Inni nie będą tego od Ciebie oczekiwać, o ile nie kręciłeś się w tym temacie od jakiegoś czasu i nie zostałeś postacią dobrze znaną z któregoś z pierwszych czterech zagadnień.

Kultura hackerów nie posiada przywódców w typowym rozumieniu tego słowa, ale posiada kulturowych bohaterów, starszyznę plemienną, historyków i rzeczników. Jeśli wystarczająco długo przebywałeś w obozie, możesz w końcu wyrosnąć na jednego z nich. Strzeż się jednak: hackerzy nie ufają wybujałym osobowościom swojej “starszyzny”, więc sięganie po tego typu zaszczyty może być niebezpieczne. Zamiast walki o nie powinieneś raczej ustawić się odpowiednio, aby same upadły do Twoich stóp, a wtedy bądź skromny i wdzięczny za swoją pozycję w grupie.

Hacker a Nerd - związki i różnice

Wbrew popularnemu mitowi nie musisz być dziwakiem (oryginalne znaczenie słowa nerd przyp. tłum.) aby móc zostać hackerem. To niewątpliwie pomaga i wielu hackerów jest odludkami. Bycie wyrzutkiem społecznym pomaga skupić się na ważnych rzeczach, takich jak myślenie i grzebanie w kodzie.

Z tego powodu, wielu hackerów przyjęło termin geek jako powód do dumy - deklarację niezależności względem powszechnych oczekiwań społecznych (jak również zamiłowań do innych rzeczy jak science fiction czy gier strategicznych, będących częstymi zainteresowaniami hackerów). Pojęcie nerd było stosowane w ten sposób jeszcze w latach 90-tych, pojęcie nerd było lekko pejoratywne podczas gdy geek było pojęciem nieco mocniejszym; nieco po roku 2000, przynajmniej w popkulturze Stanów Zjednoczonych zamieniły się one znaczeniami, w związku z tym powstała znacząca społeczność geeków, którzy nawet nie są techniczni.

Jeśli potrafisz skoncentrować się na hackerstwie wystarczająco, aby być w tym dobrym i wciąż posiadasz własne życie - w porządku. Dziś jest dużo łatwiej niż w latach 70-tych, kiedy byłem nowicjuszem. Główny nurt kultury społeczeństwa jest dziś dużo bardziej przyjacielsko nastawiony wobec techno-dziwaków. Zwiększa się nawet ilość ludzi zdających sobie sprawę z faktu, że hackerzy są często świetnym materiałem na partnerów i małżonków.

Jeśli pasjonujesz się hackerstwem, bo nie posiadasz własnego życia, to też w porządku - przynajmniej nie będziesz miał problemów z koncentracją. Może później rozpoczniesz prywatne życie.

Punkty za styl

Po raz kolejny, chcąc być hackerem, musisz wyrobić styl myślenia hackera. Jest kilka rzeczy, które możesz robić nie siedząc przy komputerze, mogące w tym pomóc. Nie są one zamiennikami dla hackingu (zamienniki nie istnieją), lecz wielu hackerów robi je i uważa, że łączą się one na swój sposób z esencją hackingu.

  • Naucz się dobrze pisać w swoim narodowym języku. Pomimo istnienia popularnego stereotypu, że programiści nie potrafią pisać, zaskakująco duża ilość hackerów (włączając najbardziej utalentowanych, których znam) ma dobrą umiejętność wypowiadania się.

  • Czytaj science fiction. Bierz udział w konwentach Sci-Fi (dobry sposób na spotkanie hackerów i proto-hackerów).

  • Dołącz do hackerspace i twórz tam (kolejny dobry sposób na spotkanie hackerów i proto-hackerów).

  • Trenuj sztuki walki. Rodzaj dyscypliny wymagany w sztukach walki w ważnych aspektach może być podobna do tego, co robią hackerzy. Najpopularniejsze wśród hackerów formy to azjatyckie sztuki walki wręcz jak Tae Kwon Do, różne formy Karate, Kung Fu, Aikido czy Ju Jitsu. Zachodnia szermierka oraz azjatyckie sztuki walki mieczem również miewają wielu zwolenników. W krajach, gdzie jest to legalne, strzelnice i używanie broni palnej zaczęły zyskiwać popularność wśród hackerów od późnych lat 90-tych. Najbardziej hackerskimi sztukami walki są takie, które wymagają mentalnej dyscypliny, relaksacji świadomości i przedkładają precyzyjną kontrolę nad surową siłę, zwinność czy wytrzymałość.

  • Zgłębiaj dyscyplinę medytacji. Odwiecznym faworytem hackerow w tej dziedzinie jest Zen (co bardzo istotne, z medytacji Zen można zyskiwać nawet bez przyjmowania tej religii czy odrzucania dotychczas wyznawanej). Inne rodzaje medytacji również mogą się sprawdzić, uważaj jednak by nie wybrać takiej, która każe wierzyć w szalone rzeczy.

  • Rozwijaj w sobie analityczny słuch do muzyki. Naucz się doceniać specyficzne gatunki muzyki. Naucz się dobrze grać na jakimś instrumencie lub dobrze śpiewać.

  • Rozwiń w sobie szacunek dla gier umysłowych i zabawy słownej.

Im więcej z tych rzeczy już robisz, tym większa szansa, że jesteś naturalnym materiałem na hackera. Dlaczego chodzi o te konkretne rzeczy nie jest zupełnie jasne, ale są one zbiorem umiejętności angażujących tak prawą jak i lewą półkulę mózgu, co jest bardzo istotnym aspektem. Hackerzy muszą umieć postępować zgodnie z logiką jak i wyjść poza ograniczenia myślowe (think outside the box) podczas rozwiązywania problemu.

Pracuj tak intensywnie jak się bawisz i baw się tak intensywnie jak pracujesz. Dla prawdziwego hackera, ograniczenia pomiędzy zabawą, pracą, nauką i sztuką zdają się zanikać lub złączać się w wysoko-poziomową kreatywną grę. Ponadto, nie pozwól sobie na zadowolenie z posiadania ograniczonej ilości umiejętności. Pomimo, że większość hackerow mówi o sobie jako o programistach, jest duża szansa, że są kompetentni w wielu dziedzinach pokrewnych - administracja systemami, web design czy rozwiązywanie problemów sprzętowych. Z drugiej strony hacker będący administratorem prawdopodobnie okaże się dość uzdolnionym programistą czy web-designerem. Hakerzy nie robią rzeczy połowicznie, jeśli w ogóle inwestują w umiejętność, starają się być w nich bardzo dobrzy.

W końcu, kilka rzeczy, których nie powinieneś robić:

  • Nie używaj głupawych, pretensjonalnych nicków czy ksywek

  • Nie wdawaj się w jałowe dyskusje na Usnecie (czy gdziekolwiek indziej)

  • Nie nazywaj się cyberpunkiem i nie mar nuj czasu na kogokolwiek, kto się tak określa

  • Nie publikuj postów oraz nie pisz maili pełnych błędów gramatycznych i literówek

Reputacja jaką zdobędziesz robiąc te rzeczy jest niewiele warta. Hackerzy mają dobrą pamięć - może upłynąć wiele lat Twojego życia zanim zostaniesz zaakceptowany.

Problem z ksywkami potrzebuje rozwinięcia. Ukrywanie osobowości za ksywką to infantylne zachowanie charakterystyczne dla crackerów, warezowców i innych niższych form życia. Hakerzy tego nie robią. Są oni dumni z tego co robią i chcą podpisywać się pod tym swoim imieniem. Jeśli więc posługujesz się nickiem, zaprzestań tego. W przeciwnym wypadku nie będziesz traktowany poważnie w kulturze hackerskiej. Nota historyczna: Hacking, Open Source i Free Software

Nota historyczna: Hacking, Open Source i Free Software

Gdy napisałem pierwszą wersję tego dokumentu pod koniec 1996 roku, warunki były nieco inne niż w chwili obecnej. Kilka słów na temat tych zmian może wyjaśnić relacje łączące open source, free software i Linux ze społecznością hackerów. Jeśli nie jesteś zainteresowany , możesz przejść prosto do sekcji FAQ (najczęściej zadawanych pytań) i bibliografii.

Etos hackerów oraz cała społeczność społeczność jaką opisałem w tym dokumencie poprzedza pojawienie się Linuxa na początku lat 90’. Po raz pierwszy zaangażowałem się w tą społeczność około 1976 roku, natomiast jej korzenie sięgają wczesnych lat 60-tych. Przed Linuxem, większość hackingu miała miejsce albo na systemach własnoścowych, albo w quasi-eksperymentalnych domorosłych systemach jak ITS (stworzony przez MIT), który nigdy nie wydostał się poza niszę akademicką. Choć miał wcześniej miały miejsce (pre-Linuxowe) próby zmiany tej sytuacji, ich wpływ był w najlepszym razie marginalny i ograniczał się do małych nawet jak na kręgi hackerskie społeczności, nie mówiąc już o odniesieniach do większego świata ogólnego oprogramowania.

To, co dziś nazywamy “open source” ma historię tak długą jak społeczność hackerów, lecz do 1985 było to bardziej nienazwanym zwyczajem niż rozwijającym się ruchem mającym swoje tezy i manifesty. Ta pre-historia skończyła się, gdy w 1985 roku arcy-hacker Richard Stallman (“RMS”) podjął próbę nazwania tego ruchu “free software” (wolnego oprogramowania). Ten akt nazwania niósł również pewną tezę. Przywiązał on do “wolnego oprogramowania” bagaż ideologiczny, którego większość istniejącej społeczności hackerów nigdy nie zaakceptowała. W wyniku tego, określenie “free software” zostało głośno odrzucone przez zdecydowaną mniejszość społeczności (szczególnie tych związanych z Unixem BSD), a używane z poważnymi acz cichymi zastrzeżeniami przez pozostałą większość (w tym i mnie).

Pomimo tych zastrzeżeń, chęć RMS do zdefiniowania i prowadzenia społeczności hackerów pod banerem “wolnego oprogramowania” utrzymywała się do połowy lat 90-tych. Została ona zakwestionowana tylko raz, kiedy powstał Linux. Dostarczył on naturalne środowisko dla rozwoju otwartego oprogramowania. Wiele projektów początkowo tworzonych jako własnościowe oprogramowanie pod Unixem zostało przeniesionych na otwartych licencjach do Linuxa. Społeczność wokół Linuxa urosła w niesamowitym tempie, stając się o wiele większą i bardziej zróżnicowaną od pre-Linuxowej kultury hackerskiej. RMS dokładał starań by włączyć całą tę społeczność do swojego ruchu “wolnego oprogramowania”, zostały one jednak udaremnione zarówno przez rosnące zróżnicowanie społeczności Linuxa jak i sceptyczne podejście jej założyciela, Linusa Torvaldsa. Używał on wprawdzie określenia “wolne oprogramowanie” z braku alternatywy, jednak publicznie odciął się od ideologicznego bagażu narzuconego przez RMS. Wielu młodszych hackerów poszło jego śladem.

W 1996, kiedy pisałem pierwszą wersję tego dokumentu, społeczność hackerów szybko przeorganizowała się wokół Linuxa i wielu innych otwartych systemów operacyjnych (głównie tych opartych o BSD Unix). Wspomnienia społeczności o tym, że większość z nas spędziła dekady pisząc zamknięte oprogramowanie na zamknięte systemy jeszcze nie zaczęła się rozmywać, lecz już wtedy zdawało się, że jest to element martwej przeszłości. Hackerzy coraz częściej definiowali się przez swoje zaangażowanie w otwarte projekty jak Linux czy Apache.

Określenie “open source” pojawiło się dopiero na początku roku 98’. Kiedy powstało, większość hackerów przyjęła je na przestrzeni sześciu miesięcy; wyjątki były nieliczne, ideologicznie nawiązujące do ruchu “free software”. Od 1998, a szczególnie po 2003 roku, utożsamianie hackingu z rozwojem otwarto-źródłowego (i wolnego) oprogramowania stało się niezwykle intensywne. Dziś ciężko szukać różnicy między tymi kategoriami, nie wygląda również na to, żeby sytuacja miała zmienić się w przyszłości.

Mimo wszystko warto pamiętać, że terminologia nie zawsze wyglądała tak, jak dziś. Inne źródła

Inne źródła

Paul Graham napisał eseje Great Hackers (Wielcy Hackerzy) oraz Undergraduation, w których dzieli się wielką wiedzą.

Istnieje również dokument How To Be A Programmer (jak być programistą), który jest doskonałym uzupełnieniem tego dokumentu. Zawiera wartościowe porady nie tylko na temat zasobu wiedzy, lecz również pracy w zespole programistycznym. (Jeśli dokument jest niedostępny rzuć okiem na wayback machine przyp. tłum)

Napisałem również A Brief History Of Hackerdom (Krótką historię hackerstwa).

Napisałem także dokument The Cathedral and the Bazaar, który rozjaśnia temat pracy kultur Linuxa i otwartego oprogramowania. Temat ten poruszyłem jeszcze dokładniej w sequelu: Homesteading the Noosphere.

Rick Moen napisał doskonały dokument na temat prowadzenia grupy użytkowników Linuxa.

Jeśli potrzebujesz podstawowych porad na temat działania PC, Unixa i sieci Internet, przeczytaj The Unix and Internet Fundamentals HOWTO.

Kiedy wydajesz patche lub nowe wersje oprogramowania, staraj się podążać za wskazówkami zawartymi w Software Release Practice HOWTO.

Jeśli spodobało Ci się powiedzenie Zen, za ciekawe możesz również uznać Rootless Root: The Unix Koans of Master Foo.

FAQ - Najczęściej Zadawane Pytania

P: Skąd mam wiedzieć, czy już jestem hackerem?

P: Nauczysz mnie hackerstwa?

P: Zatem jak mogę zacząć?

P: Kiedy mam zacząć? Czy jest już za późno bym zaczął się uczyć?

P: Jak długo zajmie mi nauka hackowania?

P: Czy Visual Basic to dobry język do rozpoczęcia nauki?

P: Czy pomógłbyś mi włamać się do systemu, lub nauczył mnie jak to robić?

P: Jak mogę pozyskać hasło do cudzego konta?

P: Jak mogę przejąć/śledzić cudzą skrzynkę e-mail?

P: Jak mogę ukraść uprawnienia do kanału na IRC?

P: Cracker mnie dopadł. Pomożesz mi odeprzeć przyszłe ataki?

P: Mam problemy z Windowsem. Pomożesz mi je rozwiązać?

P: Gdzie mogę znaleźć prawdziwych hackerów, by z nimi porozmawiać?

P: Czy możesz polecić mi książki na tematy związane z hackingiem?

P: Czy muszę dobrze znać matematykę by zostać hackerem?

P: Jakiego języka powinienem zacząć uczyć się na początek?

P: Jakiego sprzętu potrzebuję?

P: Chcę pomóc. Czy możesz pomóc mi w wyborze problemu, od którego powinienem zacząć?

P: Czy muszę być przeciwnikiem Microsoftu?

P: Czy open-source nie spowoduje, że programiści zostaną bezrobotni?

P: Skąd mogę wziąć darmowego Unixa?

Skąd mam wiedzieć, czy już jestem hackerem?

Zadaj sobie trzy pytania:

  • Czy biegle programujesz?
  • Czy identyfikujesz się z celami i wartościami społeczności hackerów?
  • Czy ugruntowany członek społeczności nazwał Cię kiedykolwiek hackerem?

Jeśli odpowiedzi na wszystkie te pytania są twierdzące, jesteś hackerem. Wszystkie, bez wyjątku.

Pierwsze pytanie to test umiejętności. Prawdopodobnie przejdziesz go mając minimum umiejętności opisanych wcześniej w tym dokumencie. Przechodzisz go bez wątpienia jeśli napisałeś zauważalną ilość kodu zaakceptowaną w projektach open source.

Drugie pytanie to test postawy. Jeśli wyżej wymienionych pięć zasad postawy brzmiało dla Ciebie jak oczywistość, bardziej jak opis tego co już robisz niż nowość, jesteś w połowie drogi do przejścia testu. To część wewnętrzna; druga, zewnętrza to stopień w jakim identyfikujesz się z długoterminowymi projektami społeczności hackerów.

Poniżej niepełna, lecz orientacyjna lista niektórych z tych projektów:

  • Czy ma dla Ciebie znaczenie rozwój i rozprzestrzenianie Linuxa?
  • Czy Interesujesz się rozwojem wolnego oprogramowania?
  • Jesteś wrogiem monopoli?
  • Czy wierzysz, że komputery mogą być narzędziem wzmocnienia, wzbogacającym świat i czyniącymi go bardziej ludzkim miejscem?

Warto umieścić w tym miejscu ostrzeżenie. Społeczność hackerów ma specyficzne, głównie obronne interesy polityczne - dwa z nich to ochrona prawa do wolności słowa oraz troszczenie się by ramiona ochrony “własności intelektualnej” nie zdelegalizowały otwartego oprogramowania. Niektóre z długoterminowych projektów to organizacje broniące swobód obywatelskich jak Electronic Frontier Foundation, dla których zewnętrzne postawy wyrażają poparcie. Poza tym, większość hackerów podejrzliwie podchodzi do prób zaangażowania postawy hackerów w programy polityczne. W trudny sposób nauczyliśmy się, że takie próby to podziału społeczności i rozproszenia uwagi. Jeśli ktoś próbuje zaciągnąć Cię do marszu na Kapitol w imieniu postawy hackerskiej, mija się on z celem. Prawidłową odpowiedzią na takie wezwania powinno być “Zamknij się i pokaż im kod”.

Trzecie pytanie ma zręczny, rekursywny element. W sekcji nazwanej “Kim jest hacker?” zauważyłem, że bycie hackerem jest po części kwestią należenia do pewnej subkultury czy sieci społecznościowej ze wspólną historią. W odległej przeszłości, hackerzy byli mniej spójną i samoświadomą grupą niż dziś. Tym niemniej waga aspektu społecznościowego wzrosła na przeciągu ostatnich 30 lat kiedy to Internet ułatwił tworzenie i utrzymywanie połączeń w subkulturze hackerów. Jedną z oznak tej zmiany fakt, że jako społeczność mamy nawet dedykowane T-shirty.

Socjologowie, badający sieci społeczne takie jak kultura hackerów w rubryce “niewidoczne uczelnie”, odnotowali że grupy takie charakteryzuje posiadanie stróżów - głównych członków tych społeczności posiadających autorytet wprowadzania nowych członków do społeczności. Ponieważ “niewidoczna uczelnia” jaką jest społeczność hackerów jest swobodna i nieformalna, rola stróżów również jest nieformalna. Niemniej jedną rzeczą, który każdy hacker czuje w kościach jest fakt, że nie każdy hacker jest strażnikiem. Strażnicy muszą osiągnąć pewien stopień starszeństwa i osiągnięć zanim taki tytuł zostanie im przyznany. Dokładna ilość jest trudna do określenia, lecz każdy hacker wie kiedy osiąga odpowiedni poziom.

Nauczysz mnie hackerstwa?

Od pierwszej publikacji tego dokumentu otrzymuję kilka próśb tygodniowo o to, żebym kogoś “nauczył wszystkiego o hackerstwie”. Niestety, nie mam ani czasu ani energii aby to uczynić. Moje własne projekty hackerskie zajmują mi 110% czasu.

Nawet gdybym miał czas, hackerstwo jest postawą i umiejętnością, których musisz po prostu nauczyć się sam. Przekonasz się, że chociaż prawdziwi hackerzy chcą Ci pomóc, nie uszanują Cię, jeśli będziesz ich błagać, żeby karmili Cię swoją wiedzą jak łyżeczką.

Naucz się na początku kilku rzeczy. Pokaż, że się starasz, że potrafisz uczyć się samodzielnie. Potem zwróć się do znajomych hackerów ze szczegółowymi pytaniami.

Jeśli piszesz maile do hackerów prosząc o wskazówki, oto dwie porady o których musisz pamiętać. Po pierwsze, przyjmujemy założenie, że osoby niedbałe w piśmie są również zbyt leniwe i niedbałe w rozumowaniu by zostać dobrymi hackerami - dbaj zatem by pisać poprawnie, inaczej prawdopodobnie zostaniesz zignorowany. Po drugie, nie waż się by odpisywać na inne konto ISP niż to, z którego napisałeś. Osoby stosujące taką praktykę zazwyczaj są złodziejami używającymi kradzionych kont, a my nie mamy interesu w nagradzaniu lub wspomaganiu w kradzieży.

Zatem jak mogę zacząć?

Prawdopodobnie najlepiej będzie, jeśli dołączysz do spotkań LUG (Linux User Group - grup użytkowników Linuxa). Możesz znaleźć takie grupy na LDP Głównej Stronie Informacyjnej Linuxa. Grupa taka najpewniej znajduje się w okolicy, przy koledżu lub uniwersytecie. Członkowie LUG prawdopodobnie zaopatrzą Cię w Linuxa, z pewnością pomogą Ci zainstalować go i rozpocząć prace z nim.

Kolejnym krokiem (pierwszym jeśli nie znajdziesz LUG w pobliżu) powinno być znalezienie interesującego Cię projektu open-source. Zacznij czytając kod i przeglądać błędy. Naucz się przyczyniać do rozwoju projektu i zapracuj by zostać do niego włączonym.

Jedynym sposobem jest praca nad rozwojem własnych umiejętności. Jeśli zapytasz mnie o poradę osobiście, jak powinieneś zacząć, odpowiem dokładnie tak samo, nie znam żadnej magicznej drogi na skróty. Prawdopodobnie również spisałbym Cię mentalnie na straty - jeśli nie byłeś dość wytrzymały by doczytać tę sekcję (FAQ) i nie miałeś dość inteligencji by zrozumieć, że Jedynym sposobem jest praca nad rozwojem własnych umiejętności, masz marne szanse zacząć w ogóle.

Kolejną interesującą możliwością jest odwiedzenie hackerspace’u. Rośnie zainteresowanie tworzeniem fizycznych lokalizacji - klubów ‘majsterkowiczów’ - w których mogą się spotykać by wspólnie pracować nad projektami sprzętu i oprogramowania, lub w pojedynkę w sympatycznej atmosferze. Hackerspace’y zazwyczaj posiadają narzędzia i wyposażenie, które byłoby zbyt drogie lub niewygodne do utrzymania dla indywidualnego hackera. Łatwo również znaleźć je w internecie, jest duża szansa, że jakiś zlokalizowany jest nieopodal Ciebie.

Kiedy mam zacząć? Czy jest już za późno bym zaczął się uczyć?

Dobry wiek by zacząć to taki, w którym jesteś do tego zmotywowany. Większość osób nabiera zainteresowania między 15 a 20 rokiem, lecz znam wyjątki w obu kierunkach.

Jak długo zajmie mi nauka hackowania?

To zależy od Twoich osobistych predyspozycji oraz jak wiele ciężkiej pracy w to włożysz. Większość starających się osób pozyskuje poważny zbiór umiejętności w 18 do 24 miesięcy, jeśli poważnie podejdą do tematu. Nie myśl jednak, że na tym koniec. W hackingu (jak i w wielu innych dziedzinach) około 10 lat trwa osiągnięcie mistrzostwa. Jeśli ponadto jesteś prawdziwym hackerem, spędzisz resztę życia ucząc się i doskonaląc swoje rzemiosło.

Czy Visual Basic to dobry język do rozpoczęcia nauki?

Skoro zadajesz takie pytanie, niemal pewnym jest, że myślisz o hackowaniu pod MS Windows. Sama w sobie idea jest zła. Kiedy porównywałem naukę hackowania pod Windowsem do nauki tańca będąc w gipsie, nie żartowałem. Nie idź tą drogą. To jest ohydne i nigdy nie przestanie takie być.

Jest bardziej konkretny problem by odradzić VisualBasic; przede wszystkim nie jest przenośny. Pomimo, że istnieją prototypowe otwarte implementacje Visual Basica, odpowiednie standardy ECMA pokrywają nie wiele więcej niż mały zestaw interfejsów programistycznych. Na Windowsie większość wspieranych bibliotek jest własnościowa (należy do Microsoft); jeśli nie jesteś wyjątkowo ostrożny w używaniu funkcjonalności, które stosujesz - bardziej ostrożny, niż w stanie jest jakikolwiek początkujący - utkniesz zablokowany jedynie na tych platformach, które Microsoft zdecyduje się wspierać Jeśli zaczynasz na Unixie, dostępne są zdecydowanie lepsze języki ze zdecydowanie lepszymi bibliotekami. Przykładem jest Python.

Ponadto, jak inne Basici, Visual Basic jest źle zaprojektowanym językiem, który wpoi Ci złe nawyki. Nie, nie proście mnie o opisywanie ich w szczegółach, można tym zapełnić książkę. Zamiast tego, naucz się dobrze zaprojektowanego języka.

Jednym z tych złych nawyków jest stawanie się zależnym od własnościowych bibliotek, widgetów i narzędzi developerskich. Ogólnie rzecz biorąc, żaden język, który nie jest w pełni wspierany przynajmniej pod Linuxem lub jednym z BSD i/lub chociaż trzema własnościowymi systemami operacyjnymi, nie jest dobry do nauki hackowania.

Czy pomógłbyś mi włamać się do systemu, lub nauczył mnie jak to robić?

Nie. Każdy kto po przeczytaniu tego FAQ nadal zadaje takie pytania jest zbyt głupi by dało się go nauczyć, nawet gdybym miał na to czas. Każdy mail tego typu prośbą zostanie albo zignorowany albo potraktowany z wyjątkową nieuprzejmością.

Jak mogę pozyskać hasło do cudzego konta?

To cracking. Spadaj idioto.

Jak mogę przejąć/śledzić cudzą skrzynkę e-mail?

To cracking. Spadaj matole.

Jak mogę ukraść uprawnienia do kanału na IRC?

To cracking. Precz kretynie.

Cracker mnie dopadł. Pomożesz mi odeprzeć przyszłe ataki?

Nie. Za każdym razem, gdy ktoś zadawał mi to pytanie, był to biedaczek używający MS Windows. Nie jest możliwe efektywne zabezpieczenie systemu Windows przed atakami crackerów. Kod i architektura mają zbyt wiele dziur, które czynią próby zabezpieczenia Windowsa podobnymi do prób uratowania tonącej łodzi używając sita. Jedyny sposób zapobiegania takim sytuacjom, na którym można polegać, to przesiadka na Linuxa lub inny system zaprojektowany tak, by dało się go zabezpieczyć.

Mam problemy z Windowsem. Pomożesz mi je rozwiązać?

Tak. Włącz linię komend i wpisz format c:. Źródło problemów zniknie w kilka minut.

Gdzie mogę znaleźć prawdziwych hackerów, by z nimi porozmawiać?

Najlepszym sposobem będzie znalezienie grupy użytkowników Linuxa lub Unixa i uczęszczanie na ich spotkania (część grup znajdziesz na stronie LDP).

(Kiedyś mawiałem, że nie znajdziesz prawdziwych hackerów na IRC, jednak dano mi do zrozumienia, że się to zmienia. Wygląda na to, że kilka społeczności prawdziwych hackerów, pracujących przy projektach takich jak GIMP i Perl mają teraz swoje kanały)

Czy możesz polecić mi książki na tematy związane z hackingiem?

Rozwijam Linux Reading List HOWTO, które możesz uznać za pomocne. Ponadto Loginataka jest interesująca.

Po wprowadzenie do Pythona, zobacz tutorial na oficjalnej stronie Pythona.

Czy muszę dobrze znać matematykę by zostać hackerem?

Nie. Hacking wymaga niewielkiej ilości formalnej matematyki i arytmetyki. W szczególności nie będziesz potrzebował trygonometrii, rachunku różniczkowego czy analizy matematycznej (istnieją wyjątki takie jak grafika 3-D). Znajomość formalnej logiki oraz algebry Boole’a może być pomocna. Podstawy w matematyce dyskretnej (w tym teorii zbiorów skończonych, kombinatoryki i teorii grafów) może okazać się użyteczna.

Zdecydowanie ważniejsze: musisz umieć myśleć logicznie i podążać łańcuchami ścisłego rozumowania w taki sposób, w jaki robią to matematycy. Chociaż większość wiedzy matematycznej nie pomoże Ci jako hackerowi, będziesz potrzebował dyscypliny i inteligencji by sobie z nią poradzić. Jeśli brakuje Ci inteligencji, niewielkie są nadzieje, że zostaniesz hackerem. Jeśli brakuje Ci dyscypliny, lepiej żebyś ją wypracował.

Uważam, że dobrym sposobem sprawdzenia się jest przeczytanie książki Raymonda Smully’ana “What Is The Name Of This Book?”. Zawarte w niej zagadki logiczne mają hackerskiego ducha. Jeśli jesteś w stanie je rozwiązać, to dobry znak. Jeśli rozwiązywanie ich sprawia Ci radość, to jeszcze lepszy znak.

Jakiego języka powinienem zacząć uczyć się na początek?

HTML, jeśli jeszcze go nie znasz. Istnieje wiele błyszczących, zaciemnionych złych książek o HTML i niepokojąco mało dobrych pozycji. Ta, którą lubię najbardziej nazywa się HTML: The definitive guide.

HTML nie jest jednak językiem programowania. Gdy będziesz gotów zacząć programować, polecam rozpocząć od Pythona. Wielu ludzi będzie polecało Perl, w mojej opinii jest on trudniejszy i gorzej zaprojektowany.

C jest bardzo ważne, lecz również dużo trudniejsze niż zarówno Python jak i Perl. Nie próbuj zaczynać nauki od niego.

Użytkownicy Windowsa, nie zaczynajcie od Visual Basic. Wpoi wam złe nawyki i nie jest przenośny poza Windows. Unikajcie go.

Jakiego sprzętu potrzebuję?

Kiedyś komputery osobiste były raczej słabe, miały mało pamięci, wystarczająco mało by ograniczyć procesy nauki hackera. Sytuacja zmieniła się w połowie lat 90-tych. Każda maszyna od Intela 489DX50 jest więcej niż wystarczająca.

Ważna w wyborze maszyny do nauki jest kompatybilność sprzętu z Linuxem (lub z BSD jeśli idziesz w tym kierunku). Ponownie, większość współczesnych maszyn spełnia ten warunek. Jedynym obszarem, w którym trzeba uważać są karty sieciowe, niektóre mają sprzęt specyficzny dla Windows i tylko z nim będą działać prawidłowo.

Istnieje osobny FAQ dotyczący kompatybilności sprzętowej. Najnowsza wersja dostępna jest tutaj.

Chcę pomóc. Czy możesz pomóc mi w wyborze problemu, od którego powinienem zacząć?

Nie, ponieważ nie znam Twoich talentów czy zainteresowań. Musisz być dość zmotywowany, inaczej się nie nadasz, proszenie innych o wybór ścieżki dla nas niemal nigdy nie działa.

Czy muszę być przeciwnikiem Microsoftu?

Nie, nie musisz. To nie tak, że MS nie jest odrażający, ale kultura hackerska istniała na długo przed nim i będzie trwała na długo po nim. Każda porcja energii, którą zmarnujesz przeciw MS może być lepiej spożytkowana na rozwój Twojego rzemiosła. Pisz dobry kod - w ten sposób uderzysz w Microsoft zupełnie wystarczająco, nie nadwerężając przy tym swojej karmy.

Czy open-source nie spowoduje, że programiści zostaną bezrobotni?

Wydaje się to nieprawdopodobne - ale na razie przemysł oprogramowania z dostępnym kodem źródłowym wydaje się stwarzać nowe stanowiska pracy zamiast je odbierać. Jeśli zrealizowanie programu jest korzystniejsze ekonomicznie niż nie stworzenie go, programista otrzyma zapłatę niezależnie od tego, czy program będzie darmowy. I niezależnie od ilości “darmowego” oprogramowania, zawsze wydaje się być większy popyt na nowe i specjalizowane oprogramowanie. Napisałem więcej na ten temat na stronach Open Source.

Skąd mogę wziąć darmowego Unixa?

Gdzieś na tej stronie zawarłem wskazówki, gdzie znaleźć najpowszechniej stosowany darmowy UNIX. Żeby być hackerem potrzebujesz motywacji, inicjatywy i umiejętności samodzielnej nauki. Zacznij teraz…