Was ist Open-Source-Software?

Abgeschlossen

Open-Source-Software ist Software , deren Quellcode für jeden öffentlich zugänglich gemacht wird, um sie zu prüfen, zu ändern und zu verteilen. Die Open Source Initiative bietet die weit akzeptierte Definition:

"Open-Source-Software ist Software mit Quellcode, die jeder prüfen, ändern und verbessern kann. Der Copyrightinhaber gewährt den Nutzern das Recht, die Software zu studieren, zu ändern und an jeden Zweck zu verteilen, vorbehaltlich der Bedingungen einer Open-Source-Lizenz."

Diese Definition betont mehrere Schlüsselprinzipien:

  • Verfügbarkeit des Quellcodes: Der vollständige Quellcode muss öffentlich zugänglich sein, nicht nur ausführbare Binärdateien.
  • Freiheit zum Ändern: Benutzer können die Software entsprechend ihren Anforderungen ändern, Fehler beheben oder Features hinzufügen.
  • Umverteilungsrechte: Benutzer können die Software entweder in originaler oder geänderter Form für andere Personen freigeben.
  • Lizenzbedingungen: Nutzungsrechte werden durch eine Open Source-Lizenz definiert, die Berechtigungen, Einschränkungen und Verpflichtungen angibt.

Open-Source-Software unterscheidet sich grundsätzlich von proprietärer Software, bei der der Quellcode geheim bleibt, und Nutzungsrechte werden eng vom Copyrightinhaber kontrolliert.

Das gemeinsame Open-Source-Modell

Die Open-Source-Entwicklung umfasst die gemeinsame Softwareerstellung mit mehreren Mitwirkenden:

Communitygesteuerte Entwicklung

  • Verteilte Mitwirkende: Entwickler aus der ganzen Welt tragen Code, Dokumentation, Tests und Support bei.
  • Freiwillige Teilnahme: Viele Mitwirkende beteiligen sich freiwillig, motiviert durch Lösung von Problemen, Lernen, Reputationsaufbau oder unterstützenden Tools, die sie verwenden.
  • Leistungsgesellschaft: Der Einfluss in Projekten korreliert in der Regel mit Qualität und Menge von Beiträgen und nicht mit der Organisationshierarchie.
  • Transparente Prozesse: Die Entwicklung erfolgt in öffentlichen Repositorys, in denen jeder Diskussionen, Entscheidungen und Änderungen beobachten kann.

Zusammenarbeitsworkflows

  • Öffentliche Repositorys: Code wird auf Plattformen wie GitHub, GitLab oder Bitbucket gehostet, wo jeder ihn anzeigen kann.
  • Problemverfolgung: Fehler und Featureanforderungen werden öffentlich nachverfolgt, sodass Communitymitglieder Probleme identifizieren und Lösungen vorschlagen können.
  • Pull-Request-Überprüfungen: Mitwirkende übermitteln Änderungen über Pull-Requests, die von Betreuern und anderen Community-Mitgliedern überprüft werden, bevor sie integriert werden.
  • Versionsverwaltung: Betreuer koordinieren Freigaben, sorgen für Stabilität und Kompatibilität bei der Einbeziehung von Communitybeiträgen.

Projektgovernancemodelle

Verschiedene Open-Source-Projekte übernehmen verschiedene Governanceansätze:

  • Benevolenter Diktator: Eine einzelne Person (oft der Gründer) trifft endgültige Entscheidungen über die Projektrichtung (z.B. Python mit Guido van Rossum historisch).
  • Kernteam: Eine kleine Gruppe von Betreuern trifft gemeinsam Entscheidungen durch Konsens oder Abstimmung.
  • Stiftungsgovernance: Große Projekte erstellen häufig Stiftungen (wie Apache Foundation, Linux Foundation), die rechtliche Struktur, Ressourcen und Governance-Frameworks bereitstellen.
  • Unternehmenssponsoring: Viele Open-Source-Projekte werden in erster Linie von Mitarbeitern von Unternehmen verwaltet, die von der Software abhängig sind.

Weit verbreitete Einführung von Open-Source-Software

Open-Source-Software ist in allen Bereichen der Technologie allgegenwärtig:

Statistiken zur Branchenakzeptanz

  • Unternehmensnutzung: Über 90% von Unternehmen verwenden Open-Source-Software in Produktionsumgebungen.
  • Internetinfrastruktur: Der Großteil der Webserver wird unter Linux (Open-Source) ausgeführt, inhalte über Apache oder Nginx (Open-Source) bedient und Datenbanken wie PostgreSQL oder MySQL (Open-Source) verwenden.
  • Cloud-Computing: Große Cloudplattformen nutzen und unterstützen Open-Source-Technologien – Kubernetes, Docker, Terraform und zahlreiche weitere Open-Source-Tools bilden die Grundlage für moderne Cloudinfrastrukturen.
  • Mobile Geräte: Android, das weltweit beliebteste mobile Betriebssystem, basiert auf dem Linux-Kernel und umfasst umfangreiche Open-Source-Komponenten.

Komposition von Technologiestapeln

Moderne Technologiestapel sind überwiegend Open Source:

  • Betriebssysteme: Linux unterstützt Cloudinfrastruktur, Container und viele eingebettete Systeme.
  • Programmiersprachen: Python, JavaScript, Java, Go, Rust, Ruby, PHP – die beliebtesten Sprachen sind Open Source.
  • Datenbanken: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch dominieren Datenbankbereitstellungen.
  • Webtechnologien: React, Angular, Vue.js, Express, Django, Rails ermöglichen die Webanwendungsentwicklung.
  • Entwicklungstools: Git, Docker, Kubernetes, Jenkins, VS Code sind wichtige Open-Source-Entwicklungstools.

Microsofts Umarmung von Open Source

Microsoft veranschaulicht die Transformation der Unternehmenseinstellungen in Richtung Open-Source-Software:

Historischer Wandel

Microsoft betrachtete Open Source historisch als Bedrohung für sein proprietäres Software-Geschäftsmodell. Dies hat sich im vergangenen Jahrzehnt dramatisch verändert, da das Unternehmen die strategische Bedeutung von Open Source erkannt hat.

Open-source in Azure

Azure integriert umfassende Open-Source-Technologien:

Screenshot der Open Source-Tools und -Technologien in Azure.

Sprachen und Laufzeiten: Azure unterstützt Python, Node.js, Java, PHP, Ruby, Go und andere Open-Source-Sprachen als Plattformoptionen der ersten Klasse.

Datenbanken: Azure bietet verwaltete Dienste für PostgreSQL, MySQL, MariaDB und Redis zusammen mit proprietären Angeboten an.

Container-Orchestrierung: Azure Kubernetes Service (AKS) bietet verwaltete Kubernetes, die Open-Source-Container-Orchestrierungsplattform.

Entwicklungstools: Azure DevOps ist in Git, Jenkins und andere Open-Source-Tools integriert, während GitHub (von Microsoft erworben) die weltweit größte Plattform für die Open-Source-Entwicklung ist.

Daten und Analysen: Azure unterstützt Apache Spark, Hadoop, Kafka und andere Open-Source-Big Data-Technologien.

.NET-Transformation

Die .NET-Plattform veranschaulicht das umfassende Engagement von Microsoft für Open Source:

Open-Sourcing .NET: Microsoft hat .NET Core (jetzt .NET 5+) als Open Source unter der MIT-Lizenz veröffentlicht und die gesamte Plattform frei mit Quellcode zur Verfügung gestellt. Die .NET-Laufzeit, Bibliotheken, Compiler und Tools sind alle Open Source.

Plattformübergreifende Entwicklung: Durch die Open-Source-Veröffentlichung von .NET ermöglichte Microsoft plattformübergreifende Entwicklung unter Windows, Linux und macOS und erweiterte damit die Reichweite von .NET erheblich.

Beiträge der Gemeinschaft: Die .NET-Repositorys auf GitHub erhalten Tausende von Beiträgen von Entwicklern außerhalb von Microsoft, wobei das Unternehmen aktiv community-Verbesserungen überprüft und akzeptiert.

Open-Source-Abhängigkeiten: ASP.NET Core-Anwendungen enthalten in der Regel viele Open-Source-Komponenten:

  • Frontend-Bibliotheken: jQuery, React, Angular, Vue.js ermöglichen umfassende Benutzeroberflächen.
  • Hilfsbibliotheken: Newtonsoft.Json, Serilog, AutoMapper und unzählige andere bieten allgemeine Funktionen.
  • Testframeworks: xUnit, NUnit, Moq unterstützen testgesteuerte Entwicklung.

Beitragen zu Open-Source-Projekten

Microsoft trägt aktiv zu Open-Source-Projekten über seine eigenen hinaus bei:

Linux-Kernel: Microsoft trägt zum Linux-Kernel bei, verbessert Hyper-V Integration und unterstützung der Azure-Infrastruktur.

Kubernetes: Microsoft ist ein wichtiger Beitrag zu Kubernetes und hilft dabei, die Plattform zu gestalten, die AKS unterstützt.

Open-Source-Initiativen: Microsoft fördert Open-Source-Ereignisse, finanziert kritische Open Source-Infrastruktur und beschäftigt Entwickler, um Vollzeit an Open Source-Projekten zu arbeiten.

Von Microsoft erstellte Open-Source-Projekte

Über den Beitrag zu bestehenden Projekten hinaus erstellt Microsoft wichtige Software und stellt sie als Open-Source bereit:

Visual Studio Code: Der beliebteste Code-Editor ist Open Source mit Erweiterungen, Designs und Verbesserungen, die von einer globalen Community beigetragen wurden.

TypeScript: Die Sprache von Microsoft für die typsichere JavaScript-Entwicklung ist Open Source und weit verbreitet.

PowerShell Core: Das Automatisierungsframework von Microsoft ist Open Source und plattformübergreifend.

.NET Foundation: Microsoft hat die .NET Foundation eingerichtet, um Open-Source-Projekte im .NET-Ökosystem zu unterstützen und Ressourcen, Governance und Communityunterstützung bereitzustellen.

Weitere Informationen finden Sie auf der .NET Foundation-Website.

Strategische Rationale

Die Nutzung von Open Source von Microsoft spiegelt strategische Geschäftsentscheidungen wider:

Entwicklerakzeptanz: Entwickler bevorzugen Open-Source-Tools und -Sprachen. Durch die Unterstützung von Open Source zieht Microsoft Entwickler auf seine Plattformen an.

Cloudgeschäft: Open-Source-Workloads fördern die Cloudakzeptanz. Hervorragende Open-Source-Unterstützung auf Azure macht die Plattform attraktiver.

Innovationsgeschwindigkeit: Open-Source ermöglicht schnellere Innovationen durch Communitybeiträge und verringert die Entwicklungsbelastung von Microsoft.

Ökosystemwachstum: Open-Source-Communitys schaffen wertvolle Erweiterungen, Tools und Wissen, die den Plattformwert verbessern.

Wettbewerbspositionierung: Da Wettbewerber (AWS, Google Cloud) Open Source umfassend unterstützen, muss Microsoft ihre Open Source-Funktionen erfüllen oder überschreiten.

Warum Organisationen Open Source auswählen

Organisationen wählen aus mehreren Gründen Open-Source-Software aus:

Kostenüberlegungen: Die Beseitigung von Lizenzgebühren reduziert direkte Kosten, insbesondere bei der Bereitstellung von Software im Maßstab oder beim Erstellen von Produkten, bei denen Lizenzkosten an Kunden weitergegeben werden.

Flexibilität und Kontrolle: Der Zugriff auf Quellcode bedeutet, dass Organisationen Software ändern können, um bestimmte Anforderungen zu erfüllen, kritische Fehler unabhängig zu beheben und nicht für Features oder Korrekturen von Lieferantenzeitachsen gesperrt sind.

Transparenz und Sicherheit: Öffentlicher Quellcode ermöglicht Sicherheitsprüfungen, Community-Überprüfungen identifizieren Sicherheitsrisiken schneller, und das Fehlen versteckter Hintertüren oder Datensammlung sorgt für Vertrauen.

Vermeiden der Anbietersperrung: Open-Source-Software kann in der Regel überall bereitgestellt werden, wodurch die Abhängigkeit von bestimmten Anbietern verringert und Verhandlungspositionen verbessert werden.

Community-Support: Aktive Open-Source-Communitys bieten Foren, Dokumentationen, Lernprogramme und Peer-Unterstützung, häufig konkurrierend oder übersteigende kommerzielle Supportqualität.

Innovation und Features: Modernste Technologien entstehen häufig zuerst in Open Source, und Organisationen können features beitragen, die sie benötigen, anstatt auf Lieferanten-Roadmaps zu warten.

Das Verständnis, was Open-Source-Software ist und warum es so weit verbreitet wurde, bietet einen wesentlichen Kontext für die Untersuchung der Bedenken, die Organisationen bei der Implementierung von Open-Source-Komponenten behandeln müssen, die die nächste Einheit abdeckt.