Not 2004-07-30: Skriven som ett svar på databasutredningen som Centralkommittén för fackföreningen SAC gjort där jag klarar upp en del saker som de verkar ha missförstått i utredningen. Notera också att mitt namn numera är Michael Widerkrantz. Angående CK:s databasutredning -97 Mikael Cardell 1997-10-04 (1) 1998-01-13 (2) Jag har tagit del av skriften som presenterar CK:s databasutredning och skulle vilja bemöta den med några punkter. Många av mottagarna av det här svaret har tidigare mottagit ett annat inlägg av mig rörande fri programvara, men uppenbarligen har jag inte varit tydlig nog eftersom större delen av poängen med en satsning på fri programvara och utbredningen av denna fria programvara helt gått de ansvariga för utredningen förbi. Jag håller helt med övriga databasutredare om nödvändigheten av ett gemensamt datorstött informationssystem; ett sätt att enkelt distribuera information dit där det kan behövas inom organisationen. Jag ser det som fullkomligt nödvändigt för att organisationen överhuvudtaget skall kunna fortsätta existera. Självklart ser jag det som en bra sak att tillgängligheten till informationen skulle öka, precis som det står i databasutredningen, men jag tycker att utredningen har tagit en konstig vändning när den påstår att tillgängligheten skulle öka vid användningen av ett slutet system som är begränsat till somliga plattformar. Kanske måste jag förklara vad jag menar med ett 'slutet' system för att det skall framgå vad jag är rädd är på väg att hända och vilka skräckscenarion detta kan leda till. Med slutet menar jag inte att systemen inte skulle kunna kommunicera med andra. Inte alls. Det jag menar är att systemen är slutna för insyn av andra än tillverkarna. Det handlar om kontroll av programvaran, dess filformat och kommunikationsprotokoll. I den 'kommersiella' mjukvaruvärlden är det vanligt att hålla programs filformat och kommunikationsprotokoll hemliga av konkurrensskäl. Vidare är det av samma anledning vanligt att program bara distribueras som binärer, där användaren alltså själv inte kan ändra eller anlita någon att ändra i programmen utan stora svårigheter. När jag skriver 'kommersiell' menar jag i det här sammanhanget inte bara att programmen kostar pengar. De fria programvaror jag talar om kan också mycket väl kosta pengar. Vi talar om ''free speech'', inte ''free beer''. Jag använder bara ordet 'kommersiell' för att kunna skilja på två traditioner inom mjukvaruvärlden, där den ena, alltså den kommersiella, har en tradition som klassiskt sett framförallt är kopplad till persondatorernas framväxt och William H. Gates III som sägs ha skapat den moderna mjukvaruvärlden. Den andra mjukvaruvärlden, den fria mjukvarans värld, är framförallt väl förankrad i universitetsvärlden och på tekniska företags utvecklingsavdelningar, kanske framförallt laboratorier för artificiell intelligens (AI) som de på Massachussets Institute of Technology (kända för bland annat Emacs) och Stanford University och utvecklingsavdelningar som Lucent Technologies (tidigare en del av AT&T) Bell Labs (kanske mest kända för Unix). Den kritik av fria programvaror som fanns i den utredning jag kritisierar var också rätt märklig, eftersom all kritik som fanns var ''[...] men idag tycks nackdelarna tala emot [de fria programvarorna]'' utan att räkna upp några nackdelar. Jag tror inte att databasutredarna satt sig in i vad fri programvara är för något. * Vad är fri programvara? Det framgår tydligt i databasutredningen att utredarna inte förstått vad termen 'fri programvara', åtminstone som den används av mig, betyder för något. Som jag påpekat i inledningen har den fria programvaruvärlden en historia framförallt i universitetsvärlden och kan med lätthet spåras tillbaka ända till 1940- och 50-talen. Den kultur som byggts upp runt den fria distributionen av programvara finns än idag och en lång rad stora projekt med tusentals deltagare fortsätter att bygga ut den. Vad menar jag då med ett fritt program? Jag menar helt enkelt ett program: 1) vars licens tillåter mig som användare att kopiera vidare programmet och alla dokument som kommer med det till alla jag vill under (minst) samma villkor som jag fått det. 2) som kommer med komplett källkod, så jag själv har kontroll över programmet, efter egen vilja kan förändra det eller anlita någon att förändra det och sedan kunna distribuera dessa förändringar enligt (minst) samma villkor. 3) som kommer med kompletta specifikationer för programmets filformat och kommunikationsprotokoll så att jag, om jag vill, kan skriva andra program som kan kommunicera med detta program. Observera att programmet mycket väl kan tänkas kosta pengar och kan användas i kommersiella sammanhang. Observera också att denna syn på programvara rimmar väl med den klassiskt anarkistiska inställningen till intellektuellt ägande som något ont. Det borde vid det här laget vara fullkomligt uppenbart att de fria program jag talar om inte har något som helst att göra med de så kallade PD-program som cirkulerar i PC-världen. Dessa program, som felaktigt kallas Public Domain, distribueras sällan med källkod och kommer sällan med några specifikationer eller dokument som beskriver dem eller deras filformat. De görs dessutom ofta av hobbyister vid köksbordet. Inget ont om detta, men den värld jag talar om ligger långt från köksborden. Ett kommersiellt program, enligt min definition i inledningen, är vanligen också på samtliga dessa tre punkter låst för användaren. Vanligen är licensen på ett kommersiellt program sådant att användaren inte ens _äger_ programmet, utan bara har rätt att använda det medan tillverkaren reserverar äganderätten till det. Detta ger en hel del märkliga implikationer på bland annat garantiärenden. Eftersom kommersiella program ytterst sällan kommer med källkod kan användaren inte själv påverka programmet om något skulle vara dåligt eller rent av felaktigt i det. Det enda användaren kan göra är att höra av sig till tillverkaren och klaga, men om inte användaren är tillräckligt stor (säg, har köpt 200 000 licenser av programvaran) kommer de inte att lyssna och kommer att efter eget godtycke laga felet när de orkar. Är tillverkarna tillräckligt stora kan de utan större problem helt enkelt lägga ner produkten helt och hållet, utan någon som helst hänsyn mot användarna som då sitter fast i ett hopplöst system. Specifikationer för filformat och kommunikationsprotokoll hålls vanligen hemliga i kommersiell programvara. Detta betyder till exempel att det är mycket svårt att flytta dokument och filer mellan olika datorplattformar och operativsystem, eftersom det inte finns dokumenterat någonstans hur filerna ser ut och hur man skall kunna läsa dem. Om tillverkaren bestämmer sig för att lägga ner produkten eller helt enkelt går i konkurs finns inga dokument som förklarar hur filerna ser ut så att andra program skall kunna läsa dem. Detta betyder, till exempel i fallet databassystem, att det är mycket svårt att rädda undan alla data från en säker död utan mycket, mycket manuellt arbete. Jag i min karriär som programmerare och konsult sett många sådana här tragedier, framförallt inom vården, där de tar extra mycket då mänskligt lidande kan bli resultatet. Jag har sedan många år försökt förorda fri programvara och lokalt kontroll över mjukvarusystem så långt det går. Tänk er skräckscenariot med ett röntgensystem som kontrollerar 32 röntgenlaboratorier. All bokning, schemaläggning av personal, stämpling av röntgenplåtar och utskrifter kontrolleras genom samma system. Programvaran är specialutvecklad för just detta sjukhus av en konsultfirma för ca 10 år sedan. Programvaran utvecklades med en traditionellt kommersiell syn på programvaran så sjukhuset, trots att det handlade om ett rent beställningsjobb, har inte tillgång till källkod eller beskrivningar av filformat för databasen. Konsultfirman som gjorde jobbet har sedan länge försvunnit från marknaden. Ingen minns vilka konsulterna som gjorde själva arbetet hette. Ingen dokumentation, inte ens för hur man _använder_ systemet, finns. Datorn där systemet är installerat börjar bli gammal och kompatibla datorer tillverkas inte längre. Man vill byta både programvara, som arbetar med ålderdomliga gränssnittstekniker, och hårdvara till modernare saker. Hur skall man nu kunna göra det? Budgeten tillåter inte att man sätter en massa specialister på att så att säga baklänges lista ut hur databasen ser ut och skriva specialprogram för att flytta alla data. Budgeten tillåter heller inte att man manuellt flyttar alla data genom att titta på dem och skriva in dem i ett nytt system för hand. Det skulle ta åratal även om flera, kanske tiotals, personer satt och gjorde det samtidgt och bli alldeles för dyrbart. Lösningen? Man bestämmer sig för att dra bort alla tidigare ansvariga för systemet och placera dem på andra tjänster och sätter en helt, i dessa sammanhang, grön sjuksköterska på uppdraget att vara systemansvarig för datorn. Sedan väntar ledningen på att röntgensystemet skall krascha. De kommer då att deklarera katastrofläge, peka ut sjuksköterskan som ytterst ansvarig och ställa henne inför någon disciplinnämnd, köpa in ett helt nytt system och börja om från början. När röntgensystemet kraschar kommer inte längre någon av alla dessa 32 röntgenlaboratorier att fungera. Inte ens akutröntgen, som förstås använder samma system, kommer att fungera längre. Allt måste nu bokas, stämplas och schemaläggas för hand. Patienter, eventuellt i livshotande situationer, måste transporteras till andra sjukhus. Allt detta för att man använder vad jag kallar 'kommersiell' programvara. Detta är _inte_ ett hypotetiskt fall. Jag har sett systemet under ett konsultuppdrag på ett stort sjukhus i Stockholm. Jag pratade med både systemadministratören och IT-avdelningen men de valde att ignorera mig. * Argument mot fri programvara Nu finns det förstås några självklara argument _mot_ fri programvara också. För det första: Vem klagar man hos om något är fel? Kommersiella program har alltid en tillverkare som står bakom programmet. Om något går fel med programmet vänder man sig vanligen till denne. Jag har beskrivit ovan att det är ganska sällan man kan få någon ögonblicklig hjälp när det gäller programvarufel även om man kan tänkas få support med mindre problem som till exempel felinstallation och liknande. När det gäller fria program kan man oftast inte vända sig till tillverkaren av programmet, dels eftersom tillverkarna vanligen frånsäger sig allt ansvar i mjukvarulicensen, men också eftersom tillverkarna vanligen är väldigt, väldigt många helt olika företag, organisationer och privatpersoner. I stället kan man, i fallet med programvarufel eller önskan om förändringar, i princip vända sig till vilken datorkonsultfirma som helst, eftersom man har tillgång till specifikationer och källkod i programmet. När det gäller support kan man stifta avtal med företag som exempelvis Cygnus Support i USA eller Signum Support i Sverige, som har som företagsidé att ge support till fria program. Textförfattaren arbetar själv i den här branchen med titeln 'Software Artist' på Signum Support och kan intyga att det är en lönande branch. Nästa klassiska kritik mot fri programvara är: Får inte programmen sämre kvalitet eftersom det inte lönar sig att försöka sälja programmen då man fritt kan kopiera dem från nätet? Jag vill svara att det snarare förhåller sig precis tvärtom. När det gäller kommersiell programvara finns det oftast rätt få utvecklare, som sällan har tid innan sin deadline att verkligen testa och avlusa sin programvara. När det gäller fri programvara som släpps fri att distribuera kastar sig verkligen tusentals skickliga programmerare över varje kodrad och lusläser den i jakt efter fel eller fula lösningar som de försöker optimera bort. Detta ger som effekt en mer effektiv programvara som dessutom förstås är mer känd och som fler alltså kan ge både support på och ändra i. Lönsamheten i den fria programvaruvärlden sitter inte i, som det gör i den kommersiella motsvarigheten, att sälja så många licenser som möjligt. I den fria mjukvaruvärlden är lönsamheten förskjuten mot försäljningen av _kunskap_ _om_ programmen i form av supportavtal och konsultarbeten. * Gemensamt datorstött informationssystem Större delen av dagens företags- och organisationsinterna informationssystem, liksom också datorbaserade informationssystem riktade mot externa kontakter, är baserade på World Wide Web eller andra öppna system. Med öppna system menar jag här alltså, som jag upprepat flera gånger, system där specifikationer för format och protokoll är publicerade och tillgängliga för alla intresserade. När det naturliga valet är att basera ett sådant system på öppna standarder finner jag det märkligt att ens föreslå att bygga in sig i ett hemligt format och protokoll med proprietär programvara som låser fast lösningen vid denna speciella programvara och knyter ett obrytbart band till ett enda företag. Lotus Notes och annan gruppvara knutet till ett speciellt företag är bra exempel på sådan 'hemlig' programvara. Satsar man på ett sådant system knyter man sig inte bara till ett företag, i det här fallet IBM eftersom Lotus blivit uppköpta av denna multinationella jätte, utan också till en viss programvara (eftersom ingen annan programvara är kompatibel), en viss version av den programvaran (eftersom uppgraderingar säkert kostar pengar) och en begränsad uppsättning plattformar (eftersom IBM inte har något intresse att stödja minoritetsplattformar med Notes-klienter). Vill man således komma åt information inom SAC från, säg, en unixbaserad dator, från VMS eller från någon annan plattform som IBM inte vill stödja, kommer man att förlora. Ett bra alternativ just för att distribuera information är World Wide Web, som i stället för att hålla allting hemligt och slutet är baserat på öppna publicerade standarder från bland annat World Wide Web Consortium (W3C, http://www.w3c.org/). Det finns gott om både kommersiell och fri programvara för att stödja World Wide Web, både på server- och klientsidan. Detta innebär att många fler plattformar skulle få tillgång till informationen och att vi skulle få större möjlighet att ändra saker själv; en större öppenhet. Den absolut vanligaste WWW-servern som används på Internet idag kallas Apache (http://www.apache.com/), som är fri programvara för Unix-liknande operativsystem. Övriga fria WWW-servers är till exempel Roxen, en programmerbar server framställd av linköpingsföretaget Idonex (http://www.idonex.se/), eller den trådade servern phttpd, framställd av linköpingsföretaget Signum Support (http://www.signum.se/). [2004-07-30: Ja, det står verkligen apache.com där uppe. Naturligtvis skulle det ha stått apache.org.] Få WWW-servers på Internet idag är kommersiell programvara. * Utrustning Jag föreslår att SAC bygger ett intranet (ett internt nätverk baserat på internetteknik) baserat på en eller flera WWW-servers med fri programvara. Jag tänker mig ingen speciell utrustning, utan en på Internet högst vanlig lösning både bland ideella organisationer och hos företag. Till att börja med skulle till exempel en vanlig äldre PC med, säg, en Intel 80486, och någorlunda bra utrustad med minne (kanske mer än 16 MB). Denna kan utrustas med det fria Unix-liknande operativsystemet Linux och fria serverprogram för elektronisk post, Usenet News, WWW, FTP och kanske fildelning mot Windows-klienter (SMB). Beroende på hur budgeten för denna satsning är kan annan hårdvara komma att vara aktuell, men det behöver inte vara märkvärdigare än så här. Vidare behövs förstås någon slags anslutning. Jag föreslår, om budgeten inte tillåter att SAC:s kansli inte kan anslutas med fast anslutning, att maskinen placeras i en datorhall hos något företag med fast anslutning mot lämplig ekonomisk ersättning. Linux och andra riktiga operativsystem har, till skillnad från till exempel Windows NT, inga problem med att administreras på avstånd. * Utbildning Utbildning för att lära sig att handskas med systemet, både operativsystemet Linux och administration av de olika serverprogramvarorna kan göras på frivillig basis. Jag är själv frivillig att ställa upp som lärare. Jag kan inte tänka mig att jag är ensam om dessa kunskaper i SAC.