Hur utvecklar man öppen källkod?



Relevanta dokument
Open Source - Utmaningar och fördelar

Open Source-licenser

Open Source-licenser

Svenska Linuxföreningen. Fri programvara Mycket mer än gratis 1(36) Copyright 2005, 2006 Marcus Rejås

Open Source - Eller som vi säger, Fri programvara

Open Source - Eller som vi säger, Fri programvara

open Opensource Oberoende av leverantör Samverkan Dela utvecklingsresultat Kontroll över utveckling Inga licenskostnader Uppfinn inte hjulet igen

Policy för öppen källkod

Calligra. En allmän inledning. Raphael Langerhorst Jost Schenck Översättare: Stefan Asserhäll

Licenser - Jo, tack, men så få som möjligt

Programvarudesign för samarbete. Mötesplats Open Access Urban Andersson, Göteborgs UB Peter Hansson, Chalmers bibliotek

Svenska Linuxföreningen. Fri programvara Mycket mer än bara gratis 1(29)

Denna presentation är inte klar, kommentarer mottages tacksamt! CyberRymden

Varningssystem byggt på öppna källkodskomponenter Magnus Runesson SMHI

Handbok KAppTemplate. Anne-Marie Mahfouf Översättare: Stefan Asserhäll

Installationsmanual OpenOffice 3.0

Introduktion till git

Öppen/Fri programvara

Fria upphovsrättslicenser underlättar kunskapsdelning och lärande

Policy för öppen källkod RIV Tekniska Anvisningar

RIV Tekniska anvisningar Öppen källkod

Motion om fri mjukvara

Affärsmodeller kring fri programvara - Exempel och diskussionsunderlag

Svenska Föreningen för Upphovsrätt 5 november Mikael Pawlo Något om öppen kod, öppen text och öppen musik

Svenska Linuxföreningen. Fri programvara Mer än bara gratis 1(17) Copyright 2006 Marcus Rejås

Föredrag på Resources 2005 KKH, Jan Ljungberg Informatik, Göteborgs Universitet. Magnus Bergquist, etnologi. How can...

Webbprogrammering, grundkurs 725G54

Juridiska frågor kring fri programvara och öppen källkod

Internetguide #42 Kom igång med CC och GNU-GPL! Frihet under eget ansvar

Öppen källkod ARK_0008

Javautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år

Linux på skrivbordet - Myt eller möjlighet

Handbok Kollision. Paolo Capriotti Översättare: Stefan Asserhäll

Open Source - Program och hur man väljer

Programvaror - Jo, tack, det vill vi ha...

Inledande programmering med C# (1DV402) Introduktion till C#

STADSLEDNINGSKONTORET SOA SDK IT-AVDELNINGEN VERSION 2.1. Läs mig först. Stockholms stad SOA-plattform. Sida 1 (5)

Continuous Integration med Jenkins. Linus Tolke Enea Experts

Avslutning. Kapitel Komprimering av filer

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

Nya affärsmodeller för Sambruk

Programmering. Hur, var, när och varför. 22 November. Lars Ohlén Tieto

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

Handbok Kanagram. Danny Allen Översättare: Stefan Asserhäll

Förslag på svar Tentamen etjänster och webb- programmering

Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,16 december (29)

JBoss Application Server ANNIE AXELSSON

Språkteknologi och Open Source

Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

Open Source-utveckling för kommuner. Allemanskod den nya svenska modellen?

Verktyg för agil systemutveckling. Vad är ett verktyg? Olika typer av verktyg för mjukvaruutveckling. Vad kan ett bra verktyg tillföra?

Projektbeskrivning OpenDataUmea

Tomas Axelsson

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Handbok KMix Gaurav Chaturvedi Utvecklare: Christian Esken Utvecklare: Helio Chissini de Castro Utvecklare: Brian Hanson Översättare: Stefan Asserhäll

Innehållsförteckning Sida 3 Om IT-Högskolan Sida 4-5.NET-utvecklare Sida 6-7 Applikationsutvecklare till iphone och Android Sida 8-9 Mjukvarutestare

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

Skolverkets föreskrifter om ämnesplan för ämnet mjukvarudesign inom vidareutbildning i form av ett fjärde tekniskt år;

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

KONSULTPROFIL Michael

Common Criteria Certification of Open Source Software

Handbok Hoppande kuben. Ian Wadham Eugene Trounev Matthias Kiefer Översättare: Stefan Asserhäll

