Här är (utkast till) riktlinjer för programmering av nya funktioner inom Projekt Runeberg.
- Program ska skrivas i Perl 5.8. Befintliga program i Pike bör konverteras eller skrivas om.
- Program ska vara förberedda för övergång från Latin-1 till UTF-8, dvs valet av teckenstandard ska vara uttryckligt.
- Källkod, källtext och bilder i källformat bör skiljas från alla derivat, för att underlätta backup m.m. Förebilder är skillnaden mellan texter och html samt mellan images och img_cache.
- Lösningar bör bygga på on-demand principen, så att tunga satsvisa körningar undviks. Förebild är konverteringen av faksimilbilder från TIFF till PNG. Detta bör kunna tillämpas även på framställning av webbsidor.
- Alla förändringar bör versionshanteras, helst med en gemensam changelog, så som vi redan gör med korrekturläsning och HTML-kapitel. Detta bör kunna utvidgas till författarpresentationer, bildmanipulering (manuell deskew) och uppläggning av nya verk.
CVS och kodstandard
Källkod för scripts och annan programvara finns av tradition utspridd på några olika ställen, däribland /home/runeberg/bin, /home/runeberg/src och /home/runeberg/texter/lib. Målsättningen bör vara att använda ett centralt CVS-repository - eller kanske något modernare, som Subversion?
Sedan april 2004 finns på Lysators CVS-server (cvs.lysator.liu.se) ett repository som heter "runeberg". En utcheckad arbetskopia finns på /home/runeberg/cvs/runeberg/. Repositoryt innehåller följande moduler:
- Modulen "Runeberg" innehåller generella perl-subrutiner i filerna Common.pm och Web.pm. Dessa är även utcheckade under /usr/lib/perl5/Runeberg/.
- Modulen "rudolf" innehåller en robot som regelbundet loggar in i LysKOM och rensar bort spam ur redaktionens epostimportmöte.
- Modulen "script" innehåller scan.pl som hjälper till att scanna med rätt inställningar om man kör Linux och renumber.pl som kan döpa om mängder med filer på en gång, så att de blir numrerade i följd.
- Modulen "search" som säkert innehåller något användbart.
Personliga inställningar
- Cookies bör bara sättas för de användare som valt att göra personliga inställningar. Som default bör sajten fungera cookie-fritt som idag
- Hanteringen av personliga inställningar bör vara enhetlig över hela sajten. Idag förekommer detta enbart i wikin. Ambitionen innebär en förändring av wikins funktioner, eftersom språkval inte kan göras med dagens wiki-programvara (UseModWiki 0.92).
Följande funktioner bör kunna individualiseras:
- Menyspråk: engelska, svenska, norska, danska
- Skärmupplösning: Användare med 120 dpi eller högre vill som default ha faksimilbilder som inte är så hårt nedskalade
Bygga HTML-sidor på begäran, ersätta wwwinst.lpc
Största konverteringsarbetet kan bli wwwinst.lpc, som idag (augusti 2004) är skrivet i Pike och skrivet för att köras vid "make" på en volym åt gången. Även om detta går på några få sekunder även för våra tjockaste volymer, så är det svårt att förena med möjligheten att redigera OCR-text (korrekturläsning) och HTML-kapitel via webbforumlär. Vid förändringar i layout måste "make" köras för samtliga volymer, vilket är mycket tidsödande.
Redovisa statistik i realtid
Idag (2004) körs många statistikrapporter med uppdatering en gång om dagen eller ännu mer sällan. Det gäller statistik om korrekturläsning, indexering, webbtrafik och antalet korrekturlästa sidor per användare (som redovisas med mail varje månad). Statistiken borde i stället redovisas i realtid, så fort något har ändrat sig. Det måste då finnas något mellanformat (aha, en MySQL-databas) som uppdateras så fort en ändring görs, t.ex. en ny sida blir korrekturläst.
Korrstaplar visas i realtid (mars 2005).
Övergång till UTF-8
Är det möjligt att leva med hälften av källtextfilerna i UTF-8 och hälften i ISO 8859-1? Kan våra scripts konvertera till UTF-8 vid inläsning och sedan skapa utmatning i UTF-8? Måste vi köra Perl 5.8 och MySQL 4.1 (eller senare)?
Användning av MySQL
Facspdf, som på begäran producerar PDF-filer av inscannade TIFF- eller JPG-bilder, är ett av få program som idag använder en MySQL-databas. Borde vi redan nu försöka köra MySQL 4.1 som har fullt stöd för UTF-8?