Bill Joy

A HupWiki-ből...

Bill Joy

Bill Joy
Bill Joy

Bill Joy neve nem ismeretlen a UNIX felhasználók között. Főként a BSD-sek között. Bill Joy egyike azon úttörőknek, akiknek ma az OpenBSD, FreeBSD, NetBSD és a többi BSD fork felhasználói nagyon sokat köszönhetnek. Billy Joy meghatározó alakja volt a Berkeley Software Distribution-nek, azaz a BSD-nek.

Bill Joy a Sun Microsystems-nél töltött évek alatt számos fejlesztésben vett részt, mint például a Java, vagy a SPARC processzor architektúra, stb.

Joy két évtizedet töltött Santa Clara-i (Kalifornia) munkahelyén. Több mint 21 év után döntött a távozás mellett.

Ki tulajdonképpen Bill Joy?

"....Annak ellenére, hogy Berkeley egyetemen az INGRES projekt elhagyta a PDP 11/45-öt, még mindig kevés gépidő állt a tanulók rendelkezésére. Hogy csillapítsák a hiányt, Michael Stonebraker és Bob Fabry professzor 1974 júniusában kihirdette, hogy két oktatói 11/45-öst szereznek be a számítástechnikai tanszék számára. 1975 elején a pénz össze is jött. Valamikor ebben az időben jelentette be a DEC a 11/70-et - azt a gépet, amely sokkal jobb képességekkel rendelkezett, mint a 11/45-ös. A két 11/45-ösre félretett pénzből inkább egy 11/70-est vásároltak, amely 1975 őszére meg is érkezett. A 11/70-es érkezésével egy időben Ken Thompson úgy döntött, hogy kiveszi egy éves kutatói szabadáságát és mint vendég professzor meglátogatja a Berkeley-t, a korábbi iskoláját. Thompson Jeff Schriebman-nel és Bob Kridle-lel együtt feltelepítették 11/70-re az akkori legfrissebb UNIX verziót, a Version 6-ot.

1975 őszén bukkant fel két addig észrevétlen végzős diák a kaliforniai Berkeley egyetemen. Bill Joy és Chuck Haley, akik azonnal érdeklődni kezdtek az új rendszer iránt. Először egy Pascal rendszeren kezdtek el dolgozni, amelyet Thompson ütött össze miközben a 11/70-es géptermében lógott. Addig a pontig terjesztették ki és tökéletesítették a Pascal értelmezőjét (interpreter) amíg a tanulók egyik kedvenc programozási rendszere nem lett. Lett, mert kiváló hiba visszakeresési sémával, gyors fordítási- és végrehajtási képességekkel rendelkezett.

Miután a Model 33 teletype-ok helyett ADM-3 képernyő terminálok lettek, Joy és Haley úgy érezte, hogy akadályozza Őket az ed névre hallgató szerkesztőprogram. Miután egy em névre hallgató editoron dolgoztak - amelyet George Coulouris professzortól kaptak, aki a Queen Mary Kollégiumban tanított Londonban - nekiálltak, hogy létrehozzanak egy "line-at-a-time" szerkesztőt, amelynek a neve ex lett.

Miután Ken Thompson 1976 nyarán elhagyta a Berkeley-t Joy-t és Haley-t érdekelni kezdte a Unix kernel belső működése. Első próbálkozásuk az volt a rendszerrel kapcsolatban, amikor Schriebman figyelő szemei mellett feltelepítették azokat javításokat és frissítéseket, amelyet az "ötven változás" ("fifty changes") névre hallgató szalag tartalmazott, és amely a Bell Labs-tól érkezett. Miután megtanultak manőverezni a forráskódban, már néhány kisebb javaslatot tettek arra, hogy hogyan is lehetne csökkenteni a kernel szűk keresztmetszeteit.

