Wat is open source en waarom is het belangrijk voor software en blockchain?

Wat is open source en waarom is het belangrijk voor software en blockchain?

Wat is open source?

Open source betekent dat de broncode van software beschikbaar is én dat een licentie anderen duidelijke rechten geeft om die code te gebruiken, te bekijken, aan te passen en te verspreiden. Broncode is de leesbare versie van een programma waar ontwikkelaars mee werken. Je kunt het zien als het recept achter een app of programma.

Alleen code online zetten is dus niet genoeg. Zonder passende licentie is het niet automatisch duidelijk of jij die code mag kopiëren, veranderen of opnieuw delen. Juist die licentie bepaalt wat wel en niet mag.

Open source betekent ook niet per se gratis. Iemand mag open-source software verkopen of geld vragen voor verspreiding, zolang de licentie dat toestaat. Het gaat vooral om de vrijheid rond de code, niet om de prijs.

Een echte open-sourcelicentie mag bijvoorbeeld geen onderscheid maken tussen gebruikers, groepen of toepassingen. Je mag de software dus niet alleen voor een bepaalde groep of alleen voor privégebruik beschikbaar stellen en het vervolgens open source noemen. De voorwaarden moeten bovendien niet afhangen van één specifieke technologie.

Voorbeeld: Stel dat een ontwikkelaar een programma onder een open-sourcelicentie uitbrengt. Jij mag de code bestuderen, een eigen versie maken en die delen, zolang je je aan de voorwaarden van die licentie houdt. Staat dezelfde code zonder licentie online, dan heb je die rechten niet automatisch.


Korte samenvatting

  • Open source gaat over broncode én de rechten die een licentie geeft.
  • Je mag open-source software vaak gebruiken, bestuderen, aanpassen en delen.
  • Open source betekent niet automatisch dat software gratis is.
  • Een licentie bepaalt welke voorwaarden gelden bij gebruik en verspreiding.
  • Publieke broncode zonder passende licentie geeft anderen geen duidelijke gebruiksrechten.

Hoe werkt open-source software?

Open-source software werkt doordat de maker de broncode publiceert onder een licentie met duidelijke spelregels. Andere ontwikkelaars kunnen de code daarna kopiëren, bekijken en aanpassen. Of zij hun aangepaste versie ook mogen verspreiden, hangt af van de licentievoorwaarden.

Bij veel projecten wordt versiebeheer gebruikt. Dat is een systeem dat bijhoudt welke wijziging is gedaan, door wie en wanneer. Zo'n opgeslagen wijziging heet een commit. Daardoor kun je meestal stap voor stap terugzien hoe software zich heeft ontwikkeld.

Een veelgebruikte manier van samenwerken gaat ongeveer zo:

  1. Maak een eigen werkversie Een ontwikkelaar werkt in een branch, een aparte werklijn binnen hetzelfde project. Soms maakt diegene eerst een fork: een eigen kopie van het hele project.

  2. Pas de code aan In die eigen versie kan iemand een fout oplossen, een functie toevoegen of de code verbeteren zonder meteen de officiële versie te veranderen.

  3. Dien een pull request in Een pull request is een voorstel om de wijziging op te nemen in het oorspronkelijke project. Andere ontwikkelaars kunnen de code dan bekijken, bespreken en testen.

  4. Controleer de wijziging Projecten kunnen wijzigingen laten beoordelen, automatisch testen of de code goed werkt en controleren op mogelijke fouten of beveiligingsproblemen.

  5. Wel of niet samenvoegen Als de mensen met de juiste rechten akkoord gaan, kunnen zij de wijziging samenvoegen met de officiële versie. Dat heet vaak mergen.

Een fork hoeft trouwens nooit terug te keren naar het oorspronkelijke project. Iemand kan met die eigen kopie zelfstandig verder bouwen. Pas als de beheerders van het oorspronkelijke project de wijziging accepteren, wordt die onderdeel van de officiële versie.

GitHub, pull requests en forks zijn handige en veelgebruikte manieren om samen te werken, maar ze zijn geen voorwaarde voor open source. De licentie is de basis.

Wie beheert open-source software en hoe worden wijzigingen doorgevoerd?

