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
----