Insidan av ett Open Source projekt. Nicklas Avén
Innehåll * Vem är jag * Hur jag började involvera mig i PostGIS * Hur koordineras utvecklingen i PostGIS
Vem är jag? * Nicklas Avén * Bor i Norge * Jobbar på skogsföretag * Har småbruk * Dras mellan teori och praktik
Varför Open Source?
PostGIS, hur jag började involvera mig? * Avenue skript I Arcview 3.x på 90 talet, början av 2000 talet * Snabbt och gav en känsla av kontroll, men Mellan vilka punkter hittade funktionen distance den kortaste distansen? Någonstans måste ju den informationen finnas, men var? Inlåst, I någon dll fil : (
PostGIS, hur vi träffades? 2008 höll jag på med en enkel webapplikation och behövde en mer kompetent databas än MS Access Ville inte be IT avdelningen om en SQL Server licens då det är ganska dyrt. Tittade på MySQL, men fann PostgreSQL och därmed PostGIS. Jag föll direkt. Hantera spatiala funktioner I SQL är fantastiskt!!!
Mitt gamla problem I en ny tid Mellan vilka punkter har distansfunktionen hittat den kortaste distansen? Vilka punkter är p1 och p2? p1 P2 Muren har fallit, koden är fri
* Nu var det ju bara att titta I källkoden hur det hela fungerar * Till min lycka såg det inte så omöjligt ut att få till det * Resultatet blev funktionen ST_ShortestLine i PostGIS 1.5
Verktyg som håller samman utvecklingen av PostGIS * Policys * PSC * SVN * websidorna och trac systemet * e postlistor * wiki * regression och unit tester
Policys De gemensamma spelregler som är uppsatta Tex.
PostGIS, releasepolicy Microrelease tex 1.5.2, 1.5.3 osv är bara för att fixa buggar. 1.5.3 innehåller ingen ny funktionalitet som inte fanns i 1.5.2 Med det så skall det vara mycket liten risk att någon ny bug introduceras. Vid uppgradering räcker det att byta ut binärfilen (dll filen eller so filen beroende på operativsystem) Semi Major release, tex, 1.4, 1.5 innehåller nya funktioner. 1.5 serien innehåller tex en hel del nya funktioner jämfört med 1.4 serien. Vid uppgradering måste man förutom att byta ut binärfilen också köra ett Uppdateringsskript som uppdaterar och installerar de nya funktionerna I databasen Major release version 1 och nu snart version 2 introducerar en ny lagring och hantering av data jämfört med tidigare versioner. Det innebär att man måste göra en backup I den gamla versionen av sina data och göra en restore av data i den nya versionen efter uppgradering
Andra policys * Hur skall koden skrivas * Vilka har behörighet att skriva direkt i källkoden * Hur skall det dokumenteras * Osv, osv
PSC Project Steering Group består idag av: Paul Ramsey, OpenGeo Mark Cave Ayland, Sirius Regina Obe, Paragon Corporation Kevin Neufeld, Refractions Det är PSC som fattar de generella besluten. Om det är någon fråga där det inte blir enighet på e postlistorna så har PSC en enkel öppen omöstning.
SVN, subversion SVN håller reda på alla ändringar som görs. Varje ändring av källkoden får ett nummer och kan enkelt backas om det visar sig att det var fel. Källkoden är uppdelad I 3 grupper. 1) trunk, det är det som skall bli nästa Major eller semi major release. Nu ligger version 2.0 där 2) Branches, det är alla tidigare releaser med bugfixar, dvs det som skall bli microreleaser 3) Tags, där ligger frysta versioner av det som har släppts tidigare. Svn finns på addressen: http://svn.osgeo.org/postgis
websidorna och trac systemet PostGIS har 2 portaler på nätet: Http://www.postgis.org, här finns: * Nedladdning av PostGIS * Den officiella dokumentationen * Supportinformation * mm Http://trac.osgeo.org Här finns: * wiki * bug track systemet * Tidsaxel, vad som är ändrat * roadmap, när planerade releaser är * mm På trac.osgeo.org får man tillgång att skriva I wikin och posta bug tickets genom att registrera sig för ett OSGeo login
OSGeo PostGIS är I inkubationsfasen för att bli med I OSGeo De flesta projekt I OSGeo har ungefär samma struktur på sina sidor Du finner deras svn foldrar enlight samma system som PostGIS tex GEOS: Http://svn.osgeo.org/geos
OSGeo Andra projekt I OSGeo: From trac.osgeo.org: CS-Map FDO Fusion GDAL GeoNetwork GeoPrisma Geoinformatica GEOS GeoTIFF Generic Geometry Library GRASS Mapbender MapGuide MapServer MetaCRS OSGeo General OSGeo4W OSSIM PostGIS PROJ.4 Proj4js Proj4J Quantum GIS Ubuntu GIS Enterprise Linux GIS
trac En annan viktig del är trac systemet Där kan vem som helst lägga in en bug ticket Här är det jag själv som har lagt in en om ett fel I min egen kod. Det är ett bra sätt att dokumentera allt som görs.
E postlistor I PostGIS finns det 3 e postlistor postgis users, är för användarfrågor, hur man skall skriva frågor I sql mm. postgis devel, är för diskussioner kring utvecklingen av PostGIS. Här diskuteras insidan av PostGIS inte problem med att få till rätt sql kod Postgis commit, är en lista med alla commits, dvs alla ändringar I källkodsträdet. Jag tycker det a bättre att gå in på tidsaxeln och följa med på vad som har gjorts istället.
Wiki På wikin finns både användarinformation och utvecklarinformation Mer inofficiell information än I dokumentationen. Alla kan skaffa sig ett OsGEO login och skriva på wikin
Regression och unit tester Regressionstester används för att se om det uppkommer fel och problem med koden allteftersom den utvecklas. Dessa tester kan man köra I samband med att man kompilerar Koden och de görs genom att sql kommandon skickas till databasen och svaren jämförs med de förväntade svaren. Unit tests, eller enhetstest, testar istället mindre delar av koden. Med enhetstest kan man testa om en intern funktion uppför sig som förväntat. Torture test, Regin Obe har konstruerat ett test som testar PostGIS från alla möjliga och omöjliga aspekter genom att köra alla funktioner på alla exempel I dokumentationen. Det har räddat PostGIS från många buggar vid release.
Varför Open Source är fantastiskt Ett gammalt exempel som jag tycker visar att allt det här vi har sett, fungerar. Ett Open Source projekt kan genom sin öppenhet och transparens ofta ge otroligt snabba och koordinerade rörelser på någonting som kan verka mer eller mindre kaosartat vid ett första ögonkast.
Ett exempel 13 aug 2009, skriver en användare av PostGIS, Jose Carlos en e post till postgis users list, med en iaktagelse att en speciell fråga han kör mot databasen verkar orimligt långsam. Paul Ramsey, Kevin Neufeld mfl tar upp tråden och börjar nysta. Det hela flyttas över till postgis devel listan då det börjar handla alltför mycket om detoasting och liknande för att intressera den vanliga användaren. Den 14 aug 2009 kommer Tom Lane in I bilden. Han är en riktig guru inom PostgreSQL. Den 14 aug 2009 har Tom skrivit en patch som löser problemet. Den 9 sep 2009 släppte PostgreSQL version 8.4.1 och problemet var löst för PostGIS.
Ett exempel Att ett problem löses så snabbt mellan två prosjekt kräver en stor öppenhet och vilja att jobba åt samma håll. Ingen inblandad har någonting att dölja utan kan lägga all kort på bordet. För den som är intresserad kan diskussionerna som ledde till lösningen följas på: http://postgis.refractions.net/pipermail/postgis users/2009 August/ Och http://postgis.refractions.net/pipermail/postgis devel/2009 August/ Under rubrikerna: Strange result about spatial indexes
Till slut Ett Open Source program behöver man inte välja bort bara för att det saknar en viss funktion eller att det har en bug som är ytterligt irriterande. Det är bra att fixa det! Eller hyra in någon annan att fixa det. Jag skulle önska att någon sa till QGIS utvecklarna tex: Jag betalar motsvarande en halv ArcInfo licens till prosjektet. Här är en lista på buggar jag vill ha lösta. Det skall vara klart om ett halvår. Man får mycket utveckling för en halv ArcInfo licens. Eller varför inte kasta ut ArcGIS servern och lägga årsavgifterna på Open Source utveckling istället. Då skulle man nog kunna bygga ett riktigt alternativ till ArcPad också. Som kommer alla till glädje. : )
Tack för mig! Nicklas Avén E-post: Blog: http://blog.jordogskog.no Http://www.postgisonline.org