Hva er åpen kildekode-programvare?
Programvare med åpen kildekode er programvare hvis kildekode er gjort offentlig tilgjengelig for alle å inspisere, endre og distribuere. Open Source Initiative gir den allment aksepterte definisjonen:
"Åpen kildekode-programvare er programvare med kildekode som alle kan inspisere, endre og forbedre. Opphavsrettsinnehaveren gir brukerne rettighetene til å studere, endre og distribuere programvaren til hvem som helst og for ethvert formål, underlagt vilkårene i en åpen kildekode-lisens."
Denne definisjonen legger vekt på flere nøkkelprinsipper:
- Kildekode tilgjengelighet: Den fullstendige kildekoden må være offentlig tilgjengelig, ikke bare kjørbare binærfiler.
- Frihet til å endre: Brukere kan endre programvaren for å passe deres behov, fikse feil eller legge til funksjoner.
- Rettigheter til videredistribusjon: Brukere kan dele programvaren med andre, enten i original eller modifisert form.
- Lisensvilkår: Bruksrettigheter er definert av en åpen kildekode-lisens som spesifiserer tillatelser, begrensninger og forpliktelser.
Åpen kildekode-programvare skiller seg fundamentalt fra proprietær programvare, der kildekoden forblir hemmelig, og bruksrettighetene er strengt kontrollert av rettighetshaveren.
Den samarbeidende modellen med åpen kildekode
Åpen kildekode-utvikling innebærer samarbeidende programvareoppretting med flere bidragsytere:
Samfunnsdrevet utvikling
- Distribuerte bidragsytere: Utviklere fra hele verden bidrar med kode, dokumentasjon, testing og støtte.
- Frivillig deltakelse: Mange bidragsytere deltar frivillig, motivert av å løse problemer, lære, omdømmebygging eller støtteverktøy de bruker.
- Meritocracy: Innflytelse i prosjekter korrelerer vanligvis med kvalitet og kvantitet av bidrag i stedet for organisasjonshierarki.
- Transparente prosesser: Utviklingen skjer i offentlige depoter der alle kan observere diskusjoner, beslutninger og endringer.
Arbeidsflyter for samarbeid
- Offentlige depoter: Kode er vert på plattformer som GitHub, GitLab eller Bitbucket hvor alle kan se den.
- Sporing av problemer: Feil og funksjonsforespørsler spores offentlig, slik at fellesskapsmedlemmer kan identifisere problemer og foreslå løsninger.
- Gjennomganger av pull-forespørsler: Bidragsytere sender inn endringer gjennom pull-forespørsler som gjennomgås av vedlikeholdere og andre fellesskapsmedlemmer før sammenslåing.
- Administrasjon av utgivelser: Vedlikeholdere koordinerer utgivelser, sikrer stabilitet og kompatibilitet samtidig som de inkorporerer bidrag fra fellesskapet.
Modeller for prosjektstyring
Ulike åpen kildekode-prosjekter tar i bruk ulike styringstilnærminger:
- Velvillig diktator: En enkelt person (ofte grunnleggeren) tar endelige beslutninger om prosjektretning (f.eks. Python med Guido van Rossum historisk).
- Kjerneteam: En liten gruppe vedlikeholdere tar kollektivt avgjørelser gjennom konsensus eller avstemning.
- Stiftelsens styring: Store prosjekter oppretter ofte stiftelser (som Apache Foundation, Linux Foundation) som gir juridisk struktur, ressurser og styringsrammeverk.
- Sponsing av bedrifter: Mange åpen kildekode-prosjekter vedlikeholdes først og fremst av ansatte i selskaper som er avhengige av programvaren.
Utbredt bruk av åpen kildekode-programvare
Åpen kildekode-programvare har blitt allestedsnærværende på tvers av alle teknologisektorer:
Statistikk over bransjeadopsjon
- Bedriftsbruk: Over 90% av bedriftene bruker åpen kildekode-programvare i produksjonsmiljøer.
- Internett-infrastruktur: De fleste webservere kjører på Linux (åpen kildekode), serverer innhold gjennom Apache eller Nginx (åpen kildekode), og bruker databaser som PostgreSQL eller MySQL (åpen kildekode).
- Databehandling i skyen: Store skyplattformer bruker og støtter i stor grad åpen kildekode-teknologier – Kubernetes, Docker, Terraform og en rekke andre åpen kildekode-verktøy danner grunnlaget for moderne skyinfrastruktur.
- Mobile enheter: Android, verdens mest populære mobiloperativsystem, er bygget på Linux-kjernen og inkluderer omfattende åpen kildekode-komponenter.
Sammensetning av teknologistabel
Moderne teknologistabler er hovedsakelig åpen kildekode:
- Operativsystemer: Linux driver skyinfrastruktur, containere og mange innebygde systemer.
- Programmeringsspråk: Python, JavaScript, Java, Go, Rust, Ruby, PHP – de mest populære språkene er åpen kildekode.
- Databaser: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch dominerer databasedistribusjoner.
- Web-teknologier: React, Angular, Vue.js, Express, Django, Rails muliggjør utvikling av webapplikasjoner.
- Utviklingsverktøy: Git, Docker, Kubernetes, Jenkins, VS Code er viktige utviklingsverktøy med åpen kildekode.
Microsofts omfavnelse av åpen kildekode
Microsoft eksemplifiserer transformasjonen i bedrifters holdninger til programvare med åpen kildekode:
Historisk skifte
Microsoft har historisk sett på åpen kildekode som en trussel mot sin proprietære programvareforretningsmodell. Dette endret seg dramatisk i løpet av det siste tiåret da selskapet anerkjente åpen kildekodes strategiske betydning.
Åpen kildekode i Azure
Azure integrerer teknologier med åpen kildekode i stor grad:
Språk og kjøretider: Azure støtter Python, Node.js, Java, PHP, Ruby, Go og andre språk med åpen kildekode som førsteklasses plattformalternativer.
Databaser: Azure tilbyr administrerte tjenester for PostgreSQL, MySQL, MariaDB og Redis, i tillegg til proprietære tilbud.
Orkestrering av beholdere: Azure Kubernetes Service (AKS) tilbyr administrert Kubernetes, beholderorkestreringsplattformen med åpen kildekode.
Utviklingsverktøy: Azure DevOps integreres med Git, Jenkins og andre verktøy med åpen kildekode, mens GitHub (kjøpt opp av Microsoft) er verdens største plattform for utvikling med åpen kildekode.
Data og analyse: Azure støtter Apache Spark, Hadoop, Kafka og andre stordatateknologier med åpen kildekode.
NET-transformasjon
NET-plattformen demonstrerer Microsofts omfattende forpliktelse til åpen kildekode:
NET med åpen kildekode: Microsoft ga ut .NET Core (nå .NET 5+) som åpen kildekode under MIT-lisensen, noe som gjorde hele plattformen fritt tilgjengelig med kildekode. .NET runtime, biblioteker, kompilatorer og verktøy er alle åpen kildekode.
Utvikling på tvers av plattformer: Ved å åpne kildekoden .NET muliggjorde Microsoft utvikling på tvers av plattformer på Windows, Linux og macOS, og utvidet seg dramatisk. NETs rekkevidde.
Bidrag fra fellesskapet: NET-depotene på GitHub mottar tusenvis av bidrag fra utviklere utenfor Microsoft, og selskapet gjennomgår og godtar aktivt fellesskapsforbedringer.
Avhengigheter med åpen kildekode: ASP.NET kjerneprogrammer inneholder vanligvis mange komponenter med åpen kildekode:
- Frontend-biblioteker: jQuery, React, Angular, Vue.js muliggjør rike brukergrensesnitt.
- Verktøybiblioteker: Newtonsoft.Json, Serilog, AutoMapper og utallige andre gir felles funksjonalitet.
- Testrammeverk: xUnit, NUnit, Moq støtter testdrevet utvikling.
Bidra til åpen kildekode-prosjekter
Microsoft bidrar aktivt til prosjekter med åpen kildekode utover sine egne:
Linux-kjerne: Microsoft bidrar til Linux-kjernen, forbedrer Hyper-V integrasjon og støtter Azure-infrastruktur.
Kubernetes: Microsoft er en stor bidragsyter til Kubernetes, og hjelper til med å forme plattformen som driver AKS.
Åpen kildekode-initiativer: Microsoft sponser arrangementer med åpen kildekode, finansierer kritisk infrastruktur med åpen kildekode og ansetter utviklere til å jobbe heltid med prosjekter med åpen kildekode.
Microsoft-opprettede prosjekter med åpen kildekode
I tillegg til å bidra til eksisterende prosjekter, lager Microsoft og åpner kildekode betydelig programvare:
Visual Studio-kode: Den mest populære koderedigereren er åpen kildekode, med utvidelser, temaer og forbedringer bidratt av et globalt fellesskap.
Typeskript: Microsofts språk for typesikker JavaScript-utvikling er åpen kildekode og mye brukt.
PowerShell-kjerne: Microsofts automatiseringsrammeverk er åpen kildekode og på tvers av plattformer.
.NET Foundation: Microsoft etablerte .NET Foundation for å støtte prosjekter med åpen kildekode i .NET-økosystemet, og gir ressurser, styring og fellesskapsstøtte.
Hvis du vil ha mer informasjon, kan du se .NET Foundation-nettstedet.
Strategisk begrunnelse
Microsofts omfavnelse av åpen kildekode gjenspeiler strategiske forretningsbeslutninger:
Adopsjon av utviklere: Utviklere foretrekker åpen kildekode-verktøy og språk. Ved å støtte åpen kildekode tiltrekker Microsoft utviklere til plattformene sine.
Skyvirksomhet: Arbeidsbelastninger med åpen kildekode driver skyadopsjon. Utmerket støtte for åpen kildekode på Azure gjør plattformen mer attraktiv.
Innovasjonshastighet: Åpen kildekode muliggjør raskere innovasjon gjennom bidrag fra fellesskapet, noe som reduserer Microsofts utviklingsbyrde.
Vekst i økosystemet: Åpen kildekode-fellesskap skaper verdifulle utvidelser, verktøy og kunnskap som øker plattformverdien.
Konkurransedyktig posisjonering: Ettersom konkurrenter (AWS, Google Cloud) støtter åpen kildekode i stor grad, må Microsoft matche eller overgå deres åpen kildekode-funksjoner.
Hvorfor organisasjoner velger åpen kildekode
Organisasjoner velger programvare med åpen kildekode av flere grunner:
Kostnadsbetraktninger: Eliminering av lisensavgifter reduserer direkte kostnader, spesielt viktig når du distribuerer programvare i stor skala eller bygger produkter der lisenskostnadene vil bli overført til kundene.
Fleksibilitet og kontroll: Tilgang til kildekode betyr at organisasjoner kan endre programvare for å møte spesifikke behov, fikse kritiske feil uavhengig og ikke er låst til leverandørens tidslinjer for funksjoner eller rettelser.
Åpenhet og sikkerhet: Offentlig kildekode muliggjør sikkerhetsrevisjoner, fellesskapsgjennomgang identifiserer sårbarheter raskere, og fraværet av skjulte bakdører eller datainnsamling gir tillit.
Unngå leverandørlåsing: Programvare med åpen kildekode kan vanligvis distribueres hvor som helst, noe som reduserer avhengigheten av spesifikke leverandører og forbedrer forhandlingsposisjoner.
Støtte fra fellesskapet: Aktive åpen kildekode-fellesskap tilbyr fora, dokumentasjon, opplæringsprogrammer og kollegahjelp, som ofte konkurrerer med eller overgår kommersiell støttekvalitet.
Innovasjon og funksjoner: Banebrytende teknologier dukker ofte opp i åpen kildekode først, og organisasjoner kan bidra med funksjoner de trenger i stedet for å vente på leverandørveikart.
Å forstå hva åpen kildekode-programvare er og hvorfor den har blitt så utbredt, gir viktig kontekst for å utforske bekymringene organisasjoner må ta opp når de implementerer åpen kildekode-komponenter, som neste enhet dekker.