Senaste nytt
2008-04-22 14:24
"Inga vapen till
Zimbabwe"
2008-04-18 20:10
IMÄI-aktivister släppta
2008-04-07 14:35
Egypten: Storstrejk
stoppad
2008-04-01 17:18
Piratpartiet skojar inte
Tipsa en kompis om denna artikel Skriv ut denna artikel Torsdag 29 augusti 2002

Revolutionär Site
Struktur (RSS) V1.0

Detta dokument sammanfattar några av de tankar som låg till grund för det publiceringssystem som byggdes för Yelahs räkning sommaren 1999 och som alltjämt används för att publicera tidningen.

Vad var problemet?

Problemet var, att Internet växer, att användarna blir fler och mer diversifierade, att tekniken ändras till höger och vänster osv. Följande punkter avhandlar vad problemet var när vi började bygga "nya" Yelah:

  1. Informationsstrukturering. Informationsmängden växte. Yelahs site blev bara större och större. Det var snårigt att hitta och det gick inte att söka bland sidorna. Man kunde iofs hitta bland sidorna med vanliga sökmotorer som Altavista, men träffsäkerheten var ytterst låg. Informationen behövde struktureras om och göras sökbar.
  2. Länkar. Länkar dör. Yelah har för närvarande ett stort länkskafferi till folk och fä både här och där. Vi har inte längre en chans att kolla alla och hålla reda på dem. Varje gång en länk ska ändras blev det handarbete med pill i HTML-filer för att ändra eller ta bort den.
  3. Tillgänglighet. Yelah är tillgänglig för de flesta läsare, men det sker på bekostnad av godis som en designer ogärna vill offra. Vi blir tvugna att skala ned alla sidor för att platsa i läsare som Lynx. En del läsare vill läsa texterna "off-line" och många anger att de skriver ut artiklarna och läser dem på papper. HTML är inte speciellt lämpat för pappersläsning.
  4. Dynamik. vi ville kunna ha "newsflashes" o dyl på Yelahs hemsida, med senaste nytt som tillkommer mellan de ordinarie numren. Förr var vi tvugna att göra detta genom att handeditera HTML-filer.
  5. Distribuerat ansvar. Vi ville kunna dela ut ansvaret att sköta olika underavdelningar till betrodda personer. Exempelvis skulle någon annan än webeditorn (fn Pelle Sten) kunna gå igenom och uppdatera dåliga länkar.

Vad var lösningen?

Alla de här problemen var rätt triviala ur webutvecklingssynpunkt. De har funnits förr och de kommer att dyka upp igen. Många sk IT-företag (Spray, Icon Medialab, Framtidsfabriken osv osv) lever på att lösa dylika problem åt företag och institutioner. Yelah hade INTE råd att anlita dessa. Dessutom var det önskvärt att lösningen byggdes helt och hållet med sk "fria" programvaror, vilket dessa företag sällan gör.

Jag adresserar problemställningarna punktvis med den lösning som sedan implementerades.

  1. Informationsstrukturering. Detta löstes genom att bygga en databaslösning där artiklarna kunde indexeras, efter mönster från den svenska artikeldatabasen "artikelsök". Man kan i och för sig lägga in samtliga artiklar i en databas, förse dem med nyckelord osv, men den metoden är inte långsiktig. En bättre metod är att låta ett dataprogram söka igenom de befintliga artiklarna och indexera dem, på samma sätt som t ex sökmotorer på Internet. För att sökmotorer skulle kunna hitta bland Yelahs filer skulle vi bli tvugna att strukturera HTML-filerna på ett sökmässigt godkänt sätt, med <META>-taggar som talar om vilka nyckelord etc som skall indexeras. Detta blir lätt soppigt och tar lång tid. Därför var det i mitt tycke bättre att konvertera alla artiklar i arkivet till en XML-baserad artikelform där nyckelord o dyl är tvingande. Därigenom kan artiklarna automatiskt indexeras i en databas utan större problem, och XML-filen kan vid behov omvandlas till såväl HTML som annat.
  2. Länkar. För att någotsånär hålla reda på länkarna placerades dessa i en databas. Databasen kan editeras av vem som helst via webformulär, som används för att administrera länkarna. Till webformulären och länksidorna används PHP. Lösningen kompletterades med en robot (humoristiskt kallad yog-sototh, the eater of dead links) som söker av alla länkar periodiskt och själv letar efter länkar som dött, flaggar dem i databasen och lägger dem i en lista som länkadministratören kan kolla av.
  3. Tillgänglighet. För att öka tillgängligheten av innehållet på Yelah:s site modifierades alla sidor att skilja på form och innehåll. Innehållet lagras i den XML-baserade artikelformen, vilken sedan kan exporteras till valfritt format. I XML-artikelformen finns bara ett fåtal märktaggar, de mest nödvändiga elementen som man känner igen från HTML, exempelvis rubrik / underrubrik / stycke / uppräkningslista / fotnot osv. Denna definieras fullständigt under "teknik" nedan. Formen kan läggas på valfritt XML-derivat genom att använda exempelvis CSS. Det finns en fungerande lösning för att presentera artiklarna direkt i XML med style:ning via CSS redan idag, men de flesta användare använder nog fortfarande HTML-derivaten.
  4. Dynamik. Detta löstes med sk dynamiska websidor. Här talar vi givetvis återigen om PHP. Dessa "småprogram" skriver ut innehåll ur en databas till en websida och kan dessutom editeras från en websida. Samma teknik används för länkarkivet.
  5. Distribuerat ansvar. Redan det faktum att länkar och dynamiskt innehåll kan editeras via websidor innebar en möjlighet att distribuera ansvaret. Det behövde bara kompletteras med en säkerhetslösning för login / logout, i vårt fall baserad direkt på HTTPS (SSL), med personlig inloggning via den enkla användarlista som stöds i webbservern Apache.