SKOLFS. beslutade den XXX 2017.

Handbok Förstoringsglaset. Sarang Lakare Olaf Schmidt Översättare: Stefan Asserhäll

Öppen programvara. För ökad konkurrens, bättre interoperabilitet och lägre kostnader!

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3

SGM - Sambruksgemensamt material

Linux på skrivbordet - Myt eller möjlighet

Handbok Shisen-Sho. Dirk Doerflinger Eugene Trounev Frederik Schwarzer Granskare: Frerich Raabe

Insidan av ett Open Source projekt. Nicklas Avén

Projekt intranät Office 365 av Per Ekstedt

Har funnits nästan lika länge som datorerna. Manuell process, svarta tavlan Verktygsstöd kom tidigt redan i början på

KOMMISSIONENS GENOMFÖRANDEBESLUT (EU)

Om öppenhet - format, standard och program. Mats Östling IT-strateg Sveriges Kommuner och Landsting Kommits

SLUTRAPPORT RUNE TENNESMED WEBBSHOP

Styrning och organisering av öppen källkods-projekt: Modeller och vägval för ivis

ALM Live: Testfokus bättre mjukvarukvalitét med Visual Studio 2008 Team System

Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,19 september (26)

Tove Carlsund Systemutvecklare

Upphovsrätt och fri kultur

Handbok Simond. Peter H. Grasch

Handbok Kstuds. Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll

BESKRIVNING AV PROCESSMETODEN SCRUM

Handbok Choqok. Mehrdad Momeny Anne-Marie Mahfouf Andrea Scarpino Översättare: Stefan Asserhäll

Handbok KGet. Gaurav Chaturvedi Översättare: Stefan Asserhäll

Instruktioner för uppdatering från Ethiris 5.x till 6.0

Versionshantering. Jan Erik Moström

CMS. - Content management system

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson

Skicka drivrutin. Administratörshandbok

Handbok Katom. Dirk Doerflinger Eugene Trounev Granskare: Mike McBride Översättare: Stefan Asserhäll

Widgetguiden Vad är Publits widgetshop?

Riktlinjer vid utveckling av IT-stöd

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

Alla rättigheter till materialet reserverade Easec

Svenska Linuxföreningen. Presentationens namn 1(24) Copyright 2004 Marcus Rejås

Sammanträdesdatum Utredning om möjligheterna att införa Open Sourceprogram i kommunens datorer

Vad är en databas? Databasutveckling Med MySQL/MariaDB

Handledning för installation och komma igång med Joomla

Snabbguide Installation Linkmanager och ansluta till SiteManager

Transkript:

Hur utvecklar man öppen källkod? Göran Landgren, Informatik Dataföreningen tisdag 21 april 2009

Innehåll En förståelse av hur öppen källkod är viktigt även om man inte är intresserad av att syssla med utveckling Bredda utvecklingsperspektivet Frågeställningar Vad är öppen källkod? Varför intressera sig för öppen källkods-utveckling? Vad kännetecknar utveckling av öppen källkod? Hur arbetar man inom ett öppen källkods-community? Hur man hittar och bedömer öppen källkods-produkter att vidareutveckla? Vilka verktyg behöver man? Licensmodeller? 2

Vad är öppen källkod? Ett system/program vars programkod är fritt tillgänglig att nyttja och förändra Öppen behöver inte vara gratis (och gratis behöver inte vara öppet) beror på licensmodellerna Utvecklas (vanligtvis) inom en sammanslutning (community) av utvecklare En sammanslutning av människor med ett delat intresse, men med olika bakgrunder, motiv och ekonomiska förutsättningar har inget direkt kommersiellt intresse Transparent utvecklingprocess utomstående kan bedöma produktens och processens kvalitet 3

Varför intressera sig för öppen källkods-utveckling? Behov av att bedöma en Ö.K.-produkts kvalitet Förstå ett programs upphov, nuvarande och kommande utveckling Arbetsformernas betydelse för utvecklingen Programmets kvalitet (buggar, nya features) Hur lätt är det att komma igång med användning av produkten Personliga motiv för att bli Ö.K.-utvecklare Ett programbehov ny Ö.K.-produkt Förbättra en befintlig Ö.K.-produkt Politiska/ideologiska motiv (anti-kommersiellt, free information, open formats, etc.) Karriär- och kompetensutvecklande motiv Sociala motiv 4