A Pascal fordítóban levő hiba visszakeresési munka annyira népszerű lett, hogy megjelentek az igények a rendszer másolására. 1977 elején Joy összeállította a "Berkeley Software Distribution"-t. Az első terjesztés magában foglalta a Pascal rendszert, egy zavaros alkönyvtárban a Pascal forrását, és az ex szerkesztőt. A következő évben Joy körülbelül 30 szabadon felhasználható másolatot küldött el a rendszerből.

Miután néhány ADM-3a konzol (terminal) érkezett, amely már rendelkezett képernyőn címezhető kurzorral, Joy nekiállhatott a vi megírásának, amely elhozta a Berkeley-be a képernyő-alapú szerkesztés lehetőségét. Joey hamarosan dillemába esett. Gyakori eset az egyetemeken, hogy kevés a pénz és nem tudják kicserélni a régi felszereléseket új eszközökre. Ahelyett, hogy a különböző terminálokra írt volna támogató kódot inkább úgy döntött, hogy egyesíti a képernyőkezelést. Ehhez egy kis értelmezőt (interpreter) használt, amely újrarajzolta a képernyőt. Ez az interpreter a terminal karakterisztikájának leírása alapján volt vezérelve. Ez az erőfeszítés vezetett végsősoron a termcap-hoz.

Az 1978-as év közepére a disztribúciónak igazán szüksége volt már egy frissítésre. A Pascal rendszer egyre megbízhatóbb és robosztusabb lett, köszönhetően az egyre növekvő felhasználói közösség visszajelzéseinek. Két részre lett bontva, úgyhogy képes volt futni a PDP-11/34-esen is. A frissítés eredményeképpen létrejött a "Second Berkeley Software Distribution" (Második Berkeley Szoftver Terjesztés), amelynek a nevét gyorsan le is rövidítették 2BSD-re. A 2BSD a bővített Pascal rendszert, a vi-t és a különböző terminálokhoz használható termcap-ot tartalmazta. Bill Joy egy személyben állította össze a disztribúciót, válaszolt a telefon kérdésekre, és valósította meg a felhasználók visszajelzéseit a rendszerben. A következő évben közel 75 szalag került ki a kezei közül. Miután Joy más projektekbe is beszállt az elkövetkező évben a 2BSD terjesztés folytatta a bővülést. Ennek a disztribúciónak a végső verziója a 2.11BSD már egy komplett rendszer volt, amely PDP-11-esek százain futott a Föld különböző részein.

1978 elején Richard Fateman professzor elkezdett keresni egy olyan gépet, amelyen nagyobb címtartomány van mint az eddigieken, hogy folytatni tudja a Macsyma névre hallgató munkáját (eredetileg egy PDP-10-esen kezdte). Az akkor újonnan bejelentett VAX-11/780 kielégítette ezt az igényt és belefért a költségvetésükbe. Fateman és további 15 fakultás tag készített egy NSF előterjesztést, amelyhez hozzáadtak egy kis tanszéki tőkét, hogy meg tudják venni a VAX-ot.

Eredetileg a VAX a DEC VMS névre hallgató operációs rendszerét futtatta, de a tanszék a Unix rendszerben kezdett el dolgozni, és ezt akarták a továbbiakban is használni. Röviddel a VAX érkezése után Fateman kapott egy 32/V Unix portot a VAX-hoz John Reiser-től és Tom London-tól (Bell Labs).

Habár a 32/V képes volt Version 7-es Unix környezetet biztosítani a VAX-on, nem volt képes kihasználni a VAX hardver virtuális memória kezelési képességeit. Mint az elődjei a PDP-11-en, teljesen swap-alapú rendszer volt. A berkeley-i Macsyma csoport nem tudta kihasználni a virtuális memória adta lehetőségeket, és ez azt jelentette, hogy a folyamatok címtartományát a fizikai memória mérete határozta meg, amely akkoriban 1 MB volt az új VAX-on.