Teknik

Teknikvalen i RSS gjordes efter följande kriterier:

  • Funktionalitet, allt skall fungera för användarna, annars kommer de aldrig tillbaka. Fungerande verktyg, inte bara i teorin eller "3 år in i framtiden" i nån teknikers huvud.
  • Endast fri programvara skall användas.
  • Design är underordnat funktionalitet och läggs ovanpå det färdiga resultatet som en sista polish. Det är viktigare för användarna att de kan använda Yelah än att de kan titta på Yelah.

Arkitektur

Arkitekturen utgår från att artiklar finns i ett arkiv. Artiklarna formateras i en given XML-implementation, och de XML-formaterade artiklarna konverteras sedan till olika format (exempelvis HTML) med ett specialanpassat verktyg, XMLtools.

Artiklarna indexeras automatiskt i en databas, där arnvändarna kan bläddra bland kategorierna eller söka fritt i databasen.

Implementationen är gjord som en sk "trelagerlösning" där det översta lagret, presentation och adminstrationsgränssnitt, skrivits i ett enkelt webscriptspråk och därför är lätt att ändra eller helt skriva om vid behov.

I mitten finns olika sk "out of process"-komponenter som t ex konverterar artiklarna till olika format. I och med att programmen körs som egna processer riskerar de inte att krascha webservern. Ren C används som programmeringsspråk för att få upp hastigheten.

Som "backend" finns en databas och ett filsystem med XML-filer. Härifrån hämtas all substansiell information från systemet, och här lagras nytt material.

Färdiga verktyg

Här listas de tekniker och verktyg som befanns lämpliga att använda för projektet.

  • Expat -- en högpresterande XML-Parser används som grund för CGI-implementation av presentationsprogram. (Se XMLtools, nedan.)
  • Apache -- väl beprövad webserver.
  • PHP -- beskrivningsspråk för dynamiska websidor.
  • MySQL -- Fri databashanterare som är lämplig för mindre projekt.
  • Tidy -- ett verktyg som "tvättar" HTML-filer och anpassar dem till XHTML som är snarlik Yelahs XML-mall.

Nya verktyg

Yelah XMLtools (programmerade i C av Linus Walleij):

  • article.dtd -- Yelahs artikelmall för XML (DTD)
  • xmltohtml -- verktyg som parsar XML till HTML, antingen till kompletta HTML-sidor eller till HTML utan headers som kan inkluderas i en annan websida.
  • xmltortf -- verktyg som parsar XML till RTF för ordbehandlare
  • xmltotxt -- verktyg som parsar XML till råtext (ISO8859-1)
  • xmltotex -- verktyg som parsar XML till TeX-format
  • xmltopdb -- verktyg som parsar XML till Palm Pilot Doc (Aportis Doc, RichReader)
  • xmlindexer -- verktyg som parsar XMLfiler och indexerar dem i databasens artikeltabell

Andra verktyg (diverse språk, Linus Walleij):

  • Diverse PHP-script -- sköter presentationslagret för Yelah, detekterar använd browser och anpassar sig etc
  • Yog-sototh -- plockar ut länkarna ur Yelahs länkarkiv och kollar att de är OK genom att surfa till dem. Skrivet i perl
  • Diverse cron-script -- körs automatiskt för att spegla och göra backup på Yelah, samt för att generera webbstatistik, skrivna i C-shell och BASH

Alla verktygen är färdiga och finns för nedladdning under GNU General Public License (GPL) som ett exempel att jobba vidare på för de som är intresserade av denna typ av program. Allt är som sagt skrivet i C och använder James Clarks XML-parser Expat. För att installera dessa verktyg (unix är det som gäller här, såklart), följ den vanliga metodiken för att kompilera Unix-program.

Linus Walleij


Fler texter av Linus Walleij


Relaterade länkar:
Apache Server Homepage
MySQL Homepage
XML Guiden
HTML Tidy Utility
PHP Hypertext Preprocessor
LCDtools - motorn i Yelahs XML-hantering
Cool URI:s don't change (W3.org URI styleguide)
ANNONSER
http://www.yelah.net/articles/information20071218
http://www.arbetaren.se/prenumerera
http://www.uppmana.nu
http://www.stefanbergmark.se/
http://www.klimataktion.nu
http://www.anarkistisktidning.org