Varför intressera sig för öppen källkods-utveckling? Utvecklar-organisationers motiv Bemästra en specifik Ö.K.-produkt sälja support-tjänster på denna produkt Förbättra egna program genom att införliva öppen källkod Ex: Apache Commons http://commons.apache.org/ Väcka liv i en egen, avsomnad, misslyckad produkt Ex: Netscape/Mozilla Övriga organisationers motiv Minska licenskostnader - byta ut en kommersiell produkt Behov av att utveckla en befintlig Ö.K.-program som redan används eller borde användas inom organisationen 5

Utvecklingens karaktär Drivs av ett programbehov (Stallman klåda ) Inte nödvändigtvis nyskapande (ex. Linux) Föregås av liten eller ingen analys (i huvudet på skaparen) Ingen genomtänkt designplan behövs Det blir lättare att attrahera utvecklare Användare kan också vara utvecklare Programmet måste fungera, men behöver ej vara färdigt exekverbart på många plattformar Att ladda ned och testa ett program är ofta det första steget mot att bli os-utvecklare Ärlighet i fråga om brister är en god sak tala om vad som är fel, sakas, etc. ofiltrerad kommunikation 6

Evolutionär programutveckling Fungerade kod kommer att kopieras Låt produkten växa fram produkten måste tillåta detta (arkitektur) Wicked problems Man försöker lösa fel problem vid första försöket Bygga vidare/förändra ett befintligt projekt Scaffolding (Raymond: Fetchmail) Forkning konflikt om produktens riktning eller grundläggande designprinciper kan vara positivt OpenOffice och NeoOffice Hur väljer man sida (vilken är återvändsgränden?) 7

Olika aspekter av utvecklingsarbetet och användning Programmering: nyutveckling och buggfix code-review Testning Lågnivåtest Högnivåtest: funktions- och acceptanstester (kvalificerad) buggrapportering Författa manualer och annan dokumentation Utveckla användarfall Utveckla produktens användningsområde Grafik och gränssnitt användbarhet, webbdesign (CSS, JavaScript, Flash, etc) Installation och konfigurering Utveckling av mallar och exempel 8

Öppen källkods-community Utveckling sker oftast inom ett community Är en sammanslutning av utvecklare och användare med ett delat intresse, kan ha olika bakgrund, motiv, ekonomiska förutsättningar och geografisk tillhörighet Har en egen kultur, normer, regler och konventioner Har experter (kärnan) och nybörjare Platt kommunikationsstruktur Communitets tillstånd återspeglar produktens kvalitet Deltagare: individer och organisationer Kompetens Utvecklas produkten?, i vilken riktning utvecklas den? 9

Hur leder man och arbetar inom ett community? Ledning: Utmaning att leda (ett stort antal) personer som är tids- och platsmässigt utspridda kan ha skilda motiv och kompetens tillhör kommersiella eller icke-kommersiella organisationer eller ingen org. alls Communitets kultur skapar förutsättningar och sätter begränsningar för hur det kan ledas Ledningsmodeller (K. Fogel) Den gode envåldshärskare Demokrati 10

Den gode envåldshärskaren Känner till programmets syfte och känner för programmet Kunna avgränsa systemet förstår problemdomän och programmets riktning Låter communitet sköta sig själv så mycket som möjligt Sätta ned foten när det behövs Säga JA och NEJ, med goda argument Har en förmåga att känna igen bra lösningar (genomförbara och underhållbara) lösningar Svårt att vara ond - missnöjda undersåtar kan alltid brytas sig ut (kopiera kungariket och flytta) kompromissvilja 11

Demokrati Ledningsgrupp av framstående utvecklare som väljs på något sätt Medlemmarna måste förtjäna sin plats (förmåga att tillföra) Väljs av andra medl. Omröstning vid viktiga förändringar och nyutveckling där communitet inte kan komma överens Har rätt att checka in kod (committa) Andra community-deltagare skickar patchar till gruppen Folkomröstning bland de övriga medlemmarna Styrelse i riktigt stora open source-projekt Sakai 12

Organisation och arbetsformer Modularisering som förutsättning för arbetsdelning Traditionella programutvecklingsmetoder och organisationsindelning funkar dåligt; istället: Agila metoder: Scrum, XP Leverera lite men ofta, omarbetning av koden, modultester Man kan olika projektroller Det är svårt kommendera någon, men man kan be eller ställa upp frivilliga utvecklare arbetar med det man är intresserad av undantag -> betalada utvecklare Lätt att öka på antalet medlemmar (falsifierar Brooks lag) p.g.a. kommunikationens karakatär 13