Open-source software heeft niet één algemene beheerder; elk project bepaalt zelf wie de code beheert en hoe wijzigingen worden toegelaten. Dat kunnen individuele maintainers zijn, maar ook een organisatie, stichting of projectgemeenschap.

Een maintainer is iemand die helpt het project draaiend te houden. Diegene kan bijvoorbeeld wijzigingen beoordelen, nieuwe versies uitbrengen en beslissen wie toegang krijgt tot de officiële repository. Een repository is de plek waar de code en de wijzigingsgeschiedenis van een project staan.

Externe ontwikkelaars kunnen meestal een probleem melden, een verbetering voorstellen of aangepaste code indienen. Op platforms zoals GitHub gebeurt dat bijvoorbeeld via een issue of pull request. Een issue is vaak een melding van een fout, vraag of verbeteridee.

Projecten kunnen extra regels instellen voordat code mag worden samengevoegd. Denk aan verplichte controles door andere ontwikkelaars, automatische tests of regels die voorkomen dat belangrijke code zomaar direct kan worden aangepast.

Bij blockchain komt er nog iets bij: dat nieuwe code aan het officiële project wordt toegevoegd, betekent nog niet dat de regels van de blockchain automatisch veranderen.

Een node is een computer die de software draait en transacties en blokken controleert volgens de regels van een blockchain.

Bij Bitcoin dienen BIPs als openbare voorstellen voor verbeteringen. Bij Ethereum vervullen EIPs een vergelijkbare rol voor standaarden en wijzigingen aan het netwerk. Zo'n voorstel kan uitleg, feedback en eerdere aanpassingen bevatten. Maar het publiceren van een BIP of EIP verandert de regels van Bitcoin of Ethereum niet vanzelf.

Ook het samenvoegen van code doet dat niet automatisch. Voor een echte wijziging van de protocolregels, de technische regels van het netwerk, moeten relevante deelnemers uiteindelijk software draaien die dezelfde nieuwe regels volgt.

Bij Bitcoin beslist geen formeel of informeel orgaan in zijn eentje over de adoptie van BIPs. Bij Ethereum verzorgen EIP-editors vooral administratieve en redactionele taken, niet de inhoudelijke keuze of een voorstel gewenst is.

Welke open-sourcelicenties bestaan er?

Twee veelvoorkomende soorten zijn permissieve licenties en copyleftlicenties. Permissieve licenties heten zo omdat ze veel toestaan: je mag de code meestal vrij gebruiken, aanpassen en opnieuw verspreiden. Copyleft is een woordspeling op copyright. Bij zulke licenties mag je de code ook aanpassen en delen, maar moet afgeleide software vaak onder dezelfde open voorwaarden beschikbaar blijven.

Dit zijn enkele bekende licenties:

  • MIT Dit is een permissieve licentie. Je mag de software gebruiken, kopiëren, aanpassen, verspreiden en zelfs commercieel gebruiken. Wel moet je de copyrightmelding en licentietekst meesturen. De software wordt geleverd zonder garantie en met beperkte aansprakelijkheid.

  • BSD-2-Clause en BSD-3-Clause Dit zijn ook permissieve licenties. Ze staan breed hergebruik en verspreiding toe, meestal zolang de copyright- en licentie-informatie behouden blijft.

  • Apache-2.0 Apache License 2.0 is eveneens permissief. Deze licentie bevat daarnaast afspraken over patenten van mensen die code aan het project bijdragen.

  • GPL-3.0-only GPL is een copyleftlicentie. Simpel gezegd probeert deze licentie ervoor te zorgen dat de vrijheid om code te delen en aan te passen behouden blijft als software verder wordt verspreid. Wie software onder GPLv3 verspreidt, moet onder bepaalde voorwaarden ook de bijbehorende broncode beschikbaar maken.

  • MPL-2.0 De Mozilla Public License 2.0 is een vorm van copyleft die vooral kijkt naar afzonderlijke bestanden. Pas je een bestand aan dat onder MPL valt, dan moet dat gewijzigde bestand meestal onder dezelfde open voorwaarden beschikbaar blijven. Andere bestanden in een groter project kunnen wel onder andere voorwaarden vallen.

Belangrijk om te weten: labels als permissief, sterk copyleft en zwak copyleft zijn handig als eerste uitleg, maar de precieze voorwaarden staan altijd in de licentietekst. Vooral als verschillende softwareonderdelen met verschillende licenties samenkomen, kan het ingewikkeld worden.

Waarom is open source belangrijk voor crypto en blockchain?

Open source is belangrijk voor crypto en blockchain omdat nodes software draaien die transacties en blokken controleert aan de hand van vaste regels. Wie zelf een node draait, kan dus willen nagaan welke regels die software precies uitvoert.

Bij Bitcoin is Bitcoin Core een bekend voorbeeld. De broncode is publiek beschikbaar en de software wordt verspreid onder de MIT-licentie. Daardoor kunnen ontwikkelaars en andere geïnteresseerden de code bestuderen, bijdragen voorstellen of een eigen versie bouwen binnen de voorwaarden van die licentie.

Ethereum kan worden gebruikt met meerdere verschillende open-sourceprogramma's, die clients worden genoemd. Deze software verwerkt onder andere transacties en helpt computers deel te nemen aan het Ethereum-netwerk. De verschillende clients worden door verschillende teams gebouwd en gebruiken soms verschillende programmeertalen.

Waarom is dat handig? Als een netwerk volledig afhankelijk zou zijn van één stuk software, kan een ernstige fout daarin veel deelnemers tegelijk raken. Meerdere onafhankelijke clients maken het netwerk minder afhankelijk van één versie van de software.

Die verschillende Ethereumclients moeten natuurlijk wel dezelfde relevante specificaties volgen. Specificaties zijn de gezamenlijke technische afspraken over hoe het netwerk werkt. Denk aan regels voor transacties, blokken en de manier waarop het netwerk overeenstemming bereikt over welke gegevens geldig zijn.

BIPs en EIPs helpen ook bij openbare afstemming. Ze maken voorstellen, technische uitleg, feedback en revisies zichtbaar. Dat is waardevol in crypto, omdat wijzigingen aan de regels grote gevolgen kunnen hebben voor iedereen die software draait, crypto bewaart of toepassingen zoals smart contracts gebruikt.

Open source maakt bovendien onafhankelijke versies en forks mogelijk. Dat geeft ontwikkelaars en gebruikers meer keuze. Maar open code alleen is geen garantie dat een blockchain veilig, gedecentraliseerd of breed gebruikt is. De code moet goed zijn, correct worden uitgevoerd en uiteindelijk ook worden gebruikt door nodes en andere deelnemers.

Wat zijn de voordelen van open source?

Het grootste voordeel van open source is dat gebruikers software niet alleen kunnen gebruiken, maar ook kunnen onderzoeken, aanpassen en delen. Dat is handig wanneer een organisatie software wil laten aansluiten op eigen technische of operationele wensen.

Daarnaast maakt openbare code controle mogelijk. Je kunt wijzigingen in de versiegeschiedenis bekijken en zien wat er is aangepast. In een pull-requestworkflow kunnen anderen een wijziging bespreken voordat die wordt samengevoegd. Automatische tests en beveiligingscontroles kunnen helpen om fouten eerder te vinden.

Open source kan ook samenwerking makkelijker maken. Ontwikkelaars kunnen bestaande onderdelen hergebruiken in plaats van alles vanaf nul te bouwen. Dat mag natuurlijk alleen als de licenties bij elkaar passen en iedereen zich aan de voorwaarden houdt.

Een fork biedt nog een ander voordeel: continuïteit. Stel dat een groep ontwikkelaars een andere technische richting wil dan de oorspronkelijke maintainers. Dan kunnen zij met een eigen kopie verdergaan. Zo hoeft een project niet per se te stoppen omdat er onenigheid is over de toekomst.

In blockchain is clientdiversiteit een voordeel. Dat betekent dat er meerdere verschillende clients bestaan: programma’s waarmee computers deelnemen aan bijvoorbeeld Ethereum. Als deze clients door verschillende teams worden gebouwd, is het netwerk minder afhankelijk van één versie van de software. Daardoor is de kans kleiner dat één fout meteen alle nodes, de computers die het netwerk draaiende houden, op dezelfde manier raakt.

Wel belangrijk: dat je code kunt inspecteren, betekent niet dat deskundigen die code ook echt grondig hebben gecontroleerd. Open source maakt controle mogelijk, maar is geen bewijs dat elke fout al gevonden of opgelost is.

Welke risico’s en beperkingen heeft open source?

Open source is geen beveiligingscertificaat. Ook openbare code kan programmeerfouten, kwetsbaarheden of onveilige ontwerpkeuzes bevatten. Dat iedereen de code kan bekijken, betekent niet dat genoeg deskundige mensen dat ook daadwerkelijk hebben gedaan.

Onderhoud is een belangrijk risico. Software heeft meestal voortdurend onderhoud nodig, bijvoorbeeld voor bugs, beveiligingsupdates en nieuwe dependencies. Een dependency is een extern softwareonderdeel waar een programma op leunt. Als een project niet goed wordt onderhouden, kunnen bekende problemen blijven liggen.

Hoe meer externe softwareonderdelen een programma gebruikt, hoe meer plekken er kunnen zijn waar een beveiligingsprobleem ontstaat. Een schadelijke of overgenomen dependency kan daardoor een heel systeem in gevaar brengen. Daarom is het verstandig om te kijken of elke dependency echt nodig is, waar die vandaan komt en of de gebruikte versie nog actueel is.

Bij open-source software spelen ook licenties een rol. Combineer je onderdelen met verschillende licenties, dan kunnen er voorwaarden gelden rond het beschikbaar maken van broncode, copyrightmeldingen, wijzigingen of patenten. Dat is vooral iets om goed uit te zoeken voordat software wordt verspreid.

Forks hebben eveneens een keerzijde. Ze geven keuzevrijheid, maar kunnen ontwikkelaars, gebruikers, documentatie en beveiligingsonderhoud over meerdere projecten verdelen. Een fork heeft eigen maintainers, beveiliging, nieuwe versies en gebruikers of node-operators nodig om op lange termijn goed te blijven werken.

Voor crypto is er nog een extra controlepunt. De code in een openbare repository hoeft niet automatisch exact dezelfde code te zijn als de software die je installeert. Daarom is het belangrijk om te controleren waar de software vandaan komt en of de versie die je installeert overeenkomt met de officiële versie.

Bij smart contracts kun je daarnaast controleren of de gepubliceerde code overeenkomt met het contract dat daadwerkelijk op de blockchain draait.

Kort gezegd: open source geeft je meer mogelijkheden om te controleren, maar neemt je niet alle controlewerk uit handen. Kijk bij software en cryptoprojecten dus ook naar onderhoud, beveiligingspraktijken, afhankelijkheden en de versie die je daadwerkelijk gebruikt.

Conclusie

Open source betekent dat broncode beschikbaar is onder een licentie die duidelijke rechten geeft om de software te gebruiken, te bestuderen, aan te passen en te delen. De licentie is daarbij minstens zo belangrijk als de code zelf.

Voor crypto en blockchain is open source extra relevant, omdat nodes protocolregels uitvoeren en verschillende onafhankelijke clients een netwerk minder afhankelijk kunnen maken van één stuk software. Tegelijk is openbare code geen garantie voor veiligheid of kwaliteit. Goede controles, actief onderhoud en veilige dependencies blijven net zo belangrijk.

Zie open source dus vooral als een sterke basis voor transparantie, samenwerking en keuzevrijheid. Het biedt mogelijkheden, maar je moet nog steeds kijken hoe een project wordt beheerd en of de gebruikte software betrouwbaar wordt onderhouden.

Over Finst

Finst is een toonaangevend cryptoplatform in Nederland en biedt extreem lage tradingkosten, beveiliging van institutioneel niveau en een compleet aanbod aan cryptodiensten zoals trading, custody, staking en fiat on off ramp. Finst is opgericht door het voormalige kernteam van DEGIRO, is onder MiCAR erkend als crypto-asset service provider door de Autoriteit Financiële Markten (AFM) en bedient zowel particuliere als institutionele klanten in 30 Europese landen.

Het cryptoplatform voor iedere investeerder

Of je nu actief handelt of voor de lange termijn belegt, met Finst bouw je met vertrouwen en een gerust gevoel aan je cryptovermogen.

Registreren