developer.overheid.nl

Ontwikkelaarsportaal van de Nederlandse overheid

Ga naar hoofdinhoud

Aanbeveling voor de Git-werkplaats van de overheid

· 9 minuten leestijd
Jan Vlug
Software Engineer

De Nederlandse overheid publiceert een deel van haar broncode als vrije opensource software. Om software te beheren is een versiebeheersysteem nodig. Hiermee kun je veranderingen in de broncode traceren en beheren. Een versiebeheersysteem faciliteert ook het samenwerken tussen verschillende software-ontwikkelaars. Een gedistribueerd versiebeheersysteem maakt het mogelijk dat ontwikkelaars op verschillende locaties toch kunnen samenwerken aan één softwareproduct. Het de facto versiebeheersysteem voor software is Git. Git is vrije opensource software. Voor een interessante en leerzame introductie in Git zie deze presentatie.

Er zijn online platforms die werken met Git, en die daaromheen toegevoegde functionaliteit bieden om softwaredevelopment en projectmanagement met Git te ondersteunen. Ik gebruik hieronder de term Git-forge (Git-werkplaats) om zulke platforms aan te duiden. GitLab, Forgejo en GitHub zijn allemaal Git-forges.

In deze blog ga ik in op een aantal aspecten van verschillende Git-forges, om zo de beste keuze voor een Git-forge voor de overheid te kunnen maken.

Relevant vanwege code.overheid.nl

Dit artikel is extra relevant omdat het Ministerie van Binnenlandse Zaken op dit moment bezig is met het opzetten van een code.overheid.nl instantie. Volg deze blog of Mastodon voor meer info hierover.

De huidige situatie

Op dit moment wordt vrije opensource software van de overheid onder andere gehost op GitHub en GitLab. Externe Git-forges die niet onder het beheer van de overheid vallen. GitHub zelf is bovendien bedrijfseigen (proprietary), niet vrije, niet-opensource software. GitLab Free heeft een open sourcelicentie, maar de Enterprise Edition heeft een source-available licentie en is geen vrije software.

De vraag rijst wáár de Nederlandse overheid het best haar vrije opensource software kan publiceren?

Waarom GitHub afvalt

GitHub valt af omdat GitHub, als niet vrije, niet-opensource software niet in overeenstemming is met de lijn dat bij gelijke geschiktheid open source de voorkeur geniet.

Bovendien is het hosten van broncode een kritiek onderdeel van de infrastructuur voor de Nederlandse overheid. De overheid kan zich niet veroorloven dat er gerommeld zou kunnen worden met code of binaries in repositories die mensen direct kunnen uitvoeren. De overheid moet zeker weten dat deze binaries integer tot stand zijn gekomen. Daarom is het belangrijk de volledige beschikking te hebben over een Git-forge.

Daarnaast is er de dreiging dat het platform inzet wordt voor diplomatieke doeleinden zoals het geval was bij de hoofdaanklager van het Internationaal Strafhof (ICC).

De twee overgebleven kandidaten: GitLab en Forgejo

Twee andere Git-forges zijn GitLab en Forgejo (spreek uit als /forˈd͡ʒe.jo/).

Het probleem met GitLab

GitLab heeft een open core / non-free enterprise functionality model. Er is een opensource editie en er is een niet-vrije editie. Dat is een risico. Gebruikers van de niet-vrije GitLab Enterprise Edition functionaliteit hebben een vendor lock-in bij GitLab. Het is niet mogelijk de code naar eigen voorkeur aan te passen en vrij te gebruiken.

Het graduele pad naar vendor lock-in

Organisaties beginnen vaak met de gratis en vrije GitLab Community Edition (die wél vrije opensource is). Maar naarmate een organisatie groeit en meer geavanceerde functionaliteit nodig heeft, wordt ze vaak verleid of gedwongen over te stappen naar GitLab Enterprise Edition voor features zoals:

  • Geavanceerde security scanning
  • Compliance features
  • Betere performance en schaalbaarheid
  • Enterprise support

Eenmaal afhankelijk van die Enterprise Edition features, zit zo'n organisatie vast.

Digitale soevereiniteit en vrije software (FOSS)

Echte digitale soevereiniteit kun je alleen bereiken door het gebruik van vrije software (Free and Open Source Software - FOSS). Vrije software is breder dan opensource software. FOSS geeft de gebruiker vier vrijheden:

  1. De vrijheid om de software te gebruiken;
  2. De vrijheid om de software te bestuderen;
  3. De vrijheid om de software te distribueren;
  4. De vrijheid om veranderingen aan de software te distribueren.

Er zijn veel nuance-verschillen in verschillende free software licenties, maar voorgaande is volgens mij de kern. FOSS is copyleft. Als het gaat over herbruikbaarheid van broncode, zoals voorgeschreven door de wet (zie ook de memorie van toelichting) dan denk ik dat een copyleft licentie de beste keuze is. De EUPL v1.2 is copyleft.

