Wat is opensource-software?

Voltooid

Opensource-software is software waarvan de broncode openbaar wordt gemaakt voor iedereen om te inspecteren, te wijzigen en te distribueren. Het Open Source Initiative biedt de algemeen geaccepteerde definitie:

"Opensource-software is software met broncode die iedereen kan inspecteren, wijzigen en verbeteren. De auteursrechthebbende verleent gebruikers de rechten om de software te bestuderen, te wijzigen en te distribueren naar iedereen en voor welk doel dan ook, afhankelijk van de voorwaarden van een opensource-licentie."

In deze definitie worden verschillende belangrijke principes benadrukt:

  • Beschikbaarheid van broncode: De volledige broncode moet openbaar toegankelijk zijn, niet alleen uitvoerbare binaire bestanden.
  • Vrijheid om te wijzigen: Gebruikers kunnen de software aanpassen aan hun behoeften, bugs oplossen of functies toevoegen.
  • Herdistributierechten: Gebruikers kunnen de software delen met anderen, in oorspronkelijke of gewijzigde vorm.
  • Licentiebepalingen: Gebruiksrechten worden gedefinieerd door een opensource-licentie die machtigingen, beperkingen en verplichtingen aangeeft.

Opensource-software verschilt fundamenteel van eigendomssoftware, waarbij de broncode geheim blijft en gebruiksrechten nauw worden beheerd door de auteursrechthebbende.

Het opensource-model voor samenwerking

Opensource-ontwikkeling omvat het maken van gezamenlijke software met meerdere inzenders:

Communitygestuurde ontwikkeling

  • Gedistribueerde inzenders: Ontwikkelaars van over de hele wereld dragen code, documentatie, testen en ondersteuning bij.
  • Vrijwillige deelname: Veel inzenders nemen vrijwillig deel, gemotiveerd door het oplossen van problemen, leren, reputatie bouwen of ondersteunende hulpmiddelen die ze gebruiken.
  • Meritocratie: Invloed in projecten correleert meestal met de kwaliteit en hoeveelheid van bijdragen in plaats van de organisatiehiërarchie.
  • Transparante processen: Ontwikkeling vindt plaats in openbare opslagplaatsen waar iedereen discussies, beslissingen en wijzigingen kan observeren.

Werkstromen voor samenwerking

  • Openbare opslagplaatsen: Code wordt gehost op platforms zoals GitHub, GitLab of Bitbucket, waar iedereen deze kan bekijken.
  • Problemen bijhouden: Bugs en functieaanvragen worden openbaar bijgehouden, zodat communityleden problemen kunnen identificeren en oplossingen kunnen voorstellen.
  • Beoordelingen van pull-aanvragen: Inzenders verzenden wijzigingen via pull-aanvragen die worden gecontroleerd door onderhouders en andere communityleden voordat ze worden samengevoegd.
  • Releasebeheer: Onderhouders coördineren releases en zorgen voor stabiliteit en compatibiliteit terwijl ze community-bijdragen opnemen.

Projectbestuursmodellen

Verschillende opensource-projecten nemen verschillende governancebenaderingen aan:

  • Benevolent dictator: Eén individu (vaak de oprichter) neemt de uiteindelijke beslissingen over de projectrichting (bijvoorbeeld Python, zoals historisch het geval was met Guido van Rossum).
  • Kernteam: Een kleine groep onderhouders neemt gezamenlijk beslissingen via consensus of stemming.
  • Stichtingsbestuur: Grote projecten creëren vaak stichtingen (zoals de Apache Foundation, Linux Foundation) die juridische structuur, middelen en governance-frameworks bieden.
  • Bedrijfssponsor: Veel opensource-projecten worden voornamelijk onderhouden door werknemers van bedrijven die afhankelijk zijn van de software.

Wijdverspreide acceptatie van opensource-software

Opensource-software is alomtegenwoordig geworden in alle sectoren van technologie:

Statistieken over acceptatie in de branche

  • Enterprise-gebruik: Meer dan 90% ondernemingen gebruiken opensource-software in productieomgevingen.
  • Internetinfrastructuur: De meeste webservers worden uitgevoerd op Linux (opensource), leveren inhoud via Apache of Nginx (opensource) en gebruiken databases zoals PostgreSQL of MySQL (opensource).
  • Cloud-computing: Grote cloudplatforms gebruiken en ondersteunen uitgebreide opensourcetechnologieën: Kubernetes, Docker, Terraform en tal van andere opensource-hulpprogramma's vormen de basis van moderne cloudinfrastructuur.
  • Mobiele apparaten: Android, het populairste mobiele besturingssysteem ter wereld, is gebouwd op de Linux-kernel en bevat uitgebreide opensource-onderdelen.

Samenstelling van technologiestack

Moderne technologiestacks zijn voornamelijk opensource:

  • Besturingssystemen: Linux zorgt voor cloudinfrastructuur, containers en veel ingesloten systemen.
  • Programmeertalen: Python, JavaScript, Java, Go, Rust, Ruby, PHP: de populairste talen zijn opensource.
  • Databases: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch domineren de database-implementaties.
  • Webtechnologieën: React, Angular, Vue.js, Express, Django, Rails maken ontwikkeling van webtoepassingen mogelijk.
  • Ontwikkelhulpprogramma's: Git, Docker, Kubernetes, Jenkins, VS Code zijn essentiële opensource-ontwikkelhulpprogramma's.

De omhelzing van Microsoft van opensource

Microsoft illustreert de transformatie in de houding van ondernemingen ten opzichte van opensource-software:

Historische verschuiving

Microsoft heeft in het verleden opensource gezien als een bedreiging voor het bedrijfsmodel van eigen software. Dit veranderde het afgelopen decennium aanzienlijk, omdat het bedrijf het strategische belang van opensource herkende.

Opensource in Azure

Azure integreert uitgebreide opensource-technologieën:

schermopname van opensource-hulpprogramma's en technologieën in Azure.

Talen en runtimes: Azure biedt ondersteuning voor Python, Node.js, Java, PHP, Ruby, Go en andere opensourcetalen als eersteklas platformopties.

Databases: Azure biedt beheerde services voor PostgreSQL, MySQL, MariaDB en Redis, naast eigen aanbiedingen.

Containerindeling: Azure Kubernetes Service (AKS) biedt beheerde Kubernetes, het opensource-containerindelingsplatform.

Ontwikkelhulpprogramma's: Azure DevOps kan worden geïntegreerd met Git, Jenkins en andere opensource-hulpprogramma's, terwijl GitHub (verkregen door Microsoft) het grootste platform ter wereld is voor opensource-ontwikkeling.

Gegevens en analyses: Azure biedt ondersteuning voor Apache Spark, Hadoop, Kafka en andere opensource big data-technologieën.

.NET-transformatie

Het .NET-platform demonstreert de uitgebreide toezegging van Microsoft voor opensource:

Opensourcen .NET: Microsoft heeft .NET Core (nu .NET 5+) uitgebracht als opensource onder de MIT-licentie, waardoor het hele platform vrij beschikbaar is met broncode. De .NET-runtime, bibliotheken, compilers en hulpprogramma's zijn allemaal opensource.

Platformoverschrijdende ontwikkeling: Door .NET open source te maken, heeft Microsoft platformoverschrijdende ontwikkeling mogelijk gemaakt op Windows, Linux en macOS, waardoor het bereik van .NET aanzienlijk is vergroot.

Bijdragen van de Gemeenschap: De .NET-opslagplaatsen op GitHub ontvangen duizenden bijdragen van ontwikkelaars buiten Microsoft, waarbij het bedrijf actief communityverbeteringen bekijkt en accepteert.

Opensource-afhankelijkheden: ASP.NET Core-toepassingen bevatten doorgaans veel opensource-onderdelen:

  • Front-endbibliotheken: jQuery, React, Angular, Vue.js uitgebreide gebruikersinterfaces inschakelen.
  • Hulpprogrammabibliotheken: Newtonsoft.Json, Serilog, AutoMapper en talloze andere bieden algemene functionaliteit.
  • Testframeworks: xUnit, NUnit, Moq ondersteunen testgestuurde ontwikkeling.

Bijdragen aan opensource-projecten

