Ha offline olvasod ezt a doksit, megtalálod a legfrissebb (angol nyelvű) változatot a http://www.tuxedo.org/~esr/faqs/hacker-howto.html weblapon.
A hacker beállítottság nem korlátozódik a szoftver-hacker kultúrára. Vannak olyanok, akik a hacker mentalitást más területen gyakorolják, ez lehet pl. elektronika vagy zene -- valójában ezzel a viselkedési formával találkozhatsz a tudományok vagy a művészet legmagasabb szintjein. A szofver-hackerek elismerik ezeket a rokonlelkeket, néha nyíltan "hackereknek" is hívják őket -- egyesek azt vallják, hogy a hacker természet valójában független attól, hogy mit is hackel az illető. Ennek ellenére, e dokumentum hátralévő részében a szoftver-hackerek képességeivel és viselkedésükkel, valamint a `hacker' kifejezést létrehozó közös kultúra tradíciójával foglalkozom.
Van egy másik csoport is, amely az hangoztatja magáról, hogy hackerekből áll, de ez nem fedi a valóságot. Ezek az emberek (főleg serdülő fiúk) azok, akik poénosnak tartják, hogy betörnek számítógépekre, vagy szórakoznak a telefonhálózattal. Az igazi hackerek ezeket az embereket `crackereknek' hívják és hangoztatják, hogy semmi közös nincs bennük. Az igazi hackerek szerint a crackerek lusták, felelőtlenek és nem briliáns elmék, azzal érvelnek hogy a biztonsági intézkedések megsértése nem tesz hackerré, ugyanúgy, ahogy attól sem leszel közlekedésmérnök, ha el tudsz kötni egy autót. Sajnos sok író és újságíró keveri a két kifejezést, a crackereket is a `hacker' kifejezéssel írja le; ez kimondhatatlanul idegesíti az igazi hackert.
Az alapvető különbség: a hackerek építenek, míg a crackerek rombolnak.
Ha hacker akarsz lenni, olvass tovább. Ha cracker akarsz lenni, olvasd el az alt.2600 hírcsoportot, és készülj fel öttől tíz évig terjedő börtönbüntetésre, miután kiderült, hogy nem vagy olyan okos, mint hitted. Ennyit a crackerekről.
Ha úgy gondolod, hogy csak azért viselkedsz úgy, mint a hackerek, hogy befogadjanak, akkor elsiklasz a lényeg felett. Az, hogy higgyél ennek a viselkedésnek a helyességében, nagyon fontos Neked -- ez segít a tanulásban, és ez motivál. Mint minden kreatív művészetnél, nem elég a mestert csak ésszel imitálni, szívvel is kell.
Tehát, ha hacker akarsz lenni, ismételgesd a következő dolgokat, amíg el nem hiszed őket:
Ha természetednél fogva nem így érzel, meg kell változnod ahhoz, hogy sikeres hacker legyél. Máskülönben gyorsan azon kapod magad, hogy a hackelésre szánt energiád elfolyik más irányba, mint pl. szex, pénz vagy társadalmi elismerés megszerzésének irányába.
(Ezek mellett meg kell tanulnod hinni a tanulási képességedben -- hinni abban, hogy ha nem is tudsz mindent, ami a probléma megoldásához kell, ha elkezded a probléma egy részét boncolgatni, megtanulsz közben annyit, amennyi a következő részfeladat megoldásához szükséges -- és így tovább, amíg az egész problémát meg nem oldod.)
A hacker magatartására jellemző, hogy tudatában van annak, hogy a többi hacker ideje értékes -- ezért az információ megosztását majdnem erkölcsi kötelességének érzi. Az így megosztott megoldások segítségével más hackerek új problémákkal tudnak foglakozni.
(Nehogy azt hidd, hogy minden kreativitásodból származó szellemi termékedet be kell dobnod a közösbe, bár minél többet adsz, annál jobban fog a többi hacker tisztelni. A hacker értékekkel összefér, ha eladsz annyit magadból, hogy kifizesd a lakbért, tudjál kaját és számítógépeket venni. Belefér, ha hackelésből eltartod a családodat, sőt az is, ha meggazdagszol, mindaddig, amíg nem felejted el, hogy hacker vagy.)
Ha hackerként akarsz viselkedni, akkor annyira kell ebben higgyél, hogy automatizáld az unalmas dolgokat, amennyire csak lehet, nem csak magad miatt, de mindenki más miatt is (főleg a többi hackerért).
(Erre a szabályra egy látszólagos kivétel van. A hackerek csinálnak néha dolgokat, amelyek unalmasnak és robotjellegűnek tűnhetnek a kívülálló számára, de valójában ezekre azért van szükség, hogy egy képességet fejlesszenek, vagy gyakorlatot szerezzenek valamiben, amit másképp nem ismerhetnének meg. Ez azonban a hacker saját választása -- egy gondolkodó embert sem szabad unalomba kényszeríteni.)
(Ez nem jeleni azt, hogy mindennemű hatalmat bírálni kell. A gyerekeknek szükségük van irányításra, és a bűnözőknek felelniük kell tetteikért. A hacker dönthet úgy, hogy elfogad bizonyos szintű irányítást, ha valami olyasmit kap ez által, ami fontosabb Neki, mint az utasítások követésére elpazarolt idő. De ez csakis korlátozott lehet, szó nincsen arról a személyes behódolásról, amit a parancsolgató beállítottságú emberek elvárnak.)
A parancsolgató ember lételeme a cenzúra és a titkolózás. Bizalmatlan mindennel szemben, ami önkéntes együttműködés és információmegosztás -- csak az olyan `együttműködést' szereti, amit ő irányít. Tehát ha hackerként akarsz viselkedni, ki kell fejlesszél egy ösztönös ellenszenvet a cenzúra, a titkolózás és a felelős felnőtt emberek erőszakos kényszerítése iránt. Nem csak hinned kell, hogy ez a helyes, hanem e szerint kell cselekedned.
Ezért meg kell tanulnod, hogy nem szabad bízni a viselkedésben, és tisztelni kell bármilyen szaktudást. A hacker nem pazarolja az idejét szimulánsokra, de értékeli a szakértelmet -- főleg a hackeléssel kapcsolatos szakértelmet, de bármilyen más irányú szaktudás is elismerendő. Ha a szaktudásod olyan területet is lefed, amihez kevesen értenek, az jó, ha olyan terület szakértője vagy, ami precíz logikai képességeket, szellemi erőt és koncentrációs képességet igényel, az a legjobb.
Ha tiszteled a hozzáértést, örömöd telik majd a képességeid fejlesztésében -- a kemény munka és az, hogy ennek szenteled magad, egy komoly játék lesz, és nem robotolás. Ez életbevágóan fontos, ha hacker akarsz lenni.
Ezek a képességek lassan változnak az idők során, ahogy a technológia fejlődik, új területek jönnek létre, melyek új képességeket igényelnek, a régiek ezzel párhuzamosan elavulnak. Például, az alapképességek közé tartozott régebben a gépi kódban való programozás, míg a HTML ismerete csak az utóbbi időben vált szükségessé. Jelenleg a következők tartoznak a hacker alapműveltségéhez:
Legyél tisztában azzal, hogy nem fogod elérni a hacker szaktudását, vagy akárcsak egy egyszerű programozóét sem, ha csak egy nyelvet ismersz -- meg kell tanulnod nyelvtől függetlenül gondolni a programozási problémákra. Ahhoz, hogy igaz hacker lehess, el kell jussál arra a pontra, amikor egy új programozási nyelvet néhány nap alatt meg tudsz tanulni, a leírások alapján, abból kiindulva, amit már tudsz. Ez azt jelenti, hogy több, egymástól nagyon különböző nyelvet kell megtanuljál.
Ha komoly programozásba kezdesz, meg kell tanulnod a C nyelvet, a Unix alapnyelvét (a C-t ettől függetlenül nem ajánlom első nyelvnek). Az egyéb fontos nyelvek közé tartozik a Perl és a LISP. A Perlt gyakorlati okok miatt érdemes megtanulni; gyakran használják dinamikus web oldalak létrehozásához és rendszer-adminisztrációhoz, tehát ha nem is írsz soha Perlt, mindenképp érdemes megtanulnod olvasni azt. A LISP-et a megvilágosodás mély érzése miatt érdemes megtanulni, amit akkor érzel, amikor végre sikerül megérteni, hogy miről is van szó; ez a tapasztalat jobb programozóvá tesz a hátralévő napjaidra, még akkor is, ha nem használod majd gyakran a LISP-et.
A legjobb, igazából, ha ezt a négy nyelvet (Python, C, Perl, és LISP) mind megtanulod. Amellet, hogy ezek a hacker alapnyelvei, nagyon eltérő módon közelítik meg a programozást, mindegyikből hasznos és értékes új ismeretekre tehetsz szert.
Nem tudok kimerítő leírást adni arról, hogy hogyan tudsz megtanulni programozni -- nagyon összetett tudásról van szó. Egyet azonban elárulhatok: a könyvek és tanfolyamok nem érnek túl sokat (sok, valószínűleg a legtöbb hacker autodidakta). Aminek van értelme: (a) kódot olvasni és kódot írni.
Programozni megtanulni ugyanolyan, mint a saját anyanyelveden megtanulni írni. A legjobb módszer, ha beleolvasol abba, amit a mesterek írtak, majd írsz valamit, utána olvasol még egy jó adag kódot, írsz egy keveset, olvasol még egy adagot, írsz még egy kicsit... és mindezt addig ismétled, amíg a saját kódodban el nem kezded felfedezni a példaképek kódjainak jó vonásait.
Régen nehézkes volt jó, olvasásra érdemes kódot találni, mert kevés nagy program forráskódja állt a zöldfülű hackerfiókák rendelkezésére. Ez drasztikusan megváltozott; ma már nyílt forráskódú szoftverek, programozási eszközök és operációs rendszerek (ezeket is mind hackerek írták) könnyedén elérhetők bárki számára. Ez át is vezet minket a következő témához...
Igen, vannak a Unixon kívül más operációs rendszerek a világon. De azokat binárisokban terjesztik, ergo nem tudod olvasni vagy módosítani a kódot. Hackelni tanulni DOS, Windows vagy MacOS alatt olyan, mintha kényszerzubbonyban próbálnál táncolni tanulni.
Mindezek mellett, nem szabad megfeledkezni arról, hogy a Unix az Internet operációs rendszere. Megtanulhatod ugyan az Internet használatát Unix ismeretek nélkül, de biztosan nem lehetsz Internetes hacker. Éppen ezért, manapság a hacker kultúra elég határozottan Unix-központú. (Ez nem volt mindig így, néhány régi motoros a mai napig nem tud ezzel megbékélni, de a Unix és az Internet közötti szimbiózis annyira megerősödött, hogy még a Microsoft sem tud igazán csorbát ejteni rajta.)
Tehát húzzál fel egy Unixot -- én személy szerint a Linuxot szeretem, de van választék (és igen, lehet ugyanazon a gépen felváltva Linuxot és DOS / Windows-t használni). Tanuld meg használni. Játsszál vele. Lődd össze az Internetet vele. Olvasd a forrásokat. Módosítsd a forrásokat. Olyan programozási eszközökkel fogsz találkozni Linux alatt (pl. C, LISP, Python és Perl), amilyenekről egy Microsoft operációs rendszer alatt álmodni sem mernél, jól szórakozol, és olyan sok tudást szívsz magadba, hogy bele sem gondolsz, egészen addig, amíg már profi hackerként vissza nem emlékszel ezekre az időkre.
Ha többet akarsz tudni a Unix-ról, vess egy pillantást a Loginatakára.
Információt találsz arról, hogy hogyan és honnan szerezzél be Linuxot a Honnan szedjek Linuxot? című oldalról.
Találhatsz BSD Unix-al kapcsolatos segítséget és linkeket a www.bsd.org címen.
(Megjegyzés: Nem ajánlom, hogy Linux vagy BSD telepítésbe kezdjél egyedül, ha teljesen kezdő vagy a témában. Ha Linuxal próbálkozol, keress meg egy helyi felhasználó csoportot [ilyen Magyarországon az LME] és kérj segítséget, vagy vedd fel a kapcsolatot a Linux Internet Support Co-Operative-al. A LISC üzemeltet IRC csatornákat is, ahol [angol nyelvű] segítséget kaphatsz.)
Ez nem csak azt jelenti, hogy meg kell tanulnod Web-böngészőt használni (ezt bárki megteheti), hanem azt is, hogy el kell sajátítanod a HTML-t, a web nyelvét. Ha nem tudsz programozni, a HTML tanulása közben felvehetsz bizonyos jó szokásokat, amiknek hasznát veszed a későbbi tanulmányaid során. Tehát hozzál létre egy honlapot.
Az, hogy van egy honlapod, még közelítőleg sem jelenti azt, hogy hacker vagy. A Web tele van honlapokkal. A legtöbbjük értelmetlen, nulltartalmú hulladék -- tarka hulladék, mondhatnád, de attól még ugyanúgy szemét. (erről többet olvashatsz a A HTML Pokol oldalán).
Hogy olvasásra érdemes legyen egy lap, kell legyen tartalma -- érdekes és vagy hasznos kell legyen más hackerek számára. Ez átvezet a következő témához...
Ehhez hasonlóan, amikor a hackerek szabályai szerint játszol, megtanulod, hogy az alapján kapod a jó pontokat, hogy mások mire tartják a szakértelmedet (ezért írtam korábban, hogy addig nem vagy igazi hacker, amíg nem a többiek hívnak annak). Ezt a tényt elhomályosítja az a kép, ami a hackelést magányos munkának tünteti fel, valamint az a hacker körökben elterjedt nézet, miszerint a büszkeség vagy az, hogy mások mit gondolnak, nem lehet a motiváló tényezők része.
Egészen pontosan, a hackerség az, amit az antropológusok ajándék kultúrának neveznek. Nem az által szerzel egy ilyen társadalomban hírnevet, hogy elnyomsz másokat, azzal sem, hogy szép vagy, vagy olyan dolgokat birtokolsz, amikért mások áhítoznak, hanem azzal, hogy adsz. Másokra áldozod történetesen az idődet, a kreativitásodat és a szaktudásod gyümölcseit.
Alapvetően öt dolgot tehetsz, hogy kivívd a hackerek elismerését:
(Ezeket a munkákat ``free software''-nek hívtuk, de mivel nem volt mindenki számára egyértelmű, hogy a ``free'' a szabadra vagy az ingyenesre utal-e, sokunk inkább az ``open-source'' azaz nyílt forráskódú szoftver kifejezést részesíti előnyben.)
A hacker kultúra legelismertebb félistenei olyan emberek, akik nagy, hasznos programokat írtak, amikre széles körben volt szükség, majd a közösség rendelkezésére bocsátották ezeket, hogy mindenki szabadon felhasználhassa őket.
Ha újonc vagy, keress egy fejlesztés alatt álló programot, ami érdekel és próbálj jó béta-tesztelő lenni. Innen már magától megy minden, a tesztelés után besegíthetsz a hibakeresésbe, utána besegíthetsz a fejlesztésbe. Sokat tanulhatsz így, és jó pontot szerezhetsz olyan embereknél, akik segíthetnek majd a későbbiek során.
A főbb szakmai GyIK-ek karbantartói majdnem olyan elismerésben részesülnek, mint a nyílt forráskódú szoftvert író programozók.
Azok az emberek, aki ezeket a feladatokat jól látják el, nagy tiszteletben állnak, mert mindenki tudja, hogy a munkájuk borzalmasan időt rabló, és nem olyan mókás, mint a kódolás. Akik ezt a fajta munkát csinálják, elhivatottak.
A hacker társadalomnak nincsenek kimondott vezetői, de vannak hősei, ``vénjei'', történészei és szóvivői. Ha már elég régóta vagy a csatasorban, ezek egyikévé nőheted ki magad. De ne feledd: a hackerek bizalmatlanok a túl nagy mellénnyel rendelkező ``vénekkel'' szemben, tehát veszélyes ezt a stádiumot látványosan elérni. Ne törekedjél erre, inkább helyezkedj úgy, hogy az öledbe hulljon, majd legyél szerény, és ápold gondosan a kapcsolataidat.
Ezért sok hacker felvállalja a ``kocka'' bélyeget, sőt, büszkén használják a durvább ``geek'' kifejezést is -- így függetlenítik magukat a konvencionális társadalmi elvárásoktól. A Geek oldalon olvashatsz bővebben a témáról.
Ha meg tudod oldani, hogy elég figyelmet fordítasz a hackelésre ahhoz, hogy jó hacker legyél, és emellett normális életet is tudsz folytatni, akkor jó. Ez manapság sokkal könnyebb feladat egy újonc számára, mint az én időmben volt, a 70-es években; napjainkban a társadalom sokkal toleránsabb a techno-megszállottakkal szemben. Sőt, egyre több ember jön rá, hogy a hackerek gyakran kiváló minőségű szerető és férj alapanyagok.
Ha azért vonz a hackelés, mert nincs életed, az is OK -- legalább nem vonja el semmi a figyelmedet. Lehet, hogy később még az is kialakul.
Végül néhány kerülendő dolog:
A becenevek problémájára külön visszatérnék. Az igazi személyed becenevek mögé rejtése gyerekes és ostoba dolog, és a crackerekre, warez d00dz-okra és más alsóbbrendű életformákra jellemző viselkedés. A hacker nem csinál ilyet; büszke arra amit csinál és amit elért, ezért szereti, ha az igazi nevét is ismerik. Tehát ha ilyen becenevet használsz, hagyd el, mert a hackerek között csak vesztesnek bélyegez.
A Loginatakának van némi mondanivalója a Unix hacker képzettségét és hozzáállását illetően.
Írtam egy esszét A hackerség rövid története címmel.
Írtam egy esszét, A Katedrális és a Bazár címmel, ami részletesem elemzi a Linux és az open-source köré épülő társadalmak működését. Még közvetlenebbül tárgyaltam ezt a témát a folytatásban a Homesteading the Noosphere-ben.
Még ha lenne is lehetőségem arra, hogy a hackelést tanítsam, nem tehetném, mert ez egy olyan hozzáállás és képesség, amit magadnak kell egyedül elsajátítanod. Meg fogod látni, hogy az igazi hackerek örömmel segítenek neked, de nem fognak tisztelni és elismerni, ha mindent a szádba kell rágjanak.
Tanulj meg először néhány dolgot. Mutasd meg, hogy próbálkozol, hogy tudsz önállóan tanulni. Ezek után a hackereket már csak specifikus kérdésekkel zargasd.
(Régebben azt írtam volna itt, hogy IRC-n nem találkozhatsz igazi hackerrel, de úgy tűnik ez változik. Mostanában igazi hacker csoportoknak, mint pl. a GIMP és a Perl körül serénykedőknek, saját IRC csatornájuk van.)
A HTML azonban nem programozási nyelv. Ha felkészültél arra, hogy elkezdjél programozni tanulni, véleményem szerint a Pythont válaszd. Sokan a Perlt ajánlják, ami igaz, hogy elterjedtebb, mint a Python, de nehezebb megtanulni és (véleményem szerint) nincs olyan jól megtervezve. Találhatsz linkgyűjteményt a kezdő Python programozó számára a Weben.
A C igazán fontos, de ugyanakkor sokkal nehezebb, mint a Python vagy a Perl. Ne próbáld elsőként megtanulni.
Windows felhasználók, ne ragadjatok le a Visual Basic-nél! Rossz programozási szokásokat fogtok felvenni tőle, és nem hordozható, teljesen a Windows platformra van utalva. Kerülendő.
Fordította:
Kovács Emese < emese@goliat.eik.bme.hu >