Het essentiële verschil tussen GitLab Enterprise Edition en Forgejo is dat GitLab Enterprise Edition geen free software is en Forgejo is wel free software (FOSS). Forgejo heeft alleen een vrije variant van de software. Forgejo zal altijd FOSS zijn. Bovendien gebruikt Forgejo exclusief Free Software voor hun eigen project development.

Bij Forgejo heeft de gebruiker (overheid) dus álle vrijheid. Bij GitLab Enterprise Edition wordt er door de toegepaste licentie vrijheid van de gebruiker (overheid) ontnomen. GitLab Enterprise Edition is geen FOSS. Dit is een fundamenteel, filosofisch en politiek verschil. Je kunt alleen digitale soevereiniteit hebben als er geen vrijheid van je wordt ontnomen.

Het team van Fedora koos ook voor Forgejo

Fedora, een Linux-distributie, stond ook voor de keuze welke Git-forge te gebruiken. Fedora koos voor Forgejo. Eén van de argumenten van Fedora om voor Forgejo te kiezen is:

"Some of us on the council liked the well documented, and somewhat familiar option of GitLab, but when faced with the reality that sometime in the near future, Fedora may find itself needing to make changes to our git forge, and one option might require money we don't have, or not allow the changes we might need to make, and we did not want to limit the project in any way." (markering in vet van mij). Met andere woorden: Fedora vindt digitale soevereiniteit essentieel en wil zichzelf geen vrijheid ontnemen of limiteren.

Merk op dat bij Fedora ongeveer de beste experts op het gebied van vrije opensource software (FOSS) werken.

Licentievergelijking

GitLab maakt onderscheid tussen tiers, users en distributions. GitLab hanteert verschillende licenties.

GitLab Community Edition (CE) heeft de MIT License. GitLab CE is daarmee compatibel met FOSS, free software.

GitLab Enterprise Edition (EE) heeft "The GitLab Enterprise Edition (EE) license" waarin meer restricties zijn. GitLab EE is daarmee niet FOSS, dus non free software.

Forgejo heeft de GPLv3 licentie (voorheen MIT). GPLv3 is FOSS en copyleft net als Git zelf.

Git heeft de GPLv2 licentie.

Forgejo als beste keuze voor digitale soevereiniteit op lange termijn

Mijn conclusie: Als de overheid fundamenteel wil kiezen voor digitale soevereiniteit dan is een Git-forge die zelf FOSS of copyleft is essentieel. GitLab als bedrijf zet in op het free core / extendend enterprise model. Dit model heeft in het verleden tot vendor lock-in en andere problemen geleid (denk aan Owncloud / Nextcloud). Forgejo, als democratische non-profitorganisatie, zet expliciet vol in op vrije software (FOSS / copyleft). Daarmee is vanuit het oogpunt van digitale soevereiniteit Forgejo de beste keuze.

Public money, public code

Forgejo biedt de mogelijkheid om álle broncode ervan te bestuderen, aan te passen en te distribueren. Dat is precies in lijn met de doelen van de overheid. Elke investering in Forgejo komt in het publiek domein en daarmee ten goede aan belastingbetalende burgers en bedrijven. Public money, public code. Door te investeren in Forgejo investeert de overheid in het publieke domein.

Schaalbaarheid

Wat betreft schaalbaarheid, de essentie van Git is dat het een gedistribueerd, gedecentraliseerd systeem is. Daarmee is Git zelf (de core van Git-forges) als het ware van nature schaalbaar. Dat geldt niet per se voor de aanvullende functionaliteit van de Git-forges. Ik weet te weinig van Forgejo om sterke uitspraken over de schaalbaarheid te kunnen doen. Ik vermoed dat Forgejo op dit moment schaalbaar genoeg is voor de opensource projecten van de overheid. Codeberg, een publieke instantie van Forgejo host op het moment van schrijven 313.753 projecten en 202.366 gebruikers.

Hands-on ervaring opdoen met Forgejo

Als je hands-on ervaring wil opdoen met Forgejo, dan kun je bijvoorbeeld gebruik maken van Codeberg, een non-profit, community-gedreven platform dat draait op Forgejo. Ik heb tijdens een hackathon Forgejo inclusief een Forgejo Actions runner lokaal geïnstalleerd en GitLab CI/CD-pipelines omgezet naar Forgejo Actions.

Self-hosting en federatie

Self-hosting is ook essentieel voor digitale soevereiniteit en digitale autonomie. Een organisatie heeft dan zelf de volledige zeggenschap over de data. Tot waar in een overheidsorganisatie of natie de digitale soevereiniteit moet lopen kan verschillen. Daarom is het belangrijk dat verschillende digitaal soevereine organisaties toch goed samen kunnen werken. Dit zou bijvoorbeeld kunnen door federatie tussen de Git-forges van deze soevereine organisaties. Forgejo heeft ook federatie op de roadmap.

Conclusie

Samenvattend, vanuit het oogpunt van digitale soevereiniteit en digitale autonomie is een self-hosted Forgejo de beste keuze voor de overheid. De functionaliteit van Forgejo is ruim voldoende voor software-ontwikkeling en elke in Forgejo geïnvesteerde euro komt terecht in het publieke domein.