Hogy ezt a problémát kiküszöböljék Fateman megkereste Domenico Ferrari professzort - aki a rendszer fakultás tagja volt a Berkeley-ben - és megkérte, hogy derítse ki azt, hogy hogyan lehetne virtuális memória (al)rendszert írni a Unix-hoz. Ozalp Babaoglu, Ferrari egyik tanítványa nekiállt megkeresni azokat a lehetőségeket, amellyel működő lapozó rendszer implementációt lehet készíteni a VAX-hoz. Sajnos a munkája nem volt egyszerű, mert a VAX kevés referenciával rendelkezett.

Amint Babaoglu közeledett az implementáció első részéhez, megkérte Bill Joy-t, hogy segítsen neki megérteni a Unix kernel bonyolult szerkezetét. Joy érdekesnek találta Babaoglu megközelítését, így csatlakozott és segített a kódot beépíteni a 32/V-be, majd pedig segítkezett az azt követő hibakeresésben is.

Sajnos a Berkeley-nek csak egyetlen VAX rendszere volt, és ezt az egyet használták fel fejlesztésre is és az általános célokra is. Így néhány héttel a karácsonyi szünet után a felhasználók váltakozva találhatták magukat a 32/V-be és a "Virtual VAX/Unix"-ba bejelentkezve. Az új rendszeren dolgozva gyakran tapasztalhatták, hogy megállt a rendszer futása pár perccel a 32/V login prompt után. De 1979 januárjára a bugok nagy része eltűnt, és vele együtt a 32/V is eltűnt a történelem süllyesztőjében.

Joy látta, hogy a 32-bites VAX mellett a 16-bites PDP-11 hamarosan elavult lesz és elkezdte portolni a 2BSD programokat a VAX-ra. Amíg Peter Kessler és Marshall Kirk McKusick portolta a Pascal rendszert, addig Joy portolta az editorokat, a vi-t, a C héjat (shell), és a számtalan kisebb programot, amely megtalálható volt a 2BSD terjesztésben. 1979 végére a teljes terjesztés összeállt. Ez a terjesztés már tartalmazta a virtuális memória kernelt, a standard 32/V segédprogramokat, és a stuffokat a 2BSD-ből. 1979 decemberében Joy leszállította a majd' 100 másolatból álló 3BSD-t, a Berkeley első VAX terjesztését.

A Bell Laboratories legutolsó kiadása a 32/V volt, ezután az összes Unix kiadás már az AT&T-től jött, először a System III majd később a System V, amelyet már különböző csoport kezelt, és hangsúlyozottan stabil kereskedelmi kiadás volt. A Unix elüzletiesedésével a Bell Labs kutatói többé nem voltak képesek kiadni a folyamatban levő Unix kutatások eredményeit. Mivel a kutatóközösség folytatta a Unix rendszer módosítását, keresni kellett egy szervezetet, amely képes volt előállítani a kutatási kiadásokat. Mivel a Berkeley már korábban is részt vett a Unix fejlesztésében és történelme volt a Unix-alapú eszközök szállításában, gyorsan belépett abba a szerepbe, amelyet előzőleg a Bell Labs játszott.

Időközben a Defense Advanced Research Projects Agency (DARPA) tervező irodáiban megbeszéléseket tartottak arról, hogy hogyan lehetne nagyobb befolyást szerezni a Berkeley-ben folyó munka felett. A DARPA egyik korai sikere az volt, hogy országos számítógéphálózatot állított fel úgy, hogy országszerte összekötötte az összes nagyobb kutatóközpontot. Ez idő alatt számos olyan számítógépet találtak ezekben a központokban, amelyek elérték az életciklusuk végét, és lecserélésre vártak. Ezeknek a cseréknek a legnagyobb költségét a kutatószoftverek új gépekre való portolásának ára tette ki. Továbbá a telephelyek hiába is szerették volna kicserélni egymás között a szoftvereket, nem tudták, mert a hardverek és az operációs rendszerek különböztek.

