]> pere.pagekite.me Git - homepage.git/blob - blog/data/2019-03-11-noark-tg-vedlikehold.txt
Fiks skrivefeil.
[homepage.git] / blog / data / 2019-03-11-noark-tg-vedlikehold.txt
1 Title: Åpen og gjennomsiktig vedlikehold av spesifikasjonen for Noark 5 Tjenestegrensesnitt
2 Date: 2019-03-11 16:00
3 Tags: norsk, digistan, standard, noark5
4
5 <p>Et virksomhetsarkiv for meg, er et arbeidsverktøy der en enkelt kan
6 finne informasjonen en trenger når en trenger det, og der
7 virksomhetens samlede kunnskap er tilgjengelig. Det må være greit å
8 finne frem i, litt som en bibliotek. Men der et bibliotek gjerne tar
9 vare på offentliggjort informasjon som er tilgjengelig flere steder,
10 tar et arkiv vare på virksomhetsintern og til tider personlig
11 informasjon som ofte kun er tilgjengelig fra et sted.</p>
12
13 <p>Jeg mistenker den eneste måten å sikre at arkivet inneholder den
14 samlede kunnskapen i en virksomhet, er å bruke det som virksomhetens
15 kunnskapslager. Det innebærer å automatisk kopiere (brev, epost,
16 SMS-er etc) inn i arkivet når de sendes og mottas, og der filtrere
17 vekk det en ikke vil ta vare på, og legge på metadata om det som er
18 samlet inn for enkel gjenfinning. En slik bruk av arkivet innebærer at
19 arkivet er en del av daglig virke, ikke at det er siste hvilested for
20 informasjon ingen lenger har daglig bruk for. For å kunne være en del
21 av det daglige virket må arkivet enkelt kunne integreres med andre
22 systemer. I disse dager betyr det å tilby arkivet som en
23 nett-tjeneste til hele virksomheten, tilgjengelig for både mennesker
24 og datamaskiner. Det betyr i tur å både tilby nettsider og et
25 maskinlesbart grensesnitt.</p>
26
27 <p>For noen år siden erkjente visjonære arkivarer fordelene med et
28 standardisert maskinlesbart grensesnitt til organisasjonens arkiv. De
29 gikk igang med å lage noe de kalte
30 <a href="https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">Noark
31 5 Tjenestegrensesnitt</a>. Gjort riktig, så åpner slike maskinlesbare
32 grensesnitt for samvirke på tvers av uavhengige programvaresystemer.
33 Gjort feil, vil det blokkere for samvirke og bidra til
34 leverandørinnlåsing. For å gjøre det riktig så må grensesnittet være
35 klart og entydig beskrevet i en spesifikasjon som gjør at
36 spesifikasjonen tolkes på samme måte uavhengig av hvem som leser den,
37 og uavhengig av hvem som tar den i bruk.</p>
38
39 <p>For å oppnå klare og entydige beskrivelser i en spesifikasjon, som
40 trengs for å kunne få en fri og åpen standard (se
41 <a href="http://people.skolelinux.org/pere/blog/Fri_og__pen_standard__slik_Digistan_ser_det.html">Digistan-definisjon</a>),
42 så trengs det en åpen og gjennomsiktig inngangsport med lav terskel,
43 der de som forsøker å ta den i bruk enkelt kan få inn korreksjoner,
44 etterlyse klargjøringer og rapportere uklarheter i spesifikasjonen.
45 En trenger også automatiserte datasystemer som måler og sjekker at et
46 gitt grensesnitt fungerer i tråd med spesifikasjonen.</p>
47
48 <p>For Noark 5 Tjenestegrensesnittet er det nå etablert en slik åpen
49 og gjennomsiktig inngangsport på prosjekttjenesten github. Denne
50 inngangsporten består først og fremst av en åpen portal som lar enhver
51 se hva som er gjort av endringer i spesifikasjonsteksten over tid, men
52 det hører også med et åpent &quot;diskusjonsforum&quot; der en kan
53 komme med endringsforslag og forespørsler om klargjøringer. Alle
54 registrerte brukere på github kan bidra med innspill til disse
55 henvendelsene.</p>
56
57 <p>I samarbeide med Arkivverket har jeg fått opprettet et git-depot
58 med spesifikasjonsteksten for tjenestegrensesnittet, der det er lagt
59 inn historikk for endringer i teksten de siste årene, samt lagt inn
60 endringsforslag og forespørsler om klargjøring av teksten. Bakgrunnen
61 for at jeg bidro med dette er at jeg er involvert i
62 <a href="https://gitlab.com/OsloMet-ABI/nikita-noark5-core">Nikita-prosjektet</a>,
63 som lager en fri programvare-utgave av Noark 5 Tjenestegrensesnitt.
64 Det er først når en forsøker å lage noe i tråd med en spesifikasjon at
65 en oppdager hvor mange detaljer som må beskrives i spesifikasjonen for
66 å sikre samhandling.</p>
67
68 <p>Spesifikasjonen vedlikeholdes i et rent tekstformat, for å ha et
69 format egnet for versjonskontroll via versjontrollsystemet git. Dette
70 gjør det både enkelt å se konkret hvilke endringer som er gjort når,
71 samt gjør det praktisk mulig for enhver med github-konto å sende inn
72 endringsforslag med formuleringer til spesifikasjonsteksten. Dette
73 tekstformatet vises frem som nettsider på github, slik at en ikke
74 trenger spesielle verktøy for å se på siste utgave av
75 spesifikasjonen.</p>
76
77 <p>Fra dette rene tekstformatet kan det så avledes ulike formater, som
78 HTML for websider, PDF for utskrift på papir og ePub for lesing med
79 ebokleser. Avlednings-systemet (byggesystemet) bruker i dag
80 verktøyene pandoc, latex, docbook-xsl og GNU make til
81 transformasjonen. Tekstformatet som brukes dag er
82 <a href="https://www.markdownguide.org/">Markdown</a>, men det vurderes
83 å
84 <a href="https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/9">endre
85 til formatet RST</a> i fremtiden for bedre styring av utseende på
86 PDF-utgaven.</p>
87
88 <p>Versjonskontrollsystemet git ble valgt da det er både fleksibelt,
89 avansert og enkelt å ta i bruk. Github ble valgt (foran f.eks. Gitlab
90 som vi bruker i Nikita), da Arkivverket allerede hadde tatt i bruk
91 Github i andre sammenhenger.</p>
92
93 <p>Enkle endringer i teksten kan gjøres av priviligerte brukere
94 direkte i nettsidene til Github, ved å finne aktuell fil som skal
95 endres (f.eks. kapitler/03-konformitet.md), klikke på den lille
96 bokstaven i høyre hjørne over teksten. Det kommer opp en nettside der
97 en kan endre teksten slik en ønsker. Når en er fornøyd med endringen
98 så må endringen &quot;sjekkes inn&quot; i historikken. Det gjøres ved
99 å gi en kort beskrivelse av endringen (beskriv helst hvorfor endringen
100 trengs, ikke hva som er endret), under overskriften &quot;Commit
101 changes&quot;. En kan og bør legge inn en lengre forklaring i det
102 større skrivefeltet, før en velger om endringen skal sendes direkte
103 til 'master'-grenen (dvs. autorativ utgave av spesifikasjonen) eller
104 om en skal lage en ny gren for denne endringen og opprette en
105 endringsforespørsel (aka &quot;Pull Request&quot;/PR). Når alt dette
106 er gjort kan en velge &quot;Commit changes&quot; for å sende inn
107 endringen. Hvis den er lagt inn i &quot;master&quot;-grenen så er den
108 en offisiell del av spesifikasjonen med en gang. Hvis den derimot er
109 en endringsforespørsel, så legges den inn i
110 <a href="https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/pulls">listen
111 over forslag til endringer</a> som venter på korrekturlesing og
112 godkjenning.</p>
113
114 <p>Større endringer (for eksempel samtidig endringer i flere filer)
115 gjøres enklest ved å hente ned en kopi av git-depoet lokalt og gjøre
116 endringene der før endringsforslaget sendes inn. Denne prosessen er
117 godt beskrivet i dokumentasjon fra github. Git-prosjektet som skal
118 &quot;klones&quot; er
119 <a href="https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/</a>.</p>
120
121 <p>For å registrere nye utfordringer (issues) eller kommentere på
122 eksisterende utfordringer benyttes nettsiden
123 <a href="https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues">https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues</a>.
124 I skrivende stund er det 48 åpne og 11 avsluttede utfordringer. Et
125 forslag til hva som bør være med når en beskriver en utfordring er
126 tilgjengelig som utfordring
127 <a href="https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/14">#14</a>.</p>
128
129 <p>For å bygge en PDF-utgave av spesifikasjonen så bruker jeg i dag en
130 Debian GNU/Linux-maskin med en rekke programpakker installert. Når
131 dette er på plass, så holder det å kjøre kommandoen 'make pdf html' på
132 kommandolinjen, vente ca. 20 sekunder, før spesifikasjon.pdf og
133 spesifikasjon.html ligger klar på disken. Verktøyene for bygging av
134 PDF, HTML og ePub-utgave er også tilgjengelig på Windows og
135 MacOSX.</p>
136
137 <p>Github bidrar med rammeverket. Men for at åpent vedlikehold av
138 spesifikasjonen skal fungere, så trengs det folk som bidrar med sin
139 tid og kunnskap. Arkivverket har sagt de skal bidra med innspill og
140 godkjenne forslag til endringer, men det blir størst suksess hvis alle
141 som bruker og lager systemer basert på Noark 5 Tjenestegrensesnitt
142 bidrar med sin kunnskap og kommer med forslag til forebedringer. Jeg
143 stiller. Blir du med?</p>
144
145 <p>Det er viktig å legge til rette for åpen diskusjon blant alle
146 interesserte, som ikke krever at en må godta lange kontrakter med
147 vilkår for deltagelse. Inntil Arkivverket dukker opp på IRC har vi
148 laget en IRC-kanal der interesserte enkelt kan orientere seg og
149 diskutere tjenestegrensesnittet. Alle er velkommen til å ta turen
150 innom
151 <a href="https://webchat.freenode.net/?channels=nikita">#nikita</a>
152 (f.eks. via irc.freenode.net) for å møte likesinnede.</p>
153
154 <p>Det holder dog ikke å ha en god spesifikasjon, hvis ikke de som tar
155 den i bruk gjør en like god jobb. For å automatisk teste om et konkret
156 tjenestegrensesnitt følger (min) forståelse av
157 spesifikasjonsdokumentet, har jeg skrevet et program som kobler seg
158 opp til et Noark 5v4 REST-tjeneste og tester alt den finner for å se
159 om det er i henhold til min tolkning av spesifikasjonen. Dette
160 verktøyet er tilgjengelig fra
161 <a href="https://github.com/petterreinholdtsen/noark5-tester">https://github.com/petterreinholdtsen/noark5-tester</a>,
162 og brukes daglig mens vi utvikler Nikita for å sikre at vi ikke
163 introduserer nye feil. Hvis en skal sikre samvirke på tvers av ulike
164 systemer er det helt essensielt å kunne raskt og automatisk sjekke at
165 tjenestegrensesnittet oppfører seg som forventet. Jeg håper andre som
166 lager sin utgave av tjenestegrensesnittet vi bruke dette verktøyet,
167 slik at vi tidlig og raskt kan oppdage hvor vi har tolket
168 spesifikasjonen ulikt, og dermed få et godt grunnlag for å gjøre
169 spesifikasjonsteksten enda klarere og bedre.</p>
170
171 <p>Dagens beskrivelse av Noark 5 Tjenestegrensesnitt er et svært godt
172 utgangspunkt for å gjøre virksomhetens arkiv til et dynamisk og
173 sentralt arbeidsverktøy i organisasjonen. Blir du med å gjøre den
174 enda bedre?</p>