Programkvalitet Ger öppen källkod bättre program? E. Raymonds tre faktorer för os högre kvalitet Transparant utvecklingsprocess Leveranspolicy: anti-deadline policy Utvecklarna har själv valt att arbeta med produkten Utplattad och ofiltrerad kommunikation Code review: tillräckligt många utvecklare som tittar på koden ( Linus law, Raymond) Användare som själva är utvecklare kan rapportera buggar på ett kodnära sätt Automatiserad lågnivåtestning(ex. junit) Communities kan vara mycket uthålliga Standardisering och kvalitets-certifiering är oviktigt Följa öppna standards är däremot viktigt 15

Hur hittar man Ö.K-produkter? Börjar med ofta med användandet av programmet Hur hittar man produkten (och communitet)? http://freshmeat.net/ http://sourceforge.net/ http://slashdot.org/ http://directory.fsf.org/ (Free Software Directory) Hitta: källkod och ev. binära distributioner dokumentation och kommunikationsverktyg Förstå programmets källkod och arkitektur programspråk används ramverk? (ex: Spring, Hibenate) andra tekniker och språk (ex: Ajax, XML, CSS, etc) 16

Freshmeat

Sourceforge.net

Free Software Directory

Verktyg för utveckling av Ö.K Verktygen inte unika för open-sourcecommunities Kommunikations- och dokumenthanteringssystem Epost-listor Diskussionsforum Chat (IRC) Bloggverktyg Wiki Content management system (CMS) 20

Verktyg: Bugghantering Inrapportering av fel Beskrivning av felet Vad utlöste felet I vilken version uppstod felet Feature request / ändringsbegäran Att göra-lista Status och prioritering Öppen, löst, återöppnad,... Önskvärd, kritisk,... 21

Verkyg: Bugghantering och programkvalitet Även för yttervärlden Hur ser buggdatabasen ut Ingen inget görs Få buggar ingen jobbar, få använder produkten Många allvarliga buggar instabil Gamla allvarliga buggar hur bra fungerar communitet? Hälsosamt med en lagom lista med buggar Exempel på bugghanteringssystem Bugzilla, Jira, Trac... 25

Verktyg: Versionshantering Många som jobbar mot samma filer Hämta ut senaste versionen av en fil Jämföra olika versioner Sammanföra ändringar Leverera versionen vid en viss tidpunkt Täta releasecykler CVS, Subversion, Git,... 3.0rc 3.0 Branch 2.4 2.4.1 26

Licensmodeller Oerhört viktigt att förstå de olika licensmodellerna En juridisk utmaning! GPL (GNU General Public Licence) V1, V2 och V3 Copyleft: sprider sig till egen kod -> GPL Copyleft ger rätt att: använda och undersöka programmet kopiera och dela programmet med andra modifiera programmet distribuera modiferad och härledda program Kan vara nödvändigt att dela upp i delsystem med tydliga gränssnitt 27

Licensmodeller GNU Lesser General Public License kod kan länkas (ej derivat) in av proprietära program (utan att förändra licensformen) Apache License kräver INTE att modifierade varianter måste ha samma licens (men ursprunget skall anges) Common Development and Distribution License (SUN) Common Public License (IBM) Mozilla Public License Jämförelser mellan licenser http://en.wikipedia.org/wiki/comparison_of_free_s oftware_licences 28

Bedömning av programkvalitet Communitiets status antal och typ av deltagare aktiviteter möjligheter att få hjälp och påvera utvecklingen Arkitektur nyttjande av kända standards flexibilitet (hur lätt är det att integrera mot andra system?) Produktens mognad Antal och typer av buggar Produktens potential Enkelhet att initera användande hur mycket måste konfigureras, etc 29

Hur kan en traditionell organisation bidra till Ö.K.-utv.? Använda öppen källkods-produkter (t.ex. utvecklingsverktyg och serverprogramvara) större användarbas, fostra användare Bidra ekonomiskt donera pengar, utrustning, lokaler, prylar, etc. det är svårt att köpa inflytande bidra med utvecklare (bästa sättet att få inflytande) bidra med användarfall och högnivåtestning (ovärderligt) Utveckla produkten och låta ändringarna gå tillbaka till communitet De egna ändringar kommer att ingå i de officiella produkten (man slipper modifiera sin version vid varje ny uppdatering) 30