Egy hardvergyártót választani nem lett volna praktikus (a DARPA részéről), mert a kutatócsoportok számára a számítógépek széles skálája kellett a munkához, és emellett nem lett volna bölcs dolog egy gyártótól függeni. Ezért a DARPA tervezői úgy döntöttek, hogy az lesz a legjobb megoldás, ha a gépeket az operációs rendszer szintjén fogják egyesíteni. Számos megbeszélés után úgy döntöttek, hogy a Unix lesz a kiválasztott szabvány, mert az már korábban is bizonyította a portolhatóságát.

1979 őszén Bob Fabry választ adott a DARPA Unix irányú érdeklődésére azzal, hogy írt egy beadványt amelyben javaslatot tett arra, hogy a Berkeley fejlesszen ki egy kibővített 3BSD verziót a DARPA közösség számára. 1979 decemberében Fabry fogta a beadványának másolatát és elvitte a DARPA találkozóra, ahol jelen voltak a VLSI (Very Large Scale Integrated Circuit) vállakozók, a Bolt, Beranek, és Newman (BBN) képviselői, akik az ARPANET fejlesztői voltak. Sok fenntartás fogalmazódott meg arra nézve, hogy a Berkeley képes lesz-e működő rendszert produkálni, de az 1979 decemberében kiadott 3BSD eloszlatta a kétségek nagy részét.

A 3BSD kiadás egyre nővekvő jó megítélésének köszönhetően Bob Fabrynak lehetősége nyílt arra, hogy egy 18 hónapos szerződést kössön a DARPA-val, amely 1980 áprilisával indult. A szerződés pártfogása alatt Bob Fabry felállított egy szervezetet, amelyet Computer Systems Research Group névre kereszteltek el, és amelynek a rövidítése CSRG lett. Azonnal felvette Laura Tongot, hogy kezelje a projekt adminisztrációs ügyeit. Fabry ezután egy projektvezetőt kezdett keresni, aki felügyelni fogja a szoftver fejlesztéseket. Fabry feltételezte, hogy amióta Joy átment a Ph.D. képesítő vizsgán, jobban koncentrál arra, hogy megszerezze fokozatát, mintsem elfoglaljon egy szoftver fejlesztői pozíciót. De Joy-nak más tervei voltak. Március elején egyik éjjel felhívta otthonában Fabry-t, és kifejezett érdeklődést mutatott a Unix további fejlesztésével kapcsolatban. Mivel Fabry meglepődött az ajánlattól, kellett egy kis idő mire beleegyezett a dologba.

A projekt azonnal elindult. Tong felállított egy olyan terjesztési rendszert, amely képes volt Joy előző disztribúcióinál nagyobb mennyiségű megrendelést kezelni. Fabry sikeresen irányította a megbeszéléseket Bob Guffy (AT&T) és a Kaliforniai Egyetem ügyvédei között a célból, hogy a hivatalosan kibocsátott Unix verziók kiadási feltételei mindenki által elfogadhatóak legyenek. Joy elfogadta Jim Kulp "job control"-ját, megvalósította az auto reboot-ot, egy 1K blokkos filerendszert írt, és támogatást készített a legújabb VAX géphez, a VAX-11/750-hez. 1980 októberében jelent meg az a felpolírozott terjesztés, amely a Pascal fordító és a Franz Lisp rendszer mellett egy kibővített levelező rendszert tartalmazott, és amely a 4BSD névre hallgatott. A kilenc hónapos életciklusa alatt közel 150 másolatot szállítottak le belőle. A licenc megállapodás nem gépekre szólt, hanem oktatási intézményekre, ezért a terjesztés körülbelül 500 gépen futott.

A Berkeley Unix széleskörű elterjedésével és előtérbe kerülésével számos kritika kezdett napvilágra kerülni. David Kashtan a Stanford Research Institute munkatársa írt egy tanulmányt, amelyben publikálta az általa a VMS-en, és a Berkeley Unix-on futtatott mérőprogram eredményeit. Ezek az eredmények egyértelműen azt mutatták ki, hogy a VAX-os Unix rendszernek teljesítménybeli problémái vannak. Ennek hatására Joy pár hónapra félretette jövőbeli terveit, és szisztematikusan elkezdte finomhangolni a kernelt. Heteken belül elkészült egy cáfolat, amely rámutatott arra, hogy a Kashtan-féle mérőprogram ugyanolyan jól fut a Unix-on, mint a VMS-en.

