söndag 20 april 2014

D och E

Mytbildningen om FOSS är stark, så jag tänkte, med anledning av en facebookdiskussion, bemöta lite fler myter här.

Myt: Man kan aldrig få se koden till proprietär mjukvara.

Sanning: Proprietär mjukvara kan ha allt från helt öppen källkod, via källkod som kan visas för kunder under vissa avtal, till superhemlig källkod som aldrig visas för någon utomstående under några som helst omständigheter.

Myt: Med FOSS hittar man buggarna blixtsnabbt och communityn publicerar rättningar direkt!

Sanning del 1: Hittandet och rättandet av en bugg går till ungefär så här (alltid, oavsett om det är FOSS eller proprietärt):

  • Någon observerar ett oönskat beteende
  • Någon analyserar kod
  • Någon rättar kod
  • Någon kvalitetskontrollerar (granskar och/eller testar) den rättade koden
  • Någon tillhandahåller en rättad version av mjukvaran för användaren
Det enda led i den här kedjan som möjligen kan hoppas över är kvalitetskontrollen, men annars måste alla steg löpas igenom. Och det tar ungefär samma tid att göra det oavsett om den som gör det gör det för ett FOSS-projekt eller ett företag. Eller, ja, den som jobbar för ett företag har ofta tillgång till bättre verktyg.

Men poängen är att tiden från den första punkten till den sista är stort sett konstant oavsett licensieringsform. Det kan förefalla gå fort med FOSS om communityt får en patch av någon som redan har löpt igenom i princip hela kedjan åt dem. Med en superhemlig leverantör tvingas man lämna över stafettpinnen redan vid den andra punkten ovan, och då kan det verka ta längre tid, helt enkelt för att det blir mer arbete som måste utföras innan det är klart.

Sanning del 2: Det är inte alls säkert att communityt betraktar beteendet som en bugg, eller tycker att den rättning man presenterar är bra, eller förstår/bryr sig i ens problem. Det som händer då är att du får antingen leva utan rättningen eller starta en egen gren av projektet, och i det senare fallet har vi gått från en snabb och enkel rättning till att ha eget underhållsansvar för ett mjukvaruprojekt. Hoppsan.

Utläggning:

De framgångsrika open source-projekten vi hör om är saker som Apache, Postfix, Bind, Python etc. Det är de projekt som uppnått "kritisk massa" så pass att de är självgående och inte har något problem att rekrytera folk, och har så många användare som är beroende av dem att belastningen per organisation är rätt låg att hysta in lite mantimmar på att jaga buggar etc.

Alla open source-projekt är inte lika framgångsrika och mer esoteriska projekt saknar den typen av egen motor vilket leder till att de bara utvecklas så länge som ursprungspersonerna har nytta av det och bara tills de features de behöver är klara. Efter det tenderar de projekten att ruttna.

Inom Piratpartiets IT-grupp känner många säkert till Kannel, den SMS-lösning partiet använde under lång tid men som hade många tillkortakommande vad gällde stabilitet och funktioner. Då koden också var extremt dåligt skrivet var det praktiskt sett så gott som omöjligt att hitta och fixa buggarna.

Det slutade med att Jörgen till slut kastade ut Kannel och skrev en helt egen SMS-gateway  i stället, en lösning som väldigt ofta är en realitet inom den fria mjukvaruvärlden. Det leder till en svårnavigerad djungel av halvfärdiga projekt som alla löser delar av en viss problematik men sällan erbjuder en komplett lösning som enkelt går att anpassa eller utöka utifrån nya behov.

Att plocka russinen ur kakan och tex köra CentOS på en server är bekvämt och enkelt. Någon annan fixar problemen och du slipper betala. Om man däremot är beroende av mjukvara som är väldigt nischad är risken stor att du blir sittande med svartepetter själv, och dessutom kommer andra att börja förvänta sig att du ska fixa skiten.

Myt: FOSS är billigare.

Sanning: Det är inte i första hand licenser som kostar pengar. Det är bara de som syns i boksluten, ja, men det kostar att underhålla sin egen mjukvara också. TCO (Total Cost of Ownership) är inte noll bara för att licenskostnaden är noll.

Myt: FOSS är säkert.

Sanning: FOSS-förespråkarnas argument har ofta ett korn av sanning, men de berättar inte allt. Till exempel berättar de oftast inte att i och med att källkoden är öppen, så kan inte bara snela hestar hitta fel i den; det kan andra också.

Myt: Eftersom man kan kodgranska FOSS går det inte att lägga in bakdörrar i FOSS.

Sanning: Kodgranskning är bra för att hitta designmissar och större klantigheter. Man kan hitta buggar också, men det är mer tur än skicklighet när så sker. Det är knappast svårt för exempelvis NSA att låta en agent infiltrera ett FOSS-projekt och "av misstag" implementera en bugg som ingen hittar men som ger NSA massor av godis.

Så, nu har du fått lite mer insikt i hur verkligheten ser ut i mjukvarans värld. Nästan alla problem med FOSS som jag har beskrivit ovan har sina motsvarigheter hos proprietär programvara; varken FOSS eller proprietärt är någon genväg till paradiset. Man får väga för och emot i varje enskilt fall; när man ska nyutveckla för statens pengar är FOSS att föredra, men annars bör valet av mjukvara inte avgöras av hur den licensieras. Detaljer som är relaterade till licensen kan vara en del av kravbilden, men huruvida det är FOSS eller ej är irrelevant.

Jag får sannolikt anledning att återkomma i ämnet.

söndag 13 april 2014

A, B och C

Det är inte alltid helt lätt för ett nytt parti att hitta sin plats i tillvaron. Särskilt inte för ett som bildas av en massa människor som är eniga om ett fåtal frågor, och har väldigt olika åsikter om en rad andra.

Dubbelt särskilt inte för ett parti vars politik slås fast i ett medlemsmöte som endast ett fåtal medlemmar bryr sig om, ett fåtal som binds samman av en egenskap: de avskräcks inte av en fullkomligt vanvettig mötesplattform.

Hur stor sannolikheten är att dessa (c:a 100) individers åsikter ska vara representativa för alla (drygt 7000 i skrivande stund) medlemmar hör inte till ämnet för den här bloggposten, och lämnas därför som en övning till läsaren.

Utan som nämndes inledningsvis ska vi tala om svårigheten med att finna sin plats i tillvaron.

Eftersom partiets medlemmar kommer från nästan alla delar av det övriga politiska spektrat, hamnar vi i praktiken ofta nära mitten i frågor där höger/vänster-skalan kan tillämpas. Det man ofta hör i debatterna är att vi ska använda oss av kunskap och vetenskap för att ha ett bra underlag för våra ställningstaganden, vilket mycket väl kan vara ett knep för att undvika höger/vänster-retorik.

Det har blivit så att extrema ståndpunkter oftast inte blir aktuella. Vilket jag personligen trivs väldigt bra med.

Nu hoppade du kanske till. Vadå "oftast"?

Jo, vi har minst ett extremt ställningstagande i vårt partiprogram.

Innan jag går in på vilket vill jag dock förklara innebörden av ordet "extrem", eftersom det inte är allom givet att alla förstår den.

När man har en intressekonflikt så är det alltid möjligt att ha mer eller mindre extrema åsikter om hur den ska lösas.

Man skulle kunna säga att ståndpunkt A är en ståndpunkt där man anser att det ska lösas på ett extremt sätt; när det gäller invandring skulle det kunna vara att genast skjuta alla invandrare utan vidare omsvep.

Man skulle kunna sätta upp en antipod till A, och kalla den C. De som är i punkt C vill i stället skjuta alla som befinner sig i punkt A, utan vidare omsvep, för invandrarna har ju lika självklar rätt som vi.

Intelligent som du är, har du noterat att jag hoppade över bokstaven B och gissat att jag tänker använda den för att beteckna ett mellanläge mellan dessa två ytterligheter. Och det är korrekt. De allra flesta, rasister som antirasister och allt däremellan, befinner sig på någon punkt B mellan A och C. Några närmare A eller C, några mer mitt emellan. Du inser förstås att punkt B kan, beroende på var man placerar den på skalan, representera människor med väldigt olika åsikter inbördes.

De som befinner sig nära punkterna A och C kallar vi extremister.

Nu kan vi flytta över det konkreta exemplet till något annat: hur man väljer programvara för offentlig verksamhet.

I A kan vi säga att ståndpunkten är att all programvara ska vara proprietär och tillhandahållas av ett specifikt företag. I C kan vi säga att all programvara ska vara FOSS. Punkten B representerar således en mix av proprietär programvara och FOSS, och kan mycket väl involvera flera leverantörer för proprietär mjukvara.

Vad är då Piratpartiets ställningstagande i frågan? Jo, C. Det går inte att bli mer extrem än så. Varför? Följer du länken får du läsa en hårresande övning i religiösa föreställningar och mytologi.

En religion, där Richard M. Stallman är så nära en gud man kan komma. Surfa gärna in på hans sajt och beundra den. En religion vars mytologi hävdar en rad intressanta saker. Citat från sidan jag länkade i förra stycket:

[...] den institution som använder programmet ska kunna gå in och ändra, byta ut och vidareutveckla.
Detta är verkligen inte något vi vill se hända. Inte för att sannolikheten är särskilt stor, men får vi se det hända, vilka scenarior kan vi föreställa oss då?

En möjlighet är att en glad amatör på institutionen som i likhet med många hobbyelektriker är kunnig nog att vara farlig, ger sig in och patchar koden och ställer till med elände - allt ifrån att institutionen får ägna massor av möda på att leta rätt på och rätta hans ändring, eller ännu värre göra en massa workarounds på andra ställen för att man inte hittar den, till att hela verksamheten går i kvav i dagar, kanske rentav veckor.

En annan möjlighet är att institutionen skaffar sig en utvecklingsavdelning. Programvaruutveckling i statlig regi, what could possibly go wrong?

En tredje möjlighet är att man anlitar externa konsulter för att fixa programvaran. Med den enormt kompetenta upphandling vi brukar se från statligt håll kan vi säga att resultatet av det knappast lär bli imponerande, heller.

Det finns fler möjligheter. Alla har en sak gemensamt: de kostar pengar. Mycket pengar. De flesta har en annan sak gemensamt: de har små utsikter att vara framgångsrika.

Det som är mest kostnadseffektivt om man i en verksamhet, som inte sysslar med mjukvaruutveckling, hittar brister eller fel i FOSS är att antingen hitta ett annat program som gör det man vill eller lära sig leva med problemet. Richard M Stallman väljer ganska konsekvent att leva med problemet - dygnet har trots allt bara 24 timmar - det är därför hans webbsida ser ut som den gör. Och för att han vägrar befatta sig med annat än FOSS. Där har du en sinnebild av vad resultatet av en total övergång till FOSS kan bli.

Ändra/rätta koden själv... knappast. Möjligen i undantagsfall, men det är inte det minsta realistiskt att utgå ifrån att det ska bli ett normalt och framgångsrikt arbetssätt.

Ska vi fortsätta med nästa citat ur mytologin?
Arkivbeständighet. Många dokument som myndigheter hanterar ska vara tillgängliga flera decennier fram i tiden, eller ska arkiveras för evigt. Det går inte att göra med slutna format som ägs av något företag. Om företaget går omkull, eller bara slutar stödja ett visst format, kan det bli omöjligt att läsa äldre dokument på moderna datorer. Bara med öppna format går det att vara säker på att dokument som skapas idag även kan läsas i framtiden.
Det beror för det första på hur esoteriskt formatet ifråga är. Adobe FrameMaker - en numera hädangången ordbehandlare, den överlägset bästa jag har stött på hittills - hade ett proprietärt format för sina filer: MIF. Det var ett markup-språk som liknade XML, och som sparades med ASCII-kodning. Det formatet är lika framtidssäkert som något öppet format.

För det andra: att formatet är öppet innebär inte att det kommer att leva för evigt. Tvärtom: allt har en begränsad livslängd. Även öppna format. Så hur man än vänder sig har man ändan bak, och måste hålla koll på formatens utveckling.

Öppna format har fördelar, inte tu tal om den saken, men arkivbeständighet... nej. Snyggt försök, men nej.
Myndighetsservice för alla. Det är stötande ur demokratisk synvinkel om man som medborgare är tvingad att köpa utrustning från ett visst företag för att komma i åtnjutande av myndigheternas service. När mer och mer av kommunikationen mellan myndigheter och medborgare går elektroniskt får det inte vara ett krav att medborgaren har köpt licens från Microsoft för att få del av fullgod service. Det är det tyvärr ofta i praktiken idag.
Detta är helt sant, men verkligen ingen anledning att förespråka en total övergång till FOSS. Det är en anledning att använda öppna format, men hur programmet som skapat filen är licensierat påverkar inte slutresultatet. Med andra ord, snömos.
Nationell säkerhet. Med sluten programvara kan man aldrig veta om den innehåller bakdörrar eller avstängningsknappar som kan aktiveras utifrån. Ibland vet man säkert att de finns. Nyare versioner av Windows innehåller funktioner som är tänkta att hindra piratkopiering, som gör att systemet låses automatiskt om det inte får godkännande från Microsoft via internet. Även om tanken är att det bara ska användas mot oauktoriserade kopior av Windows, innebär det att varje dator med Windows kan göras obrukbar utifrån av den som vet hur.
Är det här ett korståg för FOSS eller mot Microsoft? Nå, FOSS är verkligen ingen garanti för säkerhet. FOSS innehåller liksom all annan mjukvara buggar, som kan exploateras av illasinnade. FOSS kan även innehålla bakdörrar som planterats av exempelvis NSA-agenter, och som inte upptäckts av utvecklarna.

Fortsättningen till den ovanstående texten är riktigt underhållande:
Tänk tanken att alla datorer som kör Windows idag plötsligt slutade fungera samtidigt. Vad skulle hända med sjukvård, livsmedelsförsörjning, räddningstjänst, polis…? Hur många timmar skulle det ta innan samhället började kollapsa? Vi kan inte bygga in en sådan sårbarhet i den svenska infrastrukturen.
Ett utmärkt argument. Men inte för att använda enbart FOSS. Utan för att använda mjukvara från olika leverantörer. Det är nämligen om alla datorer har SAMMA mjukvara som sådant här kan hända, och det är återigen helt oberoende av hur mjukvaran är licensierad.
Vardagssäkerhet. Även bortsett från katastrofscenariot erbjuder öppna Linuxbaserade system bättre säkerhet än ”den ledande slutna plattformen”. Virus förekommer i princip inte, och Linuxsystemen är även mer robusta mot andra attacker. Det diskuteras om det här beror på att den öppna metoden generellt är bättre på att hitta säkerhetsluckor, eller bara på att Windows är feldesignat och för komplicerat för att göra säkert, men vad det än beror på är det här en stor fördel för Linux och de öppna alternativen.
Vilket svammel. Svaret är mycket enklare: om en plattform används av över 90% av alla datorer, kommer de som utvecklar virus att få mycket bang for the bucks om de ger sig på det OS:et. Om Linux vore populärt i stället för obskyrt, skulle det finnas många virus till Linux också. Vill man vara säker, ska man använda ett ovanligt OS.
Lokalt entreprenörsskap och samarbete. Genom att systemen är öppna blir det ekonomiskt möjligt att göra lokala anpassningar för speciella områden, och juridiskt möjligt att dela de anpassningarna med andra som kan ha nytta av dem. Ett bra exempel är Edubuntu, som är en version av Linux som är speciellt anpassad för att användas i skolor. Istället för att betala dyra licenser kan myndigheterna lägga en del av pengarna på att låta lokala entreprenörer ta fram förbättringar som underlättar verksamheten både lokalt och globalt.
En bra idé, men återigen, allt annat än ett giltigt skäl till att använda enbart FOSS. Man skulle t.ex. kunna låta eleverna köra Edubuntu i en virtuell maskin på en Windows 8-maskin, man har alla fördelarna av Edubuntu men också tillgång till vadhelst man skulle kunna vilja ha från Microsoft. Samma effekt skulle naturligtvis kunna erhållas genom att köra Windows i en virtuell maskin, men det fungerar sämre, av någon anledning.
Ekonomi. Öppen källkod blir i längden nästan alltid billigare än slutna system. Dels slipper man betala några licensavgifter, vilket faktiskt skulle bli en ganska stor besparing på hela den offentliga sektorn. Dels kommer man ifrån den påtvingade uppdateringscykeln där leverantören tvingar myndigheten att uppgradera för att få support, vilket i sin tur leder till att det krävs nya kraftfullare datorer för att köra den nya versionen. Ibland kan det vara förenat med en del kostnader att byta från slutna till öppna system, så det är inte säkert att man sparar pengar på kort sikt. Men i längden lönar det sig även ekonomiskt.
Det man bortser från helt och hållet är att många FOSS-program håller låg kvalitet, har bristande funktionalitet, eller att det i vissa fall inte ens finns FOSS-alternativ. Inte alla, men många, FOSS-program är helt enkelt undermåliga. Det kostar generellt sett mycket mer i både tid och pengar att ha undermålig programvara i ett IT-system än att betala licenser.

Så, eftersom det inte finns något faktabaserat argument för att använda enbart FOSS, återstår religion och mytologi.

Jag tror att det sundaste är en bra mix av FOSS och proprietärt, och att man fokuserar på vad som är effektivt och bra för samhället i stället för hur programvaran är licensierad.

Vad sägs om att sluta ha som ambition att göra allt man kan för att hoppa i galen tunna, och i stället agera för en ändamålsenlig, fungerande och rimlig IT-miljö i våra offentliga verksamheter? Det finns en motion i det pågående årsmötet, B04, som föreslår just detta.

Rösta gärna för den, när det blir dags.