Archipunt op Mars
Wat heeft Archipunt te maken met de Ingenuity Mars Helicopter? Doeke Zanstra, onze ict-specialist zegt hierover: “Laatst keek ik op mijn GitHubpagina en zag ik dat ik de volgende ‘achievement’ erbij had gekregen: ‘Mars 2020 Helicopter Contributor‘ Doeke Zanstra contributed code to 1 repository used in the Mars 2020 Helicopter Mission pallets/werkzeug.”
Ik was echt totaal verbaasd. Hoe kan dit? Wat heb ik hieraan gedaan? Maar ik las de tekst hierboven nog een keer, en toen viel het kwartje. Bij Archipunt heb ik aan software gewerkt en die software is gebruikt bij het laten vliegen van een helicopter op Mars. Dit behoeft enige toelichting.
APAWA
Aan het eind van 2017 was ik bij Archipunt aan het werk aan APAWA. Dit is een web-applicatie voor het berekenen van het lokale effect (voor een specifiek adres) van aardbevingen. Mocht je willen weten hoe dat eruit ziet, klik dan hier. Terloops noemde ik het woord ‘web-applicatie’: dit is de software van het internet. In feite is het een gewone applicatie, zoals bijvoorbeeld Microsoft Word, alleen dan voor het ‘web’.
Die software was ik dus aan het schrijven en om het wiel niet iedere keer opnieuw uit te vinden maak ik gebruik van bestaande softwarecomponenten. Voor een web-applicatie gebruik ik daarvoor het opensourcecomponent Flask. Open source is erg handig omdat de broncode daarvan beschikbaar is. Daardoor kun je, als je een fout tegenkomt, deze analyseren. Meestal heb je zelf een fout gemaakt en dan kun je de broncode gebruiken om dat uit te zoeken. Heel, heel soms kom je iets tegen dat verbetering behoeft. Ook dan is opensource handig: niet alleen de broncode is open, maar het hele proces is open. Ook verbetertrajecten. Voordat ik hierop inga nog even het volgende:
Moderne browser
Flask zelf bestaat ook uit componenten. Ik liep tegen een onvolkomenheid aan in het component Werkzeug (overigens: zowel Flask als Werkzeug is niet in Amerika, maar bij onze Oosterburen bedacht). Eén van de functionaliteiten van Werkzeug is het bepalen welke browser (zoals Chrome, Safari of Firefox) een eindgebruiker gebruikt. In een moderne applicatie wil je niet dat er een gedateerde browser wordt gebruikt: de belangrijkste reden hiervoor is om de testinspanning niet te groot te laten worden. Nu was er een gebruiker die Microsoft Edge (de opvolger van Internet Explorer) gebruikte. Deze werd niet herkend door Werkzeug, en dus ook niet door Apawa. Edge maakt onder water gebruik van hetzelfde component als Chrome, en is een moderne browser. Dat was een reden om Edge toe te voegen. Als je wilt zien hoe dit er exact uit ziet, kijk dan hier voor de details.
Tot hier heb ik uitgelegd hoe softwareontwikkeling kan leiden tot een toevoeging van een opensourcecomponent, maar wat heeft dit met helicopters, Mars en NASA te maken?
Helicopters, Mars en NASA
Laat ik om te beginnen verwijzen naar het Engelstalige artikel Open Source on Mars: Community powers NASA’s Ingenuity Helicopter. Erg interessant om te lezen. NASA maakt gebruik van opensourcecode. Waarschijnlijk worden Flask (en Werkzeug) gebruikt bij ‘ground control’ om de helicopter aan te sturen. In het stuk kun je lezen hoe men bepaald heeft welke software gebruikt werd voor het project. NASA heeft een lijst van componenten en hun versienummers aangeleverd aan GitHub, de centrale plek waar open source opgeslagen wordt.
Omdat opensource-ontwikkeling zich in de openbaarheid voltrekt, kan elke wijziging in opensourcecode gekoppeld worden aan een identiteit. De lijst van componenten en hun versienummers levert een éénduidige lijst op van namen. Mijn wijziging is opgenomen in ‘Werkzeug versie 0.14’ en voor Ingenuity wordt versie 0.16 gebruikt. Inmiddels is versie 2.0.0 uit. Degene die aan versies na 0.16 hebben bijgedragen worden daarom niet genoemd bij de “achievement”, maar wellicht wordt deze code in toekomstige missies gebruikt.
Ik vond het leuk om achter dit feit te komen en uit te zoeken hoe het precies zit. Zo zie je maar weer: de wereld is complexer dan je denkt en je weet nooit waar je impact op kunt hebben, hoe klein die ook is. Wie weet kan ik in de toekomst nog eens wat bijdragen.
Doeke Zanstra
Ict-specialist
Bron foto: Courtesy NASA/JPL-Caltech