Kildekoden til Folkets Ting er lagt på GitHub og kan frit videredistribueres under GNU GPL v.3 licensen. Der har faktisk aldrig rigtigt været gode grunde til at gemme koden væk. I starten tror jeg at jeg var bekymret for at nogen skulle kopiere konceptet, senere har det været et spørgsmål om vi ikke har haft tid til at pudse koden af og frigive den.

Der er tale om et eksport at det Git-repositorie vi har brugt til udviklingen indtil nu. Historikken indgår således ikke, primært fordi den indeholder gamle passwords og koder til diverse eksterne tjenester, sekundært fordi commit-beskederne sommetider indeholder uhøviske referencer til kønsdele m.m..

Hvis du vil i gang med at arbejde med kildekoden til Folkets Ting skal du (hvis du ikke allerede har dem) installere Visual Studio 2010 og SQL Server 2008 R2 Express, begge gratis tilgængelige. Du får også brug for Git, msysgit virker udemærket på Windows. GitHub har en god installationsguide. Med det på plads kan du clone repositoriet til din egen maskine. Opret en database og kør scriptene i dbscripts folderen for at oprette de nødvendige tabeller og tilføje nødvendig data.

Du kan kigge på koden i Visual Studio ved at åbne TTF.sln filen (jeg kaldte oprindeligt Folkets Ting for “Ting til Folket”, deraf forkortelsen). Folkets Ting består af følgende projekter:

  • FT.Web: Det primære website kodet i ASP.NET MVC.
  • FT.DB: Primær database-interaktion via LinqtoSQL. Indeholder desuden diverse model-valideringskode.
  • FT.Model: Repositories der fisker data ud af databasen.
  • FT.Scraper: Koden der henter data fra Folketingets hjemmeside (“screen-scraperen”). Koden håndterer al kompleksiteten og retarderetheden ved ft.dk. Der bor drager i den. Jeg undskylder på forhånd.
  • FT.Search: Kode der wrapper søgning via Solr — ikke aktivt på sitet for tiden.
  • FT.ODataApi: Kode der driver Folkets Ting’s data API.
  • FT.Data: Entity Framework database-wrapper som API’et bruger.
  • Feedreader: Henter blog-posts til visning på forsiden.

Hvis du laver ændringer som du synes skal med på folketsting.dk, så push koden med dine ændringer til dit eget repo på GitHub og send et pull-request — så lover jeg at kigge på det. Jeg vedligeholder en privat release-branch med database-connection strings og andet godt. Hvis der kommer brugbare ændringer merger jeg dem ind og pusher til AppHarbor, hvor Folkets Ting nu er hostet.

Efter tre ugers nedetid er både folketsting.dk og data.folketsting.dk (API’et) oppe igen.  Indtil lige før Jul har Folkets Ting kørt på to rack-servere jeg fandt i en skraldespand på Ekstra Bladet (du kan se et billede af dem spændt på min baggagebærer). De var placeret i et serverrum som IT-Universitetet stiller gratis stiller til rådighed for studerende. Før Jul bad ITU mig om at flytte serverne — et meget rimeligt forlangende taget i betragtning at jeg fik min kandidatgrad i sensommeren.

Jeg er i mellemtiden kommet med på AppHarbor-holdet. AppHarbor’s mission er at gøre drift og opdatering af .NET websites smertefrit og det er oplagt at Folkets Ting skal køre på platformen. AppHarbor involverede imidlertid også at flytte til Silicon Valley. Det, sammen med at vi skulle lancere AppHarbor, gjorde at jeg først har fået sat Folkets Ting op nu. Jeg beklager meget den lange nedetid.

Det gode er at AppHarbor gør det let og ligetil at opdatere Folkets Ting, så med lidt held kan der komme flere features snart. Det er i øvrigt de gode folk i IT&Telestyrelsen der via “Offentlige Data i Spil” sponsorerer flyttet til AppHarbor. Tak for det!

Så har Folkets Ting fået et API! Yay. API’et er noget jeg har lovet siden Offentlige Data i Spil Konferencen i februar 2010, og jeg er glad for endelig at have Folkets Ting-delen færdigt.