Microsoft draagt actief bij aan opensource-projecten buiten zijn eigen projecten:

Linux-kernel: Microsoft draagt bij aan de Linux-kernel, waardoor Hyper-V integratie en ondersteunende Azure-infrastructuur worden verbeterd.

Kubernetes: Microsoft is een belangrijke bijdrager aan Kubernetes, waarmee het platform wordt vorm gegeven dat AKS mogelijk maakt.

Opensource-initiatieven: Microsoft sponsort opensource-evenementen, financiert kritieke opensource-infrastructuur en stelt ontwikkelaars in dienst om fulltime te werken aan opensource-projecten.

Door Microsoft gemaakte opensource-projecten

Naast het bijdragen aan bestaande projecten, creëert Microsoft belangrijke software en maakt deze open source.

Visual Studio Code: De populairste code-editor is opensource, met extensies, thema's en verbeteringen die zijn bijgedragen door een wereldwijde community.

TypeScript: De taal van Microsoft voor typeveilige JavaScript-ontwikkeling is open source en wordt veel gebruikt.

PowerShell Core: Het automatiseringsframework van Microsoft is opensource en platformoverschrijdend.

.NET Foundation: Microsoft heeft de .NET Foundation opgericht ter ondersteuning van opensource-projecten in het .NET-ecosysteem, waarbij resources, governance en communityondersteuning worden geboden.

Zie de .NET Foundation-websitevoor meer informatie.

Strategische logica

De omhelzing van Open Source van Microsoft weerspiegelt strategische zakelijke beslissingen:

Acceptatie van ontwikkelaars: Ontwikkelaars geven de voorkeur aan opensource-hulpprogramma's en talen. Door opensource te ondersteunen, trekt Microsoft ontwikkelaars aan op hun platformen.

Cloudbedrijf: Opensource-workloads stimuleren de overstap naar de cloud. Uitstekende opensource-ondersteuning op Azure maakt het platform aantrekkelijker.

Snelheid van innovatie: Opensource maakt snellere innovatie mogelijk via bijdragen van de community, waardoor de ontwikkelingslast van Microsoft wordt verminderd.

Groei van het ecosysteem: Opensource-community's maken waardevolle extensies, hulpprogramma's en kennis die de platformwaarde verbeteren.

Concurrentiepositie: Als concurrenten (AWS, Google Cloud) opensource uitgebreid ondersteunen, moet Microsoft hun opensource-mogelijkheden matchen of overschrijden.

Waarom organisaties opensource kiezen

Organisaties selecteren om verschillende redenen opensource-software:

Kostenoverwegingen: Het elimineren van licentiekosten vermindert directe kosten, met name belangrijk bij het implementeren van software op schaal of het bouwen van producten waar licentiekosten aan klanten worden doorgegeven.

Flexibiliteit en controle: Toegang tot broncode betekent dat organisaties software kunnen wijzigen om aan specifieke behoeften te voldoen, kritieke fouten onafhankelijk op te lossen en niet zijn vergrendeld in de tijdlijnen van leveranciers voor functies of oplossingen.

Transparantie en beveiliging: Openbare broncode maakt beveiligingscontroles mogelijk, communitybeoordeling identificeert beveiligingsproblemen sneller en het ontbreken van verborgen backdoors of het verzamelen van gegevens biedt vertrouwen.

Vergrendeling van leveranciers voorkomen: Opensource-software kan doorgaans overal worden geïmplementeerd, waardoor de afhankelijkheid van specifieke leveranciers wordt verminderd en onderhandelingsposities worden verbeterd.

Ondersteuning voor de community: Actieve opensource-community's bieden forums, documentatie, zelfstudies en peer-hulp, vaak rivaliserend of overschrijden commerciële ondersteuningskwaliteit.

Innovatie en functies: Geavanceerde technologieën komen vaak voor in opensource en organisaties kunnen functies bijdragen die ze nodig hebben in plaats van te wachten op roadmaps van leveranciers.

Inzicht krijgen in wat opensource-software is en waarom deze zo breed is aangenomen, biedt essentiële context voor het verkennen van de zorgen die organisaties moeten aanpakken bij het implementeren van opensource-onderdelen, die in de volgende les worden behandeld.