|
ReactOS Community > ReactOS Interviews > Interview: Art Yerkes #6by Klemens Friedl on 2006-12-28 Art YerkesInterview met Art Yerkes by door Klemens Friedl Dit is het zesde in een reeks interviews met de ReactOS developers. Over enkele weken zullen we over een mooie collectie beschikken die de talenten van de mensen achter ReactOS toont.
Art is geboren in Philadelphia PA in de USA in 1974. Hij is betrokken bij ReactOS sinds 2002 en werkte vooral aan de toetsenbord-code in win32k en aan de netwerk code. De laatste tijd werkte hij voor aan netwerk-gerelateerde zaken, en was hij stilaan de geestelijke vader van port naar de PowerPC architectuur. StartHoe raakte je betrokken bij ReactOS?Ik hoorde er online over nadat ik de eerste afbeeldingen van ReactOS GDI (grafisch, maar zonder vensters) test programmas zag, en ik begon het te volgen. Ik hoopte om hierbij betrokken te raken en kreeg de kans nadat ik enkele patches schreef voor loadros en kernel32. Dus tot op dat moment had je voor Unix geprogrammeerd?Ik was een enorm unix hoofd sinds ik uit de windows programmering stapte omwille van 16-bits Windows en de nogal fragiele omgeving van Windows 95 en 98. Ik wist helemaal niet veel over de connectie tussen de native API en de win32 API voordat ik aan ReactOS werkte, maar ik leerde veel waardoor mijn latere jobs als Windows programmeur veel makkelijker werden. Ik weet niet hoe iemand er ooit in slaagde stabiele commerciële software op Windows te schrijven vooraleer ze konden zoeken en vergelijken in de Wine en ReactOS code. Ik hou van het unix model en de unix filosofie van software ontwikkeling. Unix applicaties gaan meestal niet te ver en worden regelmatig gebouwd met betrouwbaarheid als eerste doelstelling. Dit staat in schril contrast tegen wat ik beschouw als de zeer onverschillige developer gemeenschap rond Windows. Er blijken nu zeer ingewikkelde redenen te zijn waarom Windows applicaties door een periode van zeer povere betrouwbaarheid ging in de jaren '90, maar de Windows software als geheel is sindsdien wel met een grootte-orde verbeterd in stabiliteit. Dat gezegd zijn raakte ik totaal gewend in beide omgevingen. Had je al enige Windows ervaring? Of leerde je alles gaandeweg?Ik had wel wat ervaring, genoeg om gevaarlijk te zijn maar niet genoeg om de native API te kennen. Ik was zeer gedesillusioneerd door de manier waarop win32 slecht scheen overeen te komen met de meeste good practices die ik had geleerd toen ik mijn eigen engineering werk deed. Wat ik leerde was dat Win32 altijd bovenop de elegante en redelijk kleine Windows kernel draaide. Toen de effecten van de antitrust rechtszaken in de US bleken, werd de documentatie van de native API (die was voorbehouden voor bepaalde mensen met veel tijd om te zoeken of die bevoorrechte toegang hadden) openlijk beschikbaar via Microsoft zelf. Dit gaf me de mogelijkheid om beter te zien hoe Windows was samengesteld en meer succes te hebben als Windows programmeur, en ook om te helpen bij het schrijven van ReactOS. Herinner je je de eerste patch die je inzond??Dat was in het nu afwezige loadros dos programma. Ik was verveeld over de korte begrenzing van de command line en alle driver en registry hives werden daar gespecificeerd. Toen ik een driver wilde toevoegen kwam ik plaats te kort, dus breidde ik loadros uit zodat het de lijst vanuit een bestand las. Herinner je je het eerste werk dat je deed voor ReactOS?Het eerste grote werk voor ReactOS was de toetsenbord code in win32k, waaronder het laden van Windows-stijl keyboard dlls. Dat was leuk en ik leerde veel over de ondersteuning in meerdere talen. Plezier met ReactOSWat is je favoriete gebied binnen ReactOS om aan te werken?Ik heb niet echt een favoriet gebied, maar ik heb ervaring metde netwerk code dus aan tcp ip werken was leuk voor mij. Wat was het meest uitdagende werk dat je hebt gedaan?De port naar PowerPC. Daarvoor moest ik een manier vinden om little endian te produceren en pe-coff executables voor powerpc, en ik moest ook heel wat leren over de PowerPC architectuur en verschillende soorten PowerPC hardware. Zoals we er voor staan, heb ik tools die zeer stabiel zijn en goed werken en freeldr die op openfirmware kan draaien op een G3 mac. Ik ben net begonnen door de Windows Internals te gaan en de Ke gedeelten voor PPC te implementeren. Als er één ding is wat je ReactOS wil zien doen, wat is dat dan? Of is dit al in orde?Ik was heel blijtoen GvG voor het eerst Firefox een pagina kon laten laden. Hpoussin deed me veel plezier door mijn gekke idee (green.sys) te nemen en er iets moois van te maken. Je werkte veel aan ReactOS's netwerk (architectuur). Welke delen vind je echt leuk?Als er één advies is dat ik zou willen geven is het om alles wat je kan in een bibliotheek te plaatsen die gelinkd kan worden in een usermode applicatie. Royce Mitchell en ik deden did voor de tcp import van oskit en het hielp ons door een zeer goede debug-omgeving te bieden. Ik denk niet dat ik nog ooit nieuwe kernel-code zou schrijven zonder gebruik te maken van deze methode. Aan welke gebieden van ReactOS zou je nog willen werken?Momenteel ben ik druk bezig met de port, maar dat zal me helpen me in te werken in 2 zaken die me storen, maar waarvoor ik nog niet de kans heb gehad ze te veranderen. ReactOS'mm en cc zijn niet zo compatibel als ze zouden moeten zijn met Windows (vooral cc), en ik zou echt een ext2 driver willen zien draaien onder ReactOS. Ik nam deel aan een branch met Hartmut (PBUH) en Filip om dit te proberen, maar uiteindelijk heb ik niet veel bijgebracht. Wanneer ik meer leer over deze gebieden hoop ik een significantere bijdrage te leveren. Wat doe je nog voor ReactOS?Ik zie mezelf als een soort vrek en orale historicus voor ReactOS, evenals als programmeur. Misschien ben ik niet gewenst in deze functie maar ik denk dat het zijn voordeel heeft en redelijk natuurlijk aanvoelt. Ik probeer een fatsoenlijke +o te zijn als ik op het irc kanaal ben en behoedt het kanaal ervoor te kwaad of persoonlijk te worden. Ik probeer wat balans te brengen als er sterk gecontesteerd wordt vervul een modererende functie. Hoe succesvol ik daarin ben weet ik niet. Ik spreek ook over de deugden van 1978 en verwezenlijk mijn overtuiging dat daar de oorsprong van de westerse beschaving lag. 1978? No way.Way. OntmoetingenJe had het al over Wineconf. Wat was de eerste keer dat je persoonlijk andere betrokkenen ontmoette? En wie was de interessantste persoon die je ontmoette?Juist. Het was leuk iedereen te ontmoeten in die koude januari-maand in Minnesota. Ik was echt ontgoocheld dat onze relatie met de gasten van Wine niet beter was. Vanuit mijn standpunt concurreren we, maar we concurreren als mensen die meubels verhuizen naar een apartement naar de 2e verdieping: uiteindelijk hebben we gelijkaardige doelstellingen, ook al gaan we er anders mee om. Je was al op veel conferenties en hebt tal van besprekingen over ReactOS geholpen. Vind je het nuttig om andere developers te ontmoeten?Jazeker. De ontmoetingen met andere mensen achter ReactOS was geweldig en ik raad iedereen die de middelen heeft aan dit minstens éénmaal te doen. Wat was de favoriete plek die je bezocht?Zeker Minnesota. Ik denk er zelfs over daar ooit te gaan wonen. WerkZijn er delen van ReactOS waaraan je niet gewerkt hebt?Ik heb niet gewerkt aan USB, PnP, ACPI, of HAL in het kernel land. In user land heb ik nooit te maken gehad met shell32, comctl32 en hun ilk. Wat was je interessantste toevoeging aan ReactOS?Onze AFD is zeer degelijk ontworpen en voldoet aan de vereiste functionaliteit in mooie compacte code. Daar ben ik erg trots op. Werk je op dit moment aan andere grote ReactOS projecten?Hoewel het al 2 jaar duurt (waarvan ik ongeveer 1 jaar grotendeels afwezig was), heb ik zeer trage maar duidelijke vooruitgang geboekt om ReactOS op de PowerPC te realiseren. Waarom? Omdat dat een project is dat ik altijd al wou ondernemen en omdat ReactOS daar een unieke gelegenheid voor bied. Ik wil ReactOS op PowerPC macs en PReP machines draaien, zoals mijn thinkpad 860. Vermits de otheros booter beschikbaar is op Playstation 3, zullen we misschien in staat zijn 64-bit porting problemen te verkennen op cell processoren door middel van PowerPC 32-bit als uitgangspunt, zelfs al voordat de 64-bit MinGW ketting beschikbaar is voor intel. Het houdt het deelnemen aan het ReactOS project plezierig en houdt me verbonden. Toen ik voor het eerst het Smiley boot logo op de echte hardware VGA in mijn mac zag, was ik in extase. Heb je nog aan andere delen van ReactOS gewerkt?Ik schreef onze kleine DnsAPI implementatie bovenop GNU adns, dat was echt cool. Wat voor ontwikkel omgeving gebruik je?Ik gebruik een 64-bit gentoo machine voor x86 en zowel een mac G3 en een thinkpad 860 voor verschillende zaken van de PPC port. Natuurlijk is de voor de hand liggende vraag die mensen over ReactOS stellen: waarom zou iemand een clone van Windows willen draaien? Waarom niet het origineel?Eigenlijk hebben de meeste mensen waarmee ik praat (waarschijnlijk omdat ik redelijk diep in techneuten-gemeenschappen zit) echt het idee van een onbelemmerd besturingssysteem dat een eerlijk spelveld biedt om applicatie software te draaien zonder je zorgen te maken over het feit of een extra socket of extra gebruiker een licentieovereenkomst breekt en je wettelijk kwetsbaar maakt. Als het vergezocht klinkt om te zeggen dat de EULA voor MS besturingssystemen recentelijk redelijk draconisch is dan heb je ze niet goed gelezen. Er zijn verontrustende aspecten aan de beschikbaarheid en het gebruik van informatie die verzameld wordt door de software van het besturingssysteem. ReactOS en vrij/open source software bieden een hoognodige reality-check die commerciële producenten ervan weerhoudt zich te gedragen als een oligarchie wat betreft het beperken van de vrijheid van gebruikers en het zich toeëigenen van rechten op privé-informatie van die gebruikers. Zijn er naast ReactOS nog andere projecten waarbij je betrokken bent?Ik ben zowat de "slapende" maintainer van de SWIG Ocaml module, en ik schreef ook pycaml, met enige mate van trots daarover. Je vermeldde enkele termen waarmee sommige mensen bekend zijn. Kan je ze toch even uitleggen?AFD is de Ancillary Functions Driver. Met andere woorden, het is de plaats waar de *andere* zaken in terechtkomen. Nee serieus, het is de driver die het kernel-gedeelte van de mooie BSD sockets interface verzorgt bovenop de koude, gevoelloze TDI. Hoe begin je aan het ontwikkelen van zo'n zaken?Ik probeer wat tijd vrij te maken, meestal 's nachts, waarin ik kan gaan zitten, de kamer kan vullen met muziek en me zo goed mogelijk kan concentreren. In mijn huidige situatie ligt dat wat moeilijker, daarom is mijn productiviteit wat afgenomen tegenover vroeger. ToekomstAls je 'één' feature kon toevoegen aan ReactOS, wat zou dat dan zijn?Ik zou graag samba fs toevoegen, maar ik denk dat we de cache manager eerst moeten voltooien. Het zou voorzichtig zijn in dit geval te wachten, want we zijn erg incompatibel. Aan welk deel van de ontwikkeling ReactOS denk je dat we het hardst moeten werken?De cache manager is een probleem dat niet opgelost zal worden tot iemand hem 100% afwerkt. Dit is een groot werk en het is moeilijk te verdelen. Audio is ook een groot kluwen van naast elkaar bestaande en soms tegenwerkende APIs, waarvan elke een ander model biedt voor één of andere applicatie klasse. Silverblad doet een geweldige job door gewoon een startpunt te kiezen en orde op zaken te stellen. Is er iets anders dat je ReactOS zou willen zien doen, maar dat het nog niet kan?Af en toe probeer ik weer te debuggen in Cygwin om te zien of ik wat vorderingen kan maken. We zijn dicht bij het punt dat cygwin applicaties draaien, en daar zijn we al een tijdje, maar de API dekking van cygwin is zo uitgebreid dat het nog een tijdje kan duren voor ReactOS daar klaar voor is. Dat is spijtig, want we zouden er echt baat bij hebben./p> Heeft ReactOS meer masochistische developers nodig die werken aan ongedocumenteerde functies?We kunnen wel wat goede engineers gebruiken die gedocumenteerde functionaliteit uitwerken. Ik ben het er niet mee eens dat alles in ReactOS geïmplementeerd moet zijn zodat de interne werking vanaf het begin overeenstemt. We hebben recentelijk wat achteruitgang geboekt in voor gebruikers zichtbare functionaliteit, terwijl we bezig waren om de interne werking op te poetsen, en dat is spijtig. Heb je bepaalde ideeën over wat ReactOS moet integreren en wat niet? Is ReactOS momenteel te veel een bewegende massa om dat uit te werken?Tot op zeker niveau denk ik wel dat ReactOS momenteel te vluchtig is om van praktisch nut voor mij te zijn. Dat is niet de fout van een bepaald persoon maar onvermijdbaar. Ik kan me voorlopig niet meer zo inzetten als vroeger. Wens je ooit dat er gewoon meer developers zouden zijn?Natuurlijk. Ik mis Royce en GvG vaak. Wens je ooit dat er ReactOS distributies zouden zijn?Ja, en dat zal komen. De enige reden waarom dit niet zo is, is dat ReactOS er nog niet zover i dat iemand boos wordt omdat hij telkens opnieuw abiword moet installeren na een upgrade van ROS. Eens we wat publiek hebben, zal de 'poweruser' massa waarschijnlijk gebruik maken van het gemak waarmee ReactOS Livecds kunnen gemaakt worden om allerhande kleine ReactOS rescue-disks te maken. Zijn er andere dingen waarvan je denkt dat ReactOS zich erop moet concentreren?We moeten ons concentreren op de reden waarom we dit allemaal doen. Ik denk dat we de laatste tijd nogal streng zijn en een beetje uit het oog verloren hebben waarom ReactOS zo leuk was om aan te werken. Geen van ons wordt betaald en het plezier is echt het enige dat ons motiveert om verder te werken. Als het werken aan ReactOS niet meer beloond wordt omdat het te gestructureerd wordt of een te vijandige omgeving, dan zullen de developers vertrekken. We hebben dit al gezien en we zullen dit helaas nog zien totdat de situatie verbeterd. CompatibiliteitDenk je dat .Net ReactOS onnodig zal makenNeen. Denk je dat .Net de WinAPI onnodig zal maken?Neen. Denk je dat er applicaties zijn waarop ReactOS zich moet concentreren om ze te ondersteunen?Office, games, flash en maatapplicaties. Als we de meeste applicaties van deze categorieën kunne draaien, dan winnen we. Wat denk je van .Net ondersteuning? De twee mogelijkheden waaraan we dan denken zijn Mono en dotGNU.Dat is geen punt voor ons. We nemen een bestaande vrije implementatie en creëren een vervanging van mscore. Wanneer die implementaties meer solide worden, zal onze .net ondersteuning ook verbeteren. Samenwerking met bedrijven.Hoe moeilijk was het om je baas te overtuigen je te laten meewerken aan vrije software?Om precies te zijn heb ik al enkele keren betaald aan oopen source software gewerkt. Mijn recentste werk was aan de SWIG C# module in opdracht van mijn werkgever. SlotNog enkele laatste bedenkingen?De laatste tijd had ik meer tijd om aan ReactOS te werken, wat me toeliet te groeien in mijn nevenprojecten. Hopelijk kan ik weldra nog enkele interessante en nuttige bijdragen leveren. Ik ben altijd aanwezig geweest, ook al waren er momenten dat mijn meer dan 60-uren werkweek me verhinderde veel bij te brengen. Ik hoop verder te gaan als de beste vrek van ReactOS, als trouwe vriend en oraal historicus. Felicitaties voor al je verwezenlijkingen en bedankt om tijd te maken voor dit interview |