Teknisk er der tale om en service der leverer data efter OData protokollen. Det er noget Microsoft står for, men der findes client-libraries til de fleste programmeringssprog. Der er endda et Excel-plugin der kan trække data fra en OData service. Services kan levere både XML og JSON, så det er muligt at lave rene browser-mashups. API’et kan sende metadata om det data der eksponeres (se f.eks. XML der kommer ud her: http://folketsting.dk/data/Service.svc/$metadata), så det er i et vist omfang selv-dokumenterende. Hvis der er noget du er i tvivl om, er du meget velkommen til at skrive til friism+ftapi@gmail.com.

Opdatering: Jeg har skrevet en  blog-post med flere eksempler på brug af API’et.

Jeg har lavet en Google Maps mashup der giver dig mulighed for at udforske de ti mest rejsende Folketingspolitikeres rejser. De to relevante API-kald ser sådan her ud:

http://folketsting.dk/data/Service.svc/Politician/?$expand=CommitteeTripParticipant&$select=Firstname,Lastname,PoliticianId,CommitteeTripParticipant/CommitteeTripId&$format=json&$callback=render&callback=render&apikey=[APIKEY]

http://folketsting.dk/data/Service.svc/CommitteeTrip/?$expand=CommitteeTripParticipant,CommitteeTripDestination&$select=Purpose,ActualExpenses,Budget,NonPolParticipants,CommitteeTripId,Place,CommitteeTripParticipant/CommitteeTripParticipantId,CommitteeTripDestination/Lat,CommitteeTripDestination/Lng,CommitteeTripDestination/PlaceNameName&$format=json&$callback=callback1&callback=callback1&apikey=[APIKEY]

Det første kald henter alle politikere samt information om hvilke rejser de har været med på. Det andet kald henter alle udvalgsrejser inkl. udgifter og destinationer. Informationerne bliver kombineret og lagt på kort. Du kan se resultatet her og bede din browser vise dig kildekode.

Læg mærke til at kald til API’et kræver en API-key. Keys kan genereres frit og gratis på Folkets Ting, og der er ingen begrænsninger i brug af API’et. Nøglen giver dog Folkets Ting mulighed for midlertidigt at lukke for adgang for brugere der laver mere API-trafik end vi kan håndtere.

Det data som API’et publicerer kommer (hovedsageligt) fra Folketingets hjemmeside på ft.dk. Det fremgår af deres side om copyright at de fleste af teksterne ikke er genstand for ophavsret. Dog er vi i tvivl om status af f.eks. tale-referater. Folkets Ting kan ikke rigtig hjælpe med jura, du bliver nød til selv at kontakte Folketinget for at høre om den brug af data du påtænker er OK. I parentes bemærket, har vi aldrig spurgt om lov til at lave Folkets Ting websitet, og Folketinget har aldrig brokket sig.

Hvis du bruger data fra Folkets Ting er du meget velkommen til at nævne os eller give os et link, men det er ikke et krav.

Som bekendt vandt Folkets Ting kr. 100.000 til brug for udviklingen af API’er. Vi har ikke brugt nogen af pengene endnu, men vi forventer snarest at bruge nogen af dem på at udskrive en lille konkurrence om hvem der bedst kan genbruge de nye data på snedige måder.

Til #ODIS konferencen lovede jeg også adgang til kommunal og regional data svarende til hvad Folkets Ting disponerer over. Det projekt er jeg slet ikke gået i gang med endnu, så I må, indtil videre, stille jeg tilfredse med hvad der kommer ud af Folketinget.

Jeg glæder mig utrolig meget til at se hvad I kan få ud af API’et!

Hvis du kigger på folketsting.dk lige nu, så kigger du på den nye version af sitet. “Men det ligner det gamle bras!” hører jeg dig sige — og jeg giver dig ret: De fleste ændringer er at finde bag kulisserne.

Den største opgave har været at omskrive den robot (“scraper”), der hver nat henter data fra Folketingets nye hjemmeside. Nogle ting er ikke ændret synderligt på den nye sider, men meget indhold vises helt anderledes og robotten skulle stort set skrives forfra. Den nye robot henter allerede lidt mere lov-data end den gamle og jeg regner med at udvide den yderligere. §20 spørgsmål er dog en anden sag, mere om det senere.

En anden betydelig ændring i den nye version er at Rune Sørensen har erstattet SQL Server Full Text Indexing med Lucene/Solr som Folkets Tings søgemotor. Solr giver mulighed for sofistikerede faceterede søgninger og andre labre ting. Der forestår stadig lidt arbejde med interfacet, men jeg synes allerede vi er meget bedre end Folketinget:  Søgninger med flere ord tager ofte over 40 sekunder på Folketingets hjemmeside — på Folkets Ting svarer vi med det samme. Nu er det selvfølgelig ikke særlig svært at gøre noget bedre end Folketinget og vi regner da heller ikke med at hvile på laurbærene. Jeg prøver at lokke Rune til at skrive en blogpost om planerne for endnu bedre søgning snarest.

Skriv en kommentar eller brug Feedback-tab’en hvis du finder fejl eller har forslag til Folkets Ting.