Ahelyett, hogy a folytatódott volna a 4BSD szállítása, 1981 júniusában Robert Elz által készített automatikus konfigurációs kóddal felruházott, és Joy által tuningolt rendszer megjelent 4.1BSD néven. A több, mint két éves életciklusa alatt körülbelül 400 terjesztési szállítást élt meg. Az eredetileg tervezett 5BSD kiadásból nem lett semmi, mert az AT&T részéről ellenvetés érkezett az elnevezéssel kapcsolatban. Az AT&T szerint a felhasználóik összekeverhetik az Ő kereskedelmi Unix kiadásuk "System V" nevét a Berkeley "5BSD"-jének nevével. Éppen ezért, hogy ne legyen elnevezési probléma, a Berkeley beleegyezett, hogy a jövőbeli elnevezési sémájukat megváltoztatják, maradnak a "4BSD"-nél, és a későbbiekben csak a kisebb számot fogják növelni.

A 4.1BSD megjelenésével a legtöbb teljesítmény körüli aggodalom eloszlott. A DARPA elégedett volt az első szerződés eredményeivel, és egy új két évre szóló szerződést kötött a Berkeley-vel. Majdnem ötször annyi támogatást nyújtott, mint első alkalommal. A szerződésből származó pénz fele a Unix projekthez vándorolt, a többit más kutatók kapták a számítástechnikai tanszéken.

A DARPA közösség igényeinek alapján egyre több módosítás került a rendszerbe. Az új rendszertől olyan gyorsabb filerendszert vártak el, amely képes volt nagyobb áteresztőképességet biztosítani az éppen elérhető diszk technológián, processz támogatást a multi-gigabyte cím tartományok igényeihez, flexiblis IPC (interprocess communication) megoldást, amely lehetővé teszi a kutatóknak, hogy elosztott rendszereken dolgozhassanak, és hálózati támogatás integrálását, hogy az új rendszert futtató gépek könnyen részesei lehessenek az ARPAnet-nek.

Duane Adams - aki a Berkeley szerződés felügyelője volt a DARPA-nál - abban az igyekezetében, hogy segítsen meghatározni az új rendszer milyenségét, létrehozott egy csoportot amelynek a "steering committee" (kormánybizottság?) nevet adta. A csoport feladata az volt, hogy segítsen írányítani az új rendszer tervezését, és hogy gondoskodjon arról, hogy a kutató közösség szükségletei ki legyenek elégítve. A bizottság évente kétszer találkozott 1981 áprilisától 1983 júniusáig. A bizottság tagja volt Bob Fabry, Bill Joy, Sam Leffler a Kaliforniai Egyetem Berkeley részéről, Alan Nemeth és Rob Gurwitz a Bolt, Beranek, és Newman-tól, Dennis M. Ritchie a Bell Laboratories részéről, Keith Lantz a Stanford Egyetemről, Rick Rashid a Carnegie-Mellon Egyetemről, Bert Halstead a Massachusetts-i Technológiai Intézettől (Massachusetts Institute of Technology), Dan Lynch az Információ Tudományi Intézettől (The Information Sciences Institute), Duane Adams és Bob Baker a DARPA részéről és Jerry Popek a Kaliforniai Egyetem Los Angeles részéről. 1984 elejétől ezt a találkozót workshopok váltották fel, amelyekben már más emberek is részt vettek.

Egy kezdeti dokumentáció - az új rendszer felépítésére tett javaslatot - amely a kormányzótanács, és más emberek között keringett a Berkeley-n kívül, 1981 júliusában hosszas vitákat váltott ki. 1981 nyarán Marshall Kirk McKusick már közreműködött a CSRG-ben (Computer Systems Research Group), amelynek során egy új filerendszer implementációján dolgozott. Ezen a nyáron Joy egy IPC (interprocess communication) implementáció prototípusának fejlesztésére koncentrált. 1981 őszén Sam Leffler csatlakozott a CSRG-hez, mint teljes munkaidős csapattag, és együtt dolgozott Bill Joy-jal.

Amikor Rob Gurwitz átadott a Berkeley-nek egy korai TCP/IP protokol implementációt, Joy beépítette azt a rendszerbe, és javított a teljesítményén. E munka során Joy-nak és Leffler-nek világossá vált, hogy az új rendszernek több hálózati protokolt kell támogatnia, nem csak a DARPA standard hálózati protokoljait. Ezért nekiálltak, és újratervezték a szoftver belső felépítését, csiszoltak a csatolófelületeken, így többszörös hálózati protokolokat tudtak egyidőben használni.

Mikor a belső rekonstrukciós munkák elkészültek, a TCP/IP protokolok integrálva lettek a prototípus IPC megoldással együtt, számos egyszerű alkalmazás született annak érdekében, hogy a helyi felhasználók hozzáférhessenek a távoli erőforrásokhoz. Ezek a programok - az rcp, rsh, rlogin, és rwho - eredetileg átmeneti programoknak készültek, amelyek a tervek szerint le lettek volna cserélve sokkal ésszerűbb megoldásokra (erre utalt az "r" prefix). Ez az új rendszer - amelynek a neve 4.1a lett -, előszőr 1982 áprilisában lett helyi felhasználásra disztributálva. Soha nem volt széles körű terjesztésre tervezve, viszont a rendszerről csempészett másolatok terjedtek el azokon a helyeken, ahol türelmetlenek voltak kivárni a 4.2 megjelenését.

A 4.1a rendszer már régen elavult mielőtt kész lett volna. A felhasználóktól visszaérkező értékes információkat felhasználva elkészült egy javított ajánlás az új rendszerhez, amelynek a neve "4.2BSD Rendszer Kézikönyv" (4.2BSD System Manual) lett. 1982 februárjában keringett ez a dokumentum, és azoknak a javasolt felhasználói csatolófelületeknek (a rendszer szolgáltatásokhoz) a rövid leírását tartalmazta, amelyeknek a későbbiekben beépítésre kerültek a 4.2BSD-be.

A 4.1a fejlesztésével párhuzamosan McKusick befejezte az új filerendszer implementálását, amely végül 1982 júniusában teljesen beépítésre került a 4.1a kernelbe. A rendszert ezután 4.1b-nek hívták, és csak néhány kiválaszott fejlesztői gépen futott a Berkeley-ben. Joy tartott a rendszer ilyen jelenős változtatásától, ezért szerintük az volt a legjobb, ha elkerülik a helyi terjesztést, főleg azért mert az összes gép filerendszerét le kellett volna menteni, majd vissza kellett volna állítani ahhoz, hogy át lehessen téri a 4.1a-ról a 4.1b-re. Amikor a filerendszer bizonyította stabilitását, Leffler nekiállt az új filerendszerrel kapcsolatos rendszerhívások megvalósításának, közben Joy pedig az IPC szolgáltatás javításán dolgozott.

1982 tavaszának végén Joy bejelentette, hogy csatlakozik a Sun Microsystems-hez. Ezen a nyáron felváltva töltötte idejét a Sun és Berkeley között. Idejének nagy részét az IPC-k javítására, csiszolására fordította, és újjászervezte a Unix kernel forrását, hogy elkülönítse a gép specifikus függőségeket. Joy távozásával Leffler-re szállt a projekt befejezésének felelőssége. Néhány határidő már esedékessé vált, és a DARPA közösségnek 1983 tavaszára ígérték a következő kiadást."

Joy-t méltán említik a számítástechnika egyik úttörőjének. Munkája nélkül sokkal kevesebb lenne ez az iparág.