Co to jest oprogramowanie typu open source?

Ukończone

Oprogramowanie typu open source to oprogramowanie , którego kod źródłowy jest publicznie dostępny dla każdego, kto może sprawdzać, modyfikować i rozpowszechniać. Inicjatywa open source udostępnia powszechnie akceptowaną definicję:

"Oprogramowanie typu open source to oprogramowanie z kodem źródłowym, które każdy może sprawdzać, modyfikować i ulepszać. Właściciel praw autorskich przyznaje użytkownikom prawa do badania, zmiany i rozpowszechniania oprogramowania wszystkim osobom i w dowolnym celu, z zastrzeżeniem warunków licencji open source".

Ta definicja podkreśla kilka kluczowych zasad:

  • Dostępność kodu źródłowego: Pełny kod źródłowy musi być publicznie dostępny, a nie tylko pliki binarne plików wykonywalnych.
  • Swoboda modyfikowania: Użytkownicy mogą zmieniać oprogramowanie zgodnie ze swoimi potrzebami, naprawiać błędy lub dodawać funkcje.
  • Prawa do redystrybucji: Użytkownicy mogą udostępniać oprogramowanie innym osobom w postaci oryginalnej lub zmodyfikowanej.
  • Licencyjne: Prawa użytkowania są definiowane przez licencję typu open source, która określa uprawnienia, ograniczenia i obowiązki.

Oprogramowanie typu open source różni się zasadniczo od oprogramowania własnościowego, w którym kod źródłowy pozostaje tajny, a prawa użytkowania są ściśle kontrolowane przez właściciela praw autorskich.

Model typu open source do współpracy

Programowanie typu open source obejmuje tworzenie wspólnego oprogramowania z wieloma współautorami:

Rozwój oparty na społeczności

  • Rozproszeni współautorzy: Deweloperzy z całego świata współtworzą kod, dokumentację, przeprowadzają testy i zapewniają pomoc techniczną.
  • Dobrowolny udział: Wielu współautorów dobrowolnie uczestniczy, motywowanych rozwiązywaniem problemów, uczeniem się, budowaniem reputacji lub narzędziami pomocniczymi, z których korzystają.
  • Merytokracja: Wpływ w projektach zwykle koreluje z jakością i ilością wkładów, a nie hierarchią organizacyjną.
  • Przezroczyste procesy: Programowanie odbywa się w repozytoriach publicznych, w których każdy może obserwować dyskusje, decyzje i zmiany.

Przepływy pracy zespołowej

  • Repozytoria publiczne: Kod jest hostowany na platformach, takich jak GitHub, GitLab lub Bitbucket, gdzie każdy może go wyświetlać.
  • Śledzenie problemów: Usterki i żądania funkcji są śledzone publicznie, umożliwiając członkom społeczności identyfikowanie problemów i proponowanie rozwiązań.
  • Przeglądy pull requestów: Współautorzy przesyłają zmiany za pośrednictwem pull requestów, które są przeglądane przez opiekunów i innych członków społeczności przed scaleniem.
  • Zarządzanie wydaniami: Utrzymujący koordynują wydania, zapewniając stabilność i zgodność przy jednoczesnym uwzględnianiu wkładów społeczności.

Modele ładu projektu

Różne projekty typu open source przyjmują różne podejścia do zapewniania ładu:

  • Życzliwy dyktator: Jedna osoba (często założyciel) podejmuje ostateczne decyzje dotyczące kierunku projektu (np. Python z Guido van Rossum historycznie).
  • Zespół podstawowy: Niewielka grupa opiekunów zbiorczo podejmuje decyzje poprzez konsensus lub głosowanie.
  • Zarządzanie fundacjami: Duże projekty często tworzą fundacje (takie jak Apache Foundation, Linux Foundation), które zapewniają strukturę prawną, zasoby i ramy zarządzania.
  • Sponsoring korporacyjny: Wiele projektów open source jest utrzymywanych głównie przez pracowników firm, które zależą od oprogramowania.

Powszechne wdrażanie oprogramowania open source

Oprogramowanie typu open source stało się wszechobecne we wszystkich sektorach technologii:

Statystyki dotyczące wdrażania w branży

  • Użycie przedsiębiorstwa: Ponad 90% przedsiębiorstw korzysta z oprogramowania open source w środowiskach produkcyjnych.
  • Infrastruktura internetowa: Większość serwerów internetowych działa w systemie Linux (open source), udostępnia zawartość za pośrednictwem oprogramowania Apache lub Nginx (open source) i używa baz danych, takich jak PostgreSQL lub MySQL (open source).
  • Przetwarzanie w chmurze: Główne platformy w chmurze szeroko używane i obsługują technologie typu open source — Kubernetes, Docker, Terraform i wiele innych narzędzi typu open source stanowią podstawę nowoczesnej infrastruktury chmury.
  • Urządzenia przenośne: Android, najpopularniejszy na świecie system operacyjny mobilny, jest oparty na jądrze systemu Linux i zawiera obszerne składniki typu open source.

Kompozycja stosu technologii

Nowoczesne stosy technologii są głównie open source:

  • Systemy operacyjne: System Linux obsługuje infrastrukturę chmury, kontenery i wiele systemów osadzonych.
  • Języki programowania: Python, JavaScript, Java, Go, Rust, Ruby, PHP — najpopularniejsze języki to open source.
  • Baz danych: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch dominuje we wdrożeniach baz danych.
  • Technologie internetowe: Platforma React, Angular, Vue.js, Express, Django, Rails umożliwia tworzenie aplikacji internetowych.
  • Narzędzia programistyczne: Git, Docker, Kubernetes, Jenkins, VS Code to podstawowe narzędzia programistyczne typu open source.

Objęcie rozwiązań typu open source przez firmę Microsoft

Firma Microsoft ilustruje transformację w podejściu przedsiębiorstw względem oprogramowania typu open source.

Zmiana historyczna

Firma Microsoft historycznie postrzegała oprogramowanie typu open source jako zagrożenie dla własnego modelu biznesowego oprogramowania. Zmieniło się to dramatycznie w ciągu ostatniej dekady, ponieważ firma uznała strategiczne znaczenie open source.

Open source na platformie Azure

Platforma Azure intensywnie integruje technologie open source:

Zrzut ekranu przedstawiający narzędzia i technologie open source na platformie Azure.

Języki i środowiska uruchomieniowe: Platforma Azure obsługuje języki Python, Node.js, Java, PHP, Ruby, Go i inne języki typu open source jako opcje platformy pierwszej klasy.

Baz danych: Platforma Azure oferuje usługi zarządzane dla baz danych PostgreSQL, MySQL, MariaDB i Redis wraz z zastrzeżonymi ofertami.

Orkiestracja kontenerów: Usługa Azure Kubernetes Service (AKS) udostępnia zarządzaną platformę Kubernetes, platformę aranżacji kontenerów typu open source.

Narzędzia programistyczne: Usługa Azure DevOps integruje się z usługami Git, Jenkins i innymi narzędziami typu open source, podczas gdy usługa GitHub (przejęta przez firmę Microsoft) to największa na świecie platforma do tworzenia rozwiązań typu open source.

Dane i analiza: Platforma Azure obsługuje platformy Apache Spark, Hadoop, Kafka i inne technologie danych big data typu open source.

Przekształcenie platformy .NET

Platforma .NET demonstruje kompleksowe zobowiązanie firmy Microsoft do open source:

Platforma .NET typu open source: Firma Microsoft wydała platformę .NET Core (teraz .NET 5+) jako oprogramowanie open source w ramach licencji MIT, dzięki czemu cała platforma jest bezpłatnie dostępna z kodem źródłowym. Środowisko uruchomieniowe platformy .NET, biblioteki, kompilatory i narzędzia są typu open source.

Programowanie międzyplatformowe: Poprzez udostępnienie .NET jako open source Microsoft umożliwił programowanie międzyplatformowe na systemach Windows, Linux i macOS, co dramatycznie rozszerzyło zasięg platformy .NET.

Wkład społeczności: Repozytoria platformy .NET na GitHub otrzymują tysiące wkładów od deweloperów spoza Microsoftu, a firma aktywnie monitoruje i akceptuje ulepszenia społeczności.

Zależności typu open source: aplikacje ASP.NET Core zwykle zawierają wiele składników typu open source:

  • Biblioteki frontonu: jQuery, React, Angular, Vue.js umożliwiają korzystanie z zaawansowanych interfejsów użytkownika.
  • Biblioteki narzędzi: Newtonsoft.Json, Serilog, AutoMapper i niezliczone inne zapewniają typowe funkcje.
  • Struktury testowania: xUnit, NUnit, Moq obsługują programowanie oparte na testach.

Wkład w projekty open source

Firma Microsoft aktywnie przyczynia się do projektów open source poza własnymi:

Jądro systemu Linux: Firma Microsoft przyczynia się do jądra systemu Linux, poprawiając integrację Hyper-V i obsługę infrastruktury platformy Azure.

Kubernetes: Firma Microsoft jest głównym współautorem platformy Kubernetes, pomagając kształtować platformę, która obsługuje usługę AKS.

Inicjatywy open source: Firma Microsoft sponsoruje wydarzenia typu open source, finansuje krytyczną infrastrukturę typu open source i zatrudnia deweloperów do pracy w pełnym wymiarze godzin w projektach open source.

Projekty open source utworzone przez firmę Microsoft

Oprócz współtworzenia istniejących projektów firma Microsoft tworzy znaczące oprogramowanie typu open-source i udostępnia je publicznie.

Visual Studio Code: Najpopularniejszym edytorem kodu jest open source z rozszerzeniami, motywami i ulepszeniami wprowadzonych przez społeczność globalną.

TypeScript: Język firmy Microsoft do bezpiecznego typowania w JavaScript jest open-source i powszechnie stosowany.

PowerShell Core: Platforma automatyzacji firmy Microsoft to platforma typu open source i międzyplatformowa.

.NET Foundation: Firma Microsoft założyła program .NET Foundation, aby obsługiwać projekty open source w ekosystemie platformy .NET, zapewniając zasoby, ład i pomoc techniczną społeczności.

Aby uzyskać więcej informacji, zobacz witrynę internetową platformy .NET Foundation.

Uzasadnienie strategiczne

Objęcie rozwiązań typu open source przez firmę Microsoft odzwierciedla strategiczne decyzje biznesowe:

Adopcja przez deweloperów: Deweloperzy preferują narzędzia open source i języki. Wspierając oprogramowanie open source, firma Microsoft przyciąga deweloperów do swoich platform.

Biznes w chmurze: Obciążenia typu open source napędzają wdrażanie chmury. Doskonała obsługa oprogramowania open source na platformie Azure sprawia, że platforma jest bardziej atrakcyjna.

Szybkość innowacji: Open source umożliwia szybsze wprowadzanie innowacji dzięki wkładom społeczności, zmniejszając obciążenie programistyczne firmy Microsoft.

Wzrost ekosystemu: Społeczności open source tworzą cenne rozszerzenia, narzędzia i wiedzę, które zwiększają wartość platformy.

Pozycjonowanie konkurencyjne: Ponieważ konkurenci (AWS, Google Cloud) intensywnie obsługują oprogramowanie open source, firma Microsoft musi odpowiadać lub przekraczać możliwości open source.

Dlaczego organizacje wybierają open source

Organizacje wybierają oprogramowanie typu open source z wielu powodów:

Zagadnienia dotyczące kosztów: Wyeliminowanie opłat licencyjnych zmniejsza koszty bezpośrednie, szczególnie ważne podczas wdrażania oprogramowania na dużą skalę lub tworzenia produktów, w których koszty licencjonowania zostaną przekazane klientom.

Elastyczność i kontrola: Dostęp do kodu źródłowego oznacza, że organizacje mogą modyfikować oprogramowanie w celu spełnienia określonych potrzeb, niezależnie naprawiać krytyczne usterki i nie są zablokowane na osi czasu dostawców dla funkcji lub poprawek.

Przejrzystość i bezpieczeństwo: Publiczny kod źródłowy umożliwia inspekcje zabezpieczeń, przegląd społeczności identyfikuje luki w zabezpieczeniach szybciej, a brak ukrytych backdoorów lub zbierania danych zapewnia pewność.

Unikanie blokady dostawcy: Oprogramowanie typu open source można zazwyczaj wdrażać w dowolnym miejscu, zmniejszając zależność od określonych dostawców i poprawiając pozycje negocjacyjne.

Pomoc techniczna społeczności: Aktywne społeczności open source udostępniają fora, dokumentację, samouczki i pomoc równorzędną, często rywalizując lub przekraczając jakość wsparcia komercyjnego.

Innowacje i funkcje: Najnowocześniejsze technologie często pojawiają się w pierwszej kolejności w środowisku open source, a organizacje mogą współtworzyć potrzebne funkcje, zamiast czekać na plany dostawcy.

Zrozumienie, czym jest oprogramowanie typu open source i dlaczego stało się tak szeroko przyjęte, zapewnia podstawowy kontekst do eksplorowania problemów, z którymi muszą się zapoznać organizacje podczas implementowania składników typu open source, które obejmuje następna lekcja.