ERIK NAGGUM: NETTBORGER OG MOTINFORMANT Linuxmagasinet nr. 1 2002 Erik Naggum er et kjent navn i mange nettfora. Selv oppfatter han seg som den lojale opposisjonen til statiske dokumenttyper, lukkede formater, ødeleggende "brukervennlighet", fordummende verktøytenkning og annen uforstand i nettsamfunnet. Intervjuet av Thomas Gramstad, thomas@gramstad.no PROBLEMER MED SGML OG XML Du har jobbet mye med SGML. Hvordan er dagens situasjon mht. publisering i og ved hjelp av åpne formater. Hvor står SGML idag, og hva med XML? Jeg jobber ikke med SGML lenger. Grunnen er i hovedsak at jeg oppdaget at SGML ikke er noen forbedring over alternativene på _noen_ måte. Tvert imot, har man først forstått idéene bak SGML, skaper SGML selv mange flere problemer enn det løser, og de kan ikke løses uten å gjøre SGML vesentlig enklere. (XML var et steg i veldig gal retning.) Det er tre hovedgrunner til dette. Aller først, hva er galt med XML? XML fungerer fordi folk er enige om den, og _bare_ derfor. XML er bare syntaks, semantikken ligger dessverre fremdeles hos avsender og mottaker. Poenget med SGML og XML skulle liksom ha vært applikasjonsuavhengighet, men siden all semantikk flyttes over til applikasjonene, blir de likevel svært applikasjonsavhengige! Hva er problemene med SGML? Det er som sagt tre hovedproblemområder: 1. ATTRIBUTT VERSUS ELEMENT Idéen med attributter i elementer kommer fra den tiden da det skulle være mulig å fjerne all "markup" og sitte igjen med "teksten" i et dokument. Dette var politisk viktig for GMLs aksept i IBM for ca 30 år siden, og ble en møllestein rundt halsen til hele designet for ca 29 år siden når folk hadde akseptert GML og de gode idéene det inneholdt. Idag er det et enormt praktisk problem med attributter og det at de har en helt egen syntaks, i likhet med de andre 6 nivåene i SGML som har egen syntaks i forhold til det de beskriver, gjør at folk ikke tenker klart om struktur, men henger seg opp i irrelevante design-detaljer og syntaktisk skrot. Et enkelt eksempel: mumble Hvorfor er innholdet i href så forskjellig fra innholdet i a at man trenger å representere dem så forskjellig? Det er ingen fornuftig grunn til dette. Tvert imot. Det er bare fornuftige grunner til å behandle dem helt likt. Innhold er innhold. Hva noe brukes til er ortogonalt til hvordan det representeres. mumble kunne like gjerne ha vært foo://bar.zot/quux/frotzmumble, men når vi ikke lenger har attributter i start-tag, behøver vi ikke gjøre tag'ene så verbose, og vi kan skrive mumble>. Dessverre har SGML gjort en kardinalfeil på dette området som rammer alt som har med fornuftig behandling av informasjonen å gjøre. Fordi SGML sier at man må bestemme seg for hvordan noe representeres _og_ brukes for tidlig (prematur optimalisering), kan man ikke enkelt ombestemme seg eller utvide teknikkene for hvordan man behandler dataene. Derfor er også de modellene som brukes for å representere "dokumentene" internt i maskinen (DOM, f eks) og for direkte behandling i software også altfor kompliserte og _forvansker_ behandling og representasjon. Alt som gjøres innenfor SGML (etc.) er minst én størrelsesorden mer komplisert enn det kunne ha vært på grunn av attributt/element-splittelsen. Dette blir ikke minst opplagt når man ser på "transformasjon" av disse greiene, med XSL og gudene vet hva. Og det hele blir stadig mer komplisert når folk som mangler innsikt og kunnskap begynner å lefle med ting for å få dem til å "virke", heller enn å få noen til å tenke seg skikkelig om og gjøre noe som er riktig og elegant. 2. CONTENT MODELS Attributter er intet annet enn lokale sub-elementer, men man har ikke mulighet til å definere annet enn globale elementer, og de har bare én innholdsbeskrivelse (content model). Dette betyr at man ikke kan bruke naturlige navn i sammenhengen, men må bruke navn som er globalt unike. Dette er ikke noe problem i enkle dokumenter, men straks man begynner å forsøke seg på kompliserte strukturer, oppdager man at noe som _burde_ hete det samme i forskjellige deler av dokumentet vil ha forskjellig innhold avhengig av hva det selv er innhold i. Dertil kommer at strukturen i SGML må defineres på et tidspunkt man ikke kjenner til alle dokumentene det skal brukes på. Denne hard-kodede strukturen gjør at man sitter igjen med uhyre liten fleksibilitet - straks man endrer noe, får man dokumenter som ikke lar seg validere i _begge_ dokument-typene. Det _burde_ ha vært en uhyre smal sak å lage software som kunne lese et dokument i henhold til DTD A' og produsere/parse et dokument (umiddelbart til enhver tid) i henhold til DTD A, slik at man slapp å måtte "transformere" dokumentet og ende opp med en ikke-helt-temporær mellom-versjon. Det burde også ha vært mulig å beskrive endringer mellom to versjoner slik at man kunne lage varige "transformers" og dermed kunne få en strømlinjeformet versjonskontroll av både DTD'er og dokumenter, men ingen av delene er gjort og er knapt mulig, fordi SGML har bommet grovt på hvordan den beskriver sin indre struktur og har valgt en ekstremt hard og skjør strukturbeskrivelse som ikke overlever de endringer folk nødvendigvis gjør ute i virkeligheten. Man har en tro på muligheten eller ønskeligheten av "frysing" av strukturer. Denne troen på "frysing" fører til at SGML blir et minst like lukket format som alt annet, og ikke bare fordi stukturen er så hard at ingen kan endre på den uten å ødelegge den eller dokumentene som skal bruke den, men også fordi all software som lages ved siden av SGML vil inneholde all den informasjonen som SGML ikke innholder om dokumentets og elementenes _mening_, bruk og formattering. 3. INGEN MAKROER Svært ofte er det ikke mulig å vite hvordan folk vil bruke ting man lager og det eneste riktig er å lage et språk man kan bruke mer basale elementer i på en måte som støtter det menneskelige behovet for å klare å hanskes med repetisjon og redundans og la folk få _abstrahere_ på sitt eget nivå. Dette kunne meget enkelt ha blitt implementert med Lisp-type makroer, dvs, pseudo-elementer som produserer én eller flere elementer. Istedet har vi bare fått uintelligente monstre som CSS, som det er uhyre vanskelig å bruke fornuftig og forvente å få gode resultater med overalt, og Javascript, som både implementeres forskjellig overalt og som det er lett å misbruke grovt, i motsetning til en vel-implementert Java-maskin, som dessverre i praksis er død på klient-siden fordi en viss monopolist så det som "truende", stakkars. På grunn av denne mangelen på makroer som kan skrive om uttrykk på sparket, ender vi opp med kilovis med "kode" som skaper uhyggelig ubrukelige sider som bare såvidt kan leses hvis du har samme oppløsning på skjermen og alle de samme fontene som den som laget sidene og nok båndbredde til å få overført sidene før du har sovnet. Men mangelen på makroer skyldes ikke at noen ikke skjønte hva de kunne gjøre, men mangelen på viljen til å lage språk som er utvidbare på en fornuftig måte. XML gjør ikke dette bedre - tvert imot. Hele modellen for XML er like statisk som SGML og HTML er og det vil ikke skape noen forbedring i det hele tatt siden de ikke har et begrepsapparat for å snakke om enkel transformasjon, og dette skyldes igjen hardheten i innholdsmodellene og attributt-vs-element splittelsen som gjør dette praktisk vanskelig for dem som ennå fortsetter i SGML-verdenen og bare gjør ting verre. Men dette betyr ikke at det ikke er praktisk anvendelig og at de som ikke bryr seg om riktighet eller eleganse ikke kan klare å gjøre interessante ting - de kan nettopp dét fordi mange mennesker der ute er villige til å _jobbe_ så mye, så før eller senere blir jo _noe_ av det litt enklere. DocBook f.eks. er ikke fullstendig hjerneskadd, og verktøyene som brukes for å lage DocBook-dokumenter er faktisk tålelig gode, men å tro at DocBook er noe mindre lukket enn Word og noe mindre avhengig av å ha riktig versjon av alle pakker som inngår i produksjonskjeden, er en illusjon. NYTT KONSEPT FOR DOKUMENTGENERERING Hva kan gjøres med disse problemene? Jeg har arbeidet med en etterfølger til SGML i mange år, og tror jeg kan ta knekken på de store problemene som SGML og XML og HTML skaper for alle som bruker dem, men jeg har jo ikke de milliardene som skal til for å markedsføre dette når Microsoft står bak XML-satsningen (og det helt utrolig hjerneskadde SOAP-opplegget), noe som for meg ihvertfall er en veldig god grunn til å la være å arbeide med formatet. Alt Microsoft rører blir til shitware og den eneste måten å overleve på med ens personlige integritet i fullt behold er å gjøre noe annet enn det Microsoft gjør. Vi kommer tilbake til Microsoft, men kan du beskrive ditt eget konsept? NML (for Naggum Markup Language!), eller Enamel, er basert på idéen om funksjoner i et navnerom istedenfor en elementstruktur. Det har Lisp-grunnleggende trekk. NML har ingen utilities, kun Unicode er tilstrekkelig. En funksjon i NML kan være et systemkall, eller et kall til en elementstruktur, eller til en hvilken som helst fil som genererer en struktur tilbake. NML skal beskytte dataene ved å gjøre det mulig for en datastruktur å kalle seg selv. I SGML burde man ha operatorer som gjør arbeidet. NML gir SGML spesialoperatorer og en funksjonskallmodell, men har definert at det returneres en egenstruktur. Dette vil da kreve både kunnskap om operativsystemet og dets systemkall i tillegg til kunnskap om dokumenttyper, strukturer og standarder hos dem som skal utvikle NML? Ja. Dessuten er det ønskelig med erfaring med Lisp. Så det trenges kontakt/samarbeid mellom det som idag er forskjellige separate IT-subkulturer. Det kreves nok renessansemennesker for å realisere noe slikt som NML... Hvor langt har arbeidet med NML kommet? Har du f.eks. prøvd å organisere det som et Open Source-prosjekt? Nei. Jeg ønsker ikke å nedlegge masse tid og krefter som leder for et Open Source-prosjekt. Jeg har faktisk noen betenkeligheter i forhold til Open Source. Jeg ønsker å tjene penger på det jeg gjør - også på intellektuelt arbeid eller programvareutvikling. Jeg oppfatter Open Source som en høyst forståelig og på mange måter sunn reaksjon på alt det gale Microsoft gjør. Jeg savner likevel økonomisk forståelse og tenkning hos Open Source-tilhengerne. Kanskje mange av dem vil bli misfornøyde om noen år, når deres jevnaldrende har hus, hytte, bil osv. Jeg ser på NML som et eksempel på motkultur. Jeg begynte å arbeide med idéene om NML rundt 1995, og oppfatter meg selv som den lojale opposisjonen til GML (og XML) - jeg går til angrep på den rådende statiske tro, gjennom å diskutere disse idéene med ulike mennesker og i ulike fora. Selv om NML ikke blir et konkret prosjekt eller produkt på lang tid, kan idéene fra NML kanskje bidra til å lede utviklingen i en bedre retning, og eliminere noen av de verste idéene som idag råder grunnen. NML er som avisen Klassekampen: verdiløs i seg selv, men verdifull som motkultur. SKADER MICROSOFT BRUKERNE? Du er en uttalt kritiker av Microsoft i ulike sammenhenger. Hva vil du si er det mest kritikkverdige som Microsoft gjør i forhold til brukerne? Microsoft har brukt mange milliarder dollar på å fortelle hver eneste ikke-analfabet på hele kloden at datamaskiner er enkle å bruke, at det ikke kreves kompetanse for å bruke eller drive dem, og at enhver idiot bare kan kjøpe og sette opp systemene deres. Hvert eneste kompetente "datamenneske" på den samme kloden har ergret seg over denne vanvittige løgnen og selvforherligende propagandaen fra første dag! Microsofts produkter er faktisk slett ikke brukervennlige - datamaskiner er ikke enkle bokser som enhver idiot kan bruke. De har aldri vært det, og de vil aldri bli det. Like lite som folk får lov til å herje rundt med ledningsnettet i huset sitt på egenhånd, legge sitt eget kloakkanlegg, eller gjøre hva de vil på telenettet, bør folk uten kompetanse og rimelige credentials få lov til å sette hva de vil på Internett-tilknytningspunkter. Internett er blitt en grunnleggende del av samfunnets infrastruktur. Vi ser idag stor uansvarlighet som følge av Microsofts måte å markedsføre seg på, samt deres mange brudd på Internett-standarder, og vi kan ikke lenger tillate at folk som lar sine datamaskiner utnyttes for å ødelegge for denne infrastrukturens nytteverdi. Det er like ille som å la inkompetente nisser koble kloakken til drikkevannsnettet. Folk som gjør slikt blir hardt straffet. Ingen kan påberope seg at noen andre har skylden for slikt uansett hva de måtte ha installert av idiotiske apparater koblet til disse nettene - det faktum at de har koblet slikt tull på nettene er og bør være straffeskjerpende . Microsoft selv har gjort så mye hærverk på forestillingen om at man må kunne det man driver med for å slippe datamaskiner løs på nettet at de må sees som ansvarlig for disse konsekvensene av sine markedsføring. (At de samtidig driver en av verdens mest kostbare "kursopplegg", trolig større enn Scientologi-kirken i omfanget av både svindel og omsetning, rokker ikke ved det faktum at hele verden _tror_ at de klarer seg uten kunnskaper hvis de skaffer seg Microsofts systemer.) Microsofts fantastiske historie med å legge åpent til rette for virus og for å designe ting med virusspredning som sin eneste fordel over konkurrentente (ActiveX, f. eks.), gjør at man må se deres ansvar i en litt større sammenheng. Virusspredning er ikke en _tilfeldighet_ i Microsofts løsninger. Bill Gates kan ikke påberope seg noen moralsk rett til å sutre over at slemminger misbruker systemene mer enn noen få ganger før man forventer av et presumptivt smart menneske som ham (forutsatt at man ikke leser bøkene hans og begynner å lure) tar tak i problemet og designer bort virusspredning fra systemene. Det har ikke Bill Gates forlangt og Microsoft aldri gjort. De tar rett og slett ikke ansvar for at systemer som er fulle av virusspredningskanaler og som trenger kontinuerlig oppfølging av kompetente teknikere slippes løs på folk som kjøper systemene _fordi_ de tror at de ikke skal trenge noe så ille og vanskelig som "forkunnskaper" og ihvertfall ikke skal holdes ansvarlig for at noen "misbruker" datamaskinen de har det hele og fulle ansvar for. Hva slags antisosial ansvarsfraskrivelse er det vi har _godtatt_ i markedsføringen fra Microsoft for at de skal tjene mange milliarder dollar på kunnskapsløshet og kunnskapsforakt? Alle _andre_ som ber folk slutte å vite om ting (som f.eks. bileiere), sørger for at de selv tar ansvaret for det folk ikke skal trenge å vite (ved å utdanne gode teknikere). Microsoft fraskriver seg ansvaret hos kunden, men de er faktisk fullt ut ansvarlig _både_ for at brukerne deres installerer shitware som ikke oppgraderes, _og_ for at disse systemene kan misbrukes av ondsinnede. Microsoft selger systemer som er så lite robuste at de ikke bør brukes av folk som ikke har sertifisering, og folk som ikke har signert en avtale om at de er 100% ansvarlig for alt hva deres datamaskin foretar seg når de er tilknyttet Internett, bør rett og slett ikke slippes til på nettet, men kan få bruke tjenester bak proxier og andre ting som holder dem unna andre menneskers drikkevann. Det ovenstående ble skrevet før Bill Gates fikk et nytt innblikk i det opplagte, slik det har skjedd tidligere med f.eks. vindussystemer, Internett, og Java, så nå som vi har fått levert femte kapittel av Bill Gates' Åpenbaring, lyder første vers at sikkerhet skal gå foran brukervennlighet. Whooppee! Det gjenstår å se hvordan dette påvirker noe som helst. De som stoler på denne nye kursendringen, bør likevel ta backup jevnlig og sørge for at de har kopier av sine dokumenter på maskiner eller medier som ikke kan nåes av virus og Microsoft's mange ondsinnede brukere. PC - MYE MER ENN ET VERKTØY Du har sagt at det er farlig å oppfatte datamaskinen som et verktøy. Hva mener du med det? Verktøy-holdningen er farlig og vitner om veldig liten vilje til innsikt i hva som foregår rundt en. Makt er f.eks. bare et verktøy. Penger er også bare et verktøy. Poenget er er at verktøy har _formål_. Og det er formålet som er viktig å snakke om. Reduserer man noe til et "verktøy", godtar man derfor alle formålene som noen _andre_ har med det verktøyet. Det er derfor helt vesentlig å se på datamaskinen ikke som et verktøy, men som et middel til å realisere forskjellige mål. "Verktøy"-tankegangen vil effektivt hindre deg i å forstå når målene verktøyet leder deg til å velge er forskjellig fra dine egentlige målsetninger. De "oppgavene" du læres opp til å løse med verktøy du tar for gitt, vil også være bestemt av andre enn deg selv. Det du burde ha gjort og burde ha tenkt over og burde ha verdsatt, blir redusert til Grandiosa for hjernen. _Alt_ vi gjør med datamaskiner kommer ferdigpakket med en underliggende filosofi, fordi det er laget med _vilje_ fra bunnen. Dette til forskjell fra (så godt som) alt annet mennesket har laget. Software er skapt inne i hodet til folk. Software er kunst. Software er designet i noens bilde. Det er denne filosofien, dette bildet, denne kunstens premisser du _godtar_ når du sier at datamaskinen bare er et verktøy. "Verktøy"-holdningen er den rake motsetning av intellektuell, tenkende, endog bare _bevisst_ tilnærming til et hvilket som helst fagfelt. Hva som helst kan være verktøy. _Lobotomi_ var bare et verktøy for å løse et sett med problemer i sin tid, og holdningsløsheten overfor denne grusomheten har gitt et helt fagfelt legitimeringsproblemer i svært lang tid i visse kretser, noe som effektivt hindrer en modernisering av kritikken og en videre forståelse av utviklingen innen faget blant de som kritiserer. Ved å redusere forståelsen til en ultrapragramatisk, anti-intellektuell "verktøy"-holdning, klarte psykiatrien å ødelegge sin egen troverdighet. IT-faget står i fare ved å gjøre det samme ved å akseptere premissene levert av Microsoft og andre aktører som virkelig har vyer og ambisjoner om makt og midler til å oppnå dem. De IT-folk som _ikke_ står imot dette pragmatiske presset står i fare for å bli like uglesett i ettertiden som de som praktiserte lobotomi har blitt, og vil bli like hardt fordømt som de som bare så på lobotomi som et "verktøy". Som fagmann gjør en seg skyldig i å redusere selve _faget_ sitt til en premiss-_mottager_ fra folk utenfor faget istedenfor å være en premiss-_leverandør_ til samfunnet, slik IT-fagene bør være. Om det kan sies enda sterkere: Folk som arbeider innenfor IT-faget og som ikke forstår at de nettopp ikke _kan_ tenke på sitt fag som "verktøy" er en fare for det samfunnet de påvirker med sine ubevisste, ugjennomtenkte avgjørelser og verdier og der de overlater alle relevante avgjørelser til dem som levererer dem hardware og software. Dersom det er mulig å selge sin sjel, så det er de som tror at _noe_ som helst her i verden er "verktøy" som har gjort dét. Løsningen er ikke å forsvare ultrapragmatismen og verktøy-holdningen, men å ta seg sammen og tenke over de problemstillingene som har gjort at man har valgt å _resignere_ i forhold til de premissene som verktøyene legger - for det er en slik resignasjon som er den virkelige faren i dagens utviklingstempo. Vi må alle bli mye flinkere til å forstå og formulere formålene med ulike verktøy vi bruker og evt. (videre)utvikler - både våre egne formål og de formålene som allerede er lagt inn i verktøyene. ---- http://folk.uio.no/thomas/linux/naggumfoto.jpg http://folk.uio.no/enag/California-DMV-photo.jpg ----