Het ministerie van Binnenlandse Zaken en Koninkrijksrelaties (BZK) heeft de broncode en bijbehorende functionele en technische documentatie openbaar gemaakt van de programmatuur die was geschreven voor nieuwe centrale ict-systemen voor de basisregistratie personen (BRP). De Operatie BRP (oBRP) werd in juli van dit jaar gestopt.
De meest recente broncode is te vinden op internetsite github.com, met functionele en technische documentatie. Het ministerie van BZK publiceert eerdere versies van de broncode volgend jaar.
De broncode is gepubliceerd als open source software. Daardoor komen aanpassingen op de broncode ook weer openbaar beschikbaar en wordt gratis hergebruik ondersteund. De broncode is gecontroleerd op privacy- en veiligheidsrisico’s.
Eind 2013 wilde de toenmalige minister van BZK Ronald Plasterk alleen onder bepaalde voorwaarden een deel van de broncode vrijgeven. Nadat hij de stekker uit het project trok – met een schadepost van zo’n honderd miljoen euro – beloofde hij onder druk van de Tweede Kamer alsnog de ontwikkelde programmatuur en broncode vrij te geven. Zijn ict-opvolger, staatsecretaris Knops, heeft de Tweede Kamer geïnformeerd dat de meest recente versie van de BRP-broncode daadwerkelijk is vrijgegeven op de site https://github.com/MinBZK.
Verder zijn op de sites van rijksoverheid.nl en JoinUp verwijzingen (links) naar de publicatie op Github aangegeven. JoinUP is een initiatief van de Europese Commissie ter bevordering van het delen van kennis en ervaring met ict-projecten. De staatssecratris verwacht hiermee de vindbaarheid van de ontwikkelde code met het oog op mogelijk hergebruik te vergroten.
Het is voor zover bekend voor het eerst dat van een groot ict-overheidsproject, dat eerst gesloten was, de broncode openbaar is gemaakt (er is al eerder broncode vrijgegeven van het project Aerius, maar dat startte al als open source: https://gitlab.com/AERIUS).
AGPL
Verder schrijft de staatssecretaris in zijn Kamerbrief dat openbaarmaking plaatsvindt zonder kostendoorberekening zodat, in het algemeen belang, een gelijk speelveld ontstaat voor een ieder die deze code wil hergebruiken. Alle partijen kunnen op hetzelfde moment over de ontwikkelde broncode beschikken. Eerdere versies worden openbaar gemaakt nadat de onafhankelijke commissie BRP zijn eindrapportage heeft opgeleverd, zodat niet met de werkzaamheden van de commissie wordt geïnterfereerd. Naar verwachting komt dit rapport in het voorjaar van 2018.
Het zou mooi zijn geweest als de overheid van het begin af aan ’the open source way’ zou werken bij al haar softwareprojecten. Nu is het opensourcen van het BRP-systeem niet meer dan een dump van de broncode in GitHub, maar het is een mooi begin. Lees hier wat ik daar al eerder over schreef: http://janvlug.org/blog/operatie-brp-ging-duidelijk-niet-the-open-source-way/
In de broncode van de class Persoon.java zie je al met welke problemen het project kampte:
“Deze persoon heeft geen actuele geboorte groep en dus kan de leeftijd niet worden berekent.”
Onvoldoende beheersing van de Nederlandse spelling dus.
Zie:
https://github.com/MinBZK/OperatieBRP/blob/master/Broncode/operatiebrp-code-145.3/algemeen/alg-dal-entiteiten/src/main/java/nl/bzk/algemeenbrp/dal/domein/brp/entity/Persoon.java
Ik ga meteen kijken.
Wel heel leuk! Postgres als database, maar naast Java kom ik ook Node.js tegen en Jenkins, Gulp, nmp, bower.
https://github.com/MinBZK/OperatieBRP/tree/master/Broncode/operatiebrp-code-145.3/brp/beheer/beheer-ui
Ook documentatie en architectuur platen meteen even zelf ook opgeslagen.
Wat me opvalt is heel veel Nederlandse benamingen en commentaar en objectnamen. Ik dacht dat de code niet in NL geklopt zou zijn. Ik zeg niet goed of fout, want wellicht is het ook handig dat veel in NL is want als je iedere keer suffix e.d. meer naar NL moet vertalen.
Maar als ik dan hier kijk:
https://github.com/MinBZK/OperatieBRP/blob/master/Broncode/operatiebrp-code-145.3/brp/beheer/beheer-ui/app/fields/datumonbekend.html
dan zie ik wel heel veel verwarring door Nederlands en Engels kris-kras door elkaar te gebruiken.
input id=”{{kolom.id}}”
type=”number”
name=”{{kolom.id}}”
ng-model=”waarde[kolom.display]”
ng-pattern=”/^0$|^\\\\d{8}$/”
ng-required=”{{!((!status.nieuw && kolom.readonly) && (status.nieuw && kolom.nieuwReadonly)) && kolom.required}}”
ng-read
ng-trim=”{{kolom.trim}}”
placeholder=”jjjjmmdd of waarde 0″
class=”form-control”/
en SOAP voor de API’s….
Daarnaast…. ik heb nog niet heel lang gekeken, maar ik heb het gevoel dat ik heel veel mis. Is dit maar een (klein) gedeelte?
Alles bijelkaar (nog geen) 2500 java bestanden (exclusief package-info.java bestanden (270)).
Dat is functionele code, maar ook “plumbing”.
En dat voor 100.000.000 euro …
Ofwel hier ontbreekt het één en ander, of de applicatie is echt nog lang niet af, of de BRP is functioneel lichtgewicht, of ik moet me nodig laten bijscholen… 😉
Ik ben er ook kort doorheen gegaan en wat opvalt is dat de documentatie best wel in orde is. Qua code zie je elementen waar ik niet dezelfde keuze gemaakt had (SOAP!), maar ook genoeg zaken die ik ook gebruikt zou hebben.
Je vraagt wel wel af waar precies de 100mln in is gaan zitten…..
Kan bijna niet anders dat 80% van die kosten aan overhead gemaakt is en de overige 20% door daadwerkelijke ‘ontwikkelaars’ in elkaar is gebutst. Allemaal junioren of lichtgewichten want als je de code bekijkt dan is het niet veel soeps.
Johan… je zit er denk ik naast.
Denk dat je het percentage overhead te laag inschat 🙂 20 miljoen voor deze code is nog veels te hoog….
De BRP is ook al drie keer herbouwd:
https://www.computable.nl/artikel/opinie/overheid/5895773/1509029/een-skelettransplantatie-voor-de-brp.html
Verder is er ongetwijfeld heel veel tijd gaan zitten in het (af)bouwen (en vervolgens weer uitfaseren) van de generatoren.
Naast de Java code is er natuurlijk ook nog de userinterface code en de database scripts en ook het opstellen van de functionele en architectuur documenten zal best tijd gekost hebben, maar dan nog: 100M is best veel geld…