Vad är fri programvara -- och varför är den bättre än sluten dito Av: Marcus Rejås Tack till: Johan Hammar, Alexander Nordström och Torbjörn Svensson för korrektur och kommentarer. Detta verk skyddas av GNU FDL (se längst ned i texten) I denna lilla essä tänkte jag på mitt sätt försöka beskriva vad fri programvara är och varför den är bättre än sluten programvara. Detta är mina egna funderingar och skall inte tas för sanningar. Även om detta stämmer på flera projekt jag varit med i så behöver det inte vara så för dig. Läs texten och fundera över det som sägs. Av samma anledning saknar texten referenser och kallas av mig en essä. Så läs och begrunda. Kommentarer mottages tacksamt. Jag har under flera år ägnat mig åt att förespråka och sprida kunskaper om vad fri programvara egentligen är. Ständigt misslyckas jag, envis som jag är försöker jag igen. Ta dig gärna tid att läsa denna text. Jag är säker på att det finns liknande texter på Internet. Tipsa mig gärna om dem i så fall. De jag känner till finns i slutet på denna text. Fri programvara misstas ofta som ett billigt alternativ med lägre kvalitet än motsvarande slutna produkter. Jag höll på att skriva kommersiella produkter istället för slutna men slutna produkter är ett mer passande namn i detta sammanhang eftersom flera fria programvaror i allra högsta grad är kommersiella. Det finns alltså inget som hindrar en fri programvara från att vara kommersiell, det finns massor av exempel på det. Till exempel så är OpenOffice.org en kommersiell produkt för SUN Microsystem, MySQL är en kommersiell produkt för företaget med samma namn, listan kan göras lång. Att en programvara är fri har alltså inget att göra med om den är kommersiell eller inte. Hur kommer det sig att fri programvara kan hålla högre kvalitet än slutna produkter utvecklade av stora företag med enorma resurser? Jo, det finns flera saker som gör det möjligt. En sak man skall komma ihåg är att varken stora företag eller enorma resurser skriver programvara. Det är enskilda personer. Dessa personer kan vara anställda på ett företag eller jobba på sin fritid. Det de gör är att skriva programkod som bygger ett program enligt en viss design eller vision. Programmerare på stora företag har en hel del problem att brottas med som kan göra deras kod sämre än om samma programmerare skulle jobba på en fri produkt. Naturligtvis finns det både stjärnor och mediokra programmerare både på företagen och i rörelsen för fri programvara. Ett problem som programmerarna på ett företag har är att de ständigt jobbar under tidpress. Det kan vara en release som skall ut på en viss tidpunkt eller så är det ett delmål som skall uppfyllas för att de skall få sin bonus eller så är det något annat. Att skriva under tidspress gör att de flesta slarvar. Framför allt om den egna inkomsten beror på det. I fria projekt har det ingen betydelse om produkten kan släppas före eller efter jul eller före eller efter en konkurrent. Det spelar nämligen ingen roll. Det gör att en fri produkt släpps när utvecklarna tycker att den är klar och inte när det kommersiellt passar bäst. Av denna anledning är det ofta svårt att få reda på när en ny version av en fri produkt kommer ut men den kommer å andra sidan ut färdig. Många produkter från stora företag stressas så ofta fram att flera kunder väljer att vänta på några uppdateringar innan de köper nya produkter. Ett annat problem som programmerare på företag som utvecklar slutna produkter är motivationen. Ofta väljer de inte själva vilka produkter de skall jobba på och inte vilka delar av dem de skall skriva. Detta är inte bra för motivationen, och motivation är något som behövs för att skriva bra programkod. En annan sak som är bra för motivationen är att programmeraren vet att andra kommer att läsa den kod som hon skriver och ge beröm eller kritik för den, vilket inte sker i så stor utsträckning på större företag. Det är inte ovanligt att den enda som läser hennes kod är någon ur en grupp som granskar koden, och i bästa fall inte säger någonting till programmeraren. I fallet med fri programvara kommer koden att kunna läsas av praktiskt taget alla i hela världen. Det gör att programmeraren automatiskt är mer noggrann och mer sporrad att skriva bra kod. Kompisar, idoler, eventuella framtida arbetsgivare och andra kommer att läsa koden. Det ger bättre kod. Detta med att fler läser koden ger också på sikt en bättre produkt. I företaget som skriver sluten programvara finns det i bästa fall en grupp som granskar koden som skall in i produkten. Denna grupp har precis samma motivationsproblem som programmeraren. I fallet med fri programvara kan vem som helst välja att granska koden. Det kan göras av flera olika anledningar. Koden kan till exempel användas som exempel i utbildning, den kan studeras av privatpersoner eller läsas av någon för nöjes skull. En person som hittar fel i en fri programvara krediteras oftast i produkten och ses som en som positivt bidragit till produkten. I företagsfallet är det ett ganska otacksamt jobb att granska koden. Jag skrev tidigare att de flesta programmerare som jobbar på företag inte själva väljer vad de skall jobba på. På fria projekt är det å andra sidan just det de gör. Alla fria projekt har någon typ av ledare. På mindre projekt är det oftast upphovsmannen själv och i större projekt är det ofta en grupp, en organisation eller ett företag som utgör styrgruppen. Det är upp till vem som helst att bidra med kod till projekten och ledaren eller ledargruppen beslutar vad som kommer med och vad som inte gör det. På så sätt väljes alltid den bästa koden ut. De som bidrar ser ett mål i att få sin kod antagen. En som flitigt bidrar med bra kod brukar i de flesta fall få en del av ansvaret för utvecklingen. Sedan spelar det ingen roll ifall koden kommer från en professor med 40 års erfarenhet eller från en mycket begåvad 18-åring. Var och en bedöms efter sina kunskaper och kvaliteten på den kod de producerar. Detta i sig ger i slutänden bättre kod. Jag tror att jag nu kort förklarat varför fri programvara kan hålla högre kvalitet än sluten dito. Men hur är det då att använda fri programvara, det finns ju inget företag som tar hand om dig som kund? Det är en annan stor fördom mot fri programvara, att det inte skulle finnas något företag som tar ansvar för produkterna. Det finns massor av företag som kan ta hand om dig när du använder fri programvara. Till skillnad från sluten programvara kan du dessutom välja fritt vilket företag du vill anlita. De företag som vill kan fritt konkurrera vilket ger högre kvalitet och bättre priser på supporten. Allt detta är möjligt eftersom koden är fri, du har själv källkoden till de produkter du använder. Skulle företaget du valt att anlita inte leva upp till dina förväntningar kan du byta till ett annat. Om du använder slutna programvaror är inte detta möjligt eftersom bara vissa företag har den insyn i produkterna som krävs för att kunna supporta dem fullt ut. Med fria produkter kan man välja att klara sig på egen hand utan att köpa någon support alls. Om man gör det har man ändå tillgång till en suverän support via Internet. Denna support brukar många ganska snabbt förkasta, vilket jag tror beror på att de blandar ihop den med den support leverantörer av slutna produkter ger via Internet. När det gäller support via Internet har leverantörer av slutna produkter ett stort problem. De kan nämligen inte hjälpa sina kunder hur mycket som helst eftersom det ger dem dålig PR och läcker känslig information om deras svagheter till deras konkurrenter. Till exempel kan det vara svårt att på en sluten leverantörs hemsida hitta så grundläggande saker som FAQ och aktuella bugglistor, det skulle helt enkelt såra dem för mycket. Allt du ser på en sluten leverantörs hemsida är information som är noga utvald där värdet av det de ger till kunden noga satts i förhållande till vad de avslöjar om produkten till konkurrenter och framtida kunder. Fria programvaror har inte det här problemet. De har inga som helst hemligheter för dig som kund. Du får veta allt. Till exempel så finns det i princip alltid en lista med vilka buggar som är kända i produkten och en lista med ofta ställda frågor och svar (FAQ) om produkten. Dessa är otroligt värdefulla om du stöter på problem och även för att orientera dig om vilka problem som finns med produkten innan du driftsätter den. Skulle inte detta hjälpa så finns det oftast e-postlistor eller webbforum där du kan ställa dina frågor. Frågorna besvaras av andra användare av produkterna och, inte sällan, av utvecklarna själva som står bakom produkten. Detta går inte att jämföra med telefonkön på ett slutet företags supportavdelning. Glöm inte att du, om du vill, kan köpa support på samma sätt som för slutna produkter men att du med fria produkter kan välja leverantör av denna support. Att köpa support och andra saker leder mig in på det som den sista delen i denna lilla essä skall handla om, nämligen ekonomi. Hur står sig ekonomin i fria produkter? Proprietära leverantörer påvisar ofta att deras lösningar, trots den uppenbara prisskillnaden, är billigare, kan de ha rätt? Jag tror inte att de har helt fel i alla fall. Men jag tror inte att de tänker tillräckligt brett och tillräckligt långsiktigt för att se skillnaderna. Att driftsätta ett system är aldrig gratis, oavsett om man väljer fri eller sluten programvara. Det tar alltid tid att installera och konfigurera programvaran och gör du det inte själv på din fritid så är det förenat med en viss kostnad. Har du inte personal med kunskaper om det fria systemet så måste du ta in konsulter eller skicka din personal på utbildning, sådant kostar också. Vill du köpa support till ditt system så kostar det med. Observera att dessa kostnader gäller både fria och slutna system, med den skillnaden att de är frivilliga i fallet med fria programvaror. Vi börjar från början, innan du köper ett system. I det slutna fallet läser du om produkten på en webbplats eller blir besökt av en säljare som berättar om produkten. Allt du hör är hur bra produkten är (skulle jag tro). I fallet med fri programvara kan du utöver detta även läsa en komplett lista med kända buggar och se vad andra kunder har haft för problem. Du bestämmer dig för att prova systemet lite mer. I det slutna fallet kan du nu eventuellt ladda ner en demoversion av systemet eller köpa en testlicens. Redan nu börjar det kosta pengar. I visa fall kostar testlicensen ungefär som en ny liten firmabil. I fallet med fri programvara kan du ladda ner hela produkten och testa den hur du vill i din testmiljö. Inga kostnader, inga begränsningar. Den här delen av ekonomin ser man sällan i reklamen för slutna programvaror. Du bestämmer dig för att gå vidare. I fallet med den slutna produkten får du nu betala en licensavgift för att få nyttja produkten, i det fria fallet gör du ingenting mer än att sätta ditt testsystem i drift. Den del som kommer nu finns det massor med beräkningar på som visar att både det ena och det andra är billigare. Jag tror på dessa beräkningar allihop, de visar bara att det finns olika vägar att gå och olika sätt att räkna. Jag låter det vara och ger mig inte in i den diskussionen. Saker som dock glöms bort är olika hjälpsystem som kommer till. Det är till exempel omöjligt att köra ett system med till exempel Microsoft Windows i botten utan att ha ett antivirusprogram till det. Den kostnaden tas ofta inte med i beräkningarna. Det uppstår också ibland problem som indirekt eller direkt påverkar ekonomin, till exempel att virus drabbar företaget, trots virusskydd. Dessa kostnader tas ofta inte heller med i beräkningarna. I slutet på en produkts livscykel finns det också ekonomiska aspekter som ofta förbises. Vad gör du när din produkt blir gammal? I fallet med den slutna produkten har du tur om de utvecklat produkten vidare och du kan köpa en uppgradering. Det är förknippat med en kostnad. Har du otur så utvecklar de inte produkten alls längre och din investering är värdelös. I fallet med fria programvaror kan du välja helt själv vad du vill göra med produkten. Du kan välja att själv underhålla koden eller anlita någon att göra det åt dig om nu inte produkten utvecklas vidare, gör den det kan du uppgradera utan kostnad för själva uppgraderingen. Du kan också välja att ligga kvar på den version du är och själv ta ansvar för underhållet eftersom du har koden. Det värsta som kan hända med din investering är att företaget eller organisationen som utvecklat programvaran slutar att göra det. Eller ännu värre går i konkurs eller mister sin huvudutvecklare i en flygkrasch. Nu har du problem. I det fria alternativet kan du kontinuerligt följa utvecklingen av produkten på Internet. Du har tillgång till källkoden och kan själv välja att gå vidare med produkten. I det fallet med den slutna produkten har du i bästa fall anlitat en firma för koddeponering så att du kan få ut koden till din investering om något exceptionellt händer. Problemet med detta är att det inte är säkert att någon förstår sig på denna kod. Det är heller inte säkert att den kod som finns deponerad är exakt den programvara och version som du använder och så vidare. Det finns massor med problem i detta förfarande. Det finns säkert massor med saker att tillägga i detta ämne. Hör gärna av dig till mig ifall du läst detta och berätta. ----------------------------------------------------------------------- Copyright (c) 2004 Marcus Rejås Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is located at http://rejas.se/gnu/. [Översättning:] Copyright (c) 2004 Marcus Rejås Var och en äger rätt att kopiera, sprida och/eller förändra detta dokument under villkoren i licensen "GNU Free Documentation License", version 1.2 eller senare publicerad av Free Software Foundation, utan oföränderliga avsnitt, utan framsidestexter och utan baksidestexter. En kopia av denna licens finns på http://rejas.se/gnu/.