Czym jest open source i dlaczego jest ważny dla oprogramowania oraz blockchaina?

Czym jest open source i dlaczego jest ważny dla oprogramowania oraz blockchaina?

Czym jest open source?

Open source oznacza, że kod źródłowy oprogramowania jest dostępny, a licencja daje innym jasne prawa do używania, przeglądania, modyfikowania i rozpowszechniania tego kodu. Kod źródłowy to czytelna wersja programu, nad którą pracują programiści. Można go porównać do przepisu stojącego za aplikacją lub programem.

Samo umieszczenie kodu w internecie nie wystarcza. Bez odpowiedniej licencji nie jest automatycznie jasne, czy wolno Ci ten kod kopiować, zmieniać lub ponownie udostępniać. To właśnie licencja określa, co wolno, a czego nie.

Open source nie oznacza też automatycznie, że coś jest darmowe. Ktoś może sprzedawać oprogramowanie open source albo pobierać opłatę za jego dystrybucję, o ile licencja na to pozwala. Chodzi przede wszystkim o swobodę związaną z kodem, a nie o cenę.

Prawdziwa licencja open source nie może na przykład wprowadzać rozróżnienia między użytkownikami, grupami czy zastosowaniami. Nie można więc udostępnić oprogramowania wyłącznie dla określonej grupy albo tylko do użytku prywatnego i jednocześnie nazywać go open source. Warunki nie mogą też zależeć od jednej konkretnej technologii.

Przykład: Załóżmy, że programista publikuje program na licencji open source. Możesz analizować kod, stworzyć własną wersję i ją udostępnić, o ile przestrzegasz warunków tej licencji. Jeśli ten sam kod zostanie opublikowany bez licencji, nie masz automatycznie takich praw.


Najważniejsze informacje

  • Open source dotyczy zarówno kodu źródłowego, jak i praw nadawanych przez licencję.
  • Oprogramowanie open source często można używać, analizować, modyfikować i udostępniać.
  • Open source nie oznacza automatycznie, że oprogramowanie jest darmowe.
  • Licencja określa warunki korzystania i rozpowszechniania.
  • Publiczny kod źródłowy bez odpowiedniej licencji nie daje innym jasnych praw do korzystania z niego.

Jak działa oprogramowanie open source?

Oprogramowanie open source działa dlatego, że twórca publikuje kod źródłowy na podstawie licencji z jasnymi zasadami. Inni programiści mogą potem kopiować kod, przeglądać go i modyfikować. To, czy mogą również rozpowszechniać swoją zmodyfikowaną wersję, zależy od warunków licencji.

W wielu projektach używa się kontroli wersji. To system, który zapisuje, jaka zmiana została wprowadzona, przez kogo i kiedy. Taka zapisana zmiana nazywa się commit. Dzięki temu zwykle można krok po kroku prześledzić, jak rozwijało się oprogramowanie.

Powszechny sposób współpracy wygląda mniej więcej tak:

  1. Utwórz własną wersję roboczą Programista pracuje w branchu, czyli osobnej linii roboczej w ramach tego samego projektu. Czasem najpierw tworzy fork, czyli własną kopię całego projektu.

  2. Zmień kod W swojej wersji ktoś może naprawić błąd, dodać funkcję albo ulepszyć kod bez natychmiastowej zmiany oficjalnej wersji.

  3. Wyślij pull request Pull request to propozycja włączenia zmiany do oryginalnego projektu. Inni programiści mogą wtedy przejrzeć kod, omówić go i przetestować.

  4. Sprawdź zmianę Projekty mogą poddawać zmiany ocenie, uruchamiać automatyczne testy sprawdzające poprawność działania kodu oraz kontrolować go pod kątem możliwych błędów lub problemów bezpieczeństwa.

  5. Połącz albo nie połącz Jeśli osoby z odpowiednimi uprawnieniami wyrażą zgodę, mogą połączyć zmianę z oficjalną wersją. Często nazywa się to mergowaniem.

Fork nie musi zresztą nigdy wrócić do oryginalnego projektu. Ktoś może rozwijać własną kopię całkowicie samodzielnie. Dopiero gdy opiekunowie oryginalnego projektu zaakceptują zmianę, staje się ona częścią oficjalnej wersji.

GitHub, pull requesty i forki to wygodne i często używane sposoby współpracy, ale nie są warunkiem open source. Podstawą jest licencja.

Kto zarządza oprogramowaniem open source i jak wprowadza się zmiany?

Oprogramowanie open source nie ma jednego ogólnego administratora; każdy projekt sam określa, kto zarządza kodem i jak dopuszcza się zmiany. Mogą to być pojedynczy maintainerzy, ale też organizacja, fundacja lub społeczność projektu.

Maintainer to osoba, która pomaga utrzymać projekt w działaniu. Może na przykład oceniać zmiany, wydawać nowe wersje i decydować, kto ma dostęp do oficjalnego repozytorium. Repozytorium to miejsce, w którym znajduje się kod i historia zmian projektu.

Zewnętrzni programiści mogą zwykle zgłosić problem, zaproponować ulepszenie albo przesłać zmodyfikowany kod. Na platformach takich jak GitHub odbywa się to na przykład przez issue lub pull request. Issue to często zgłoszenie błędu, pytanie albo pomysł na ulepszenie.

Projekty mogą ustalić dodatkowe zasady, zanim kod zostanie połączony. Mogą to być obowiązkowe kontrole przez innych programistów, automatyczne testy albo reguły, które uniemożliwiają bezpośrednią zmianę ważnego kodu.

W przypadku blockchaina dochodzi jeszcze jedna kwestia: dodanie nowego kodu do oficjalnego projektu nie oznacza automatycznie, że zasady blockchaina również się zmienią.

Node to komputer, który uruchamia oprogramowanie i sprawdza transakcje oraz bloki zgodnie z zasadami blockchaina.

W przypadku Bitcoina BIP-y służą jako publiczne propozycje ulepszeń. W przypadku Ethereum podobną rolę dla standardów i zmian w sieci pełnią EIP-y. Taka propozycja może zawierać wyjaśnienie, opinie i wcześniejsze poprawki. Samo opublikowanie BIP-a lub EIP-a nie zmienia jednak automatycznie zasad Bitcoina ani Ethereum.

Samo połączenie kodu również tego nie robi. Aby doszło do rzeczywistej zmiany zasad protokołu, czyli technicznych reguł sieci, odpowiedni uczestnicy muszą ostatecznie uruchamiać oprogramowanie, które stosuje te same nowe zasady.

W przypadku Bitcoina żaden formalny ani nieformalny organ nie decyduje samodzielnie o przyjęciu BIP-ów. W Ethereum redaktorzy EIP zajmują się głównie zadaniami administracyjnymi i redakcyjnymi, a nie merytorycznym wyborem, czy dana propozycja jest pożądana.

Jakie licencje open source istnieją?

Dwa często spotykane rodzaje to licencje permisywne i licencje copyleft. Licencje permisywne nazywają się tak, ponieważ pozwalają na wiele: zwykle można swobodnie używać kodu, modyfikować go i ponownie rozpowszechniać. Copyleft to gra słów oparta na copyright. W takich licencjach również można modyfikować kod i go udostępniać, ale oprogramowanie pochodne często musi pozostać dostępne na tych samych otwartych warunkach.

Oto kilka znanych licencji:

  • MIT To licencja permisywna. Możesz używać oprogramowania, kopiować je, modyfikować, rozpowszechniać, a nawet wykorzystywać komercyjnie. Musisz jednak dołączyć informację o prawach autorskich i tekst licencji. Oprogramowanie jest dostarczane bez gwarancji i z ograniczoną odpowiedzialnością.

  • BSD-2-Clause i BSD-3-Clause To również licencje permisywne. Pozwalają na szerokie ponowne wykorzystanie i rozpowszechnianie, zwykle pod warunkiem zachowania informacji o prawach autorskich i licencji.

  • Apache-2.0 Apache License 2.0 jest także licencją permisywną. Zawiera ponadto zasady dotyczące patentów osób, które wnoszą kod do projektu.

  • GPL-3.0-only GPL to licencja copyleft. Mówiąc prosto, ma ona zapewnić, że swoboda dzielenia się kodem i jego modyfikowania zostaje zachowana także wtedy, gdy oprogramowanie jest dalej rozpowszechniane. Osoba rozpowszechniająca oprogramowanie na licencji GPLv3 musi na określonych warunkach udostępnić również powiązany kod źródłowy.

  • MPL-2.0 Mozilla Public License 2.0 to forma copyleft, która skupia się przede wszystkim na poszczególnych plikach. Jeśli zmienisz plik objęty MPL, ten zmodyfikowany plik zwykle musi pozostać dostępny na tych samych otwartych warunkach. Inne pliki w większym projekcie mogą jednak podlegać innym zasadom.

Warto wiedzieć: etykiety takie jak permisywna, silne copyleft i słabe copyleft są pomocne jako wstępne wyjaśnienie, ale dokładne warunki zawsze znajdują się w treści licencji. Szczególnie gdy różne elementy oprogramowania z różnymi licencjami są łączone, sytuacja może się skomplikować.

Dlaczego open source jest ważny dla crypto i blockchaina?

Open source jest ważny dla crypto i blockchaina, ponieważ node’y uruchamiają oprogramowanie, które sprawdza transakcje i bloki według stałych zasad. Osoba, która sama uruchamia node, może więc chcieć sprawdzić, jakie dokładnie reguły wykonuje to oprogramowanie.

W przypadku Bitcoina Bitcoin Core jest dobrze znanym przykładem. Kod źródłowy jest publicznie dostępny, a oprogramowanie jest rozpowszechniane na licencji MIT. Dzięki temu programiści i inni zainteresowani mogą analizować kod, proponować wkład albo budować własną wersję w granicach tej licencji.

Ethereum można używać z kilkoma różnymi programami open source, które nazywają się clients. To oprogramowanie przetwarza między innymi transakcje i pomaga komputerom uczestniczyć w sieci Ethereum. Różne clients są tworzone przez różne zespoły i czasem korzystają z różnych języków programowania.

Dlaczego to jest przydatne? Gdyby sieć była całkowicie zależna od jednego programu, poważny błąd w nim mógłby jednocześnie dotknąć wielu uczestników. Kilka niezależnych clients sprawia, że sieć jest mniej zależna od jednej wersji oprogramowania.

Te różne clients Ethereum muszą oczywiście przestrzegać tych samych istotnych specyfikacji. Specyfikacje to wspólne ustalenia techniczne dotyczące działania sieci. Chodzi na przykład o zasady dotyczące transakcji, bloków i sposobu, w jaki sieć osiąga zgodę co do tego, które dane są ważne.

BIP-y i EIP-y pomagają też w publicznym uzgadnianiu zmian. Uwidaczniają propozycje, wyjaśnienia techniczne, opinie i poprawki. Jest to ważne w crypto, ponieważ zmiany zasad mogą mieć duże konsekwencje dla wszystkich, którzy uruchamiają oprogramowanie, przechowują crypto albo korzystają z aplikacji takich jak smart contracts.

Open source umożliwia również tworzenie niezależnych wersji i forków. Daje to programistom i użytkownikom większy wybór. Ale sam otwarty kod nie gwarantuje, że blockchain jest bezpieczny, zdecentralizowany lub szeroko używany. Kod musi być dobry, poprawnie wdrożony i ostatecznie używany przez node’y oraz innych uczestników.

Jakie są zalety open source?

Największą zaletą open source jest to, że użytkownicy mogą nie tylko korzystać z oprogramowania, ale też je analizować, modyfikować i udostępniać. Jest to przydatne, gdy organizacja chce dopasować oprogramowanie do własnych potrzeb technicznych lub operacyjnych.

Ponadto publiczny kod umożliwia kontrolę. Możesz przeglądać historię wersji i sprawdzać, co zostało zmienione. W procesie opartym na pull requestach inni mogą omówić zmianę, zanim zostanie połączona. Automatyczne testy i kontrole bezpieczeństwa mogą pomóc wcześniej wykryć błędy.

Open source może też ułatwiać współpracę. Programiści mogą ponownie wykorzystywać istniejące elementy zamiast budować wszystko od zera. Oczywiście jest to możliwe tylko wtedy, gdy licencje są ze sobą zgodne i wszyscy przestrzegają warunków.

Fork daje jeszcze jedną korzyść: ciągłość. Załóżmy, że grupa programistów chce obrać inny kierunek techniczny niż pierwotni maintainerzy. Wtedy może kontynuować pracę na własnej kopii. Dzięki temu projekt nie musi się zatrzymać tylko dlatego, że pojawił się spór o jego przyszłość.

W blockchainie zaletą jest różnorodność klientów. Oznacza to, że istnieje kilka różnych clients: programów, dzięki którym komputery uczestniczą na przykład w Ethereum. Jeśli te clients są tworzone przez różne zespoły, sieć jest mniej zależna od jednej wersji oprogramowania. W efekcie mniejsze jest ryzyko, że jeden błąd od razu dotknie wszystkie node’y, czyli komputery utrzymujące sieć, w ten sam sposób.

Ważne jednak: to, że możesz przejrzeć kod, nie oznacza, że eksperci rzeczywiście dokładnie go sprawdzili. Open source umożliwia kontrolę, ale nie jest dowodem na to, że każdy błąd został już znaleziony lub naprawiony.

Jakie ryzyka i ograniczenia ma open source?

Open source nie jest certyfikatem bezpieczeństwa. Nawet publiczny kod może zawierać błędy programistyczne, podatności lub niebezpieczne decyzje projektowe. To, że każdy może zobaczyć kod, nie oznacza, że wystarczająco wielu ekspertów faktycznie to zrobiło.

Utrzymanie to ważne ryzyko. Oprogramowanie zwykle wymaga stałej opieki, na przykład w zakresie błędów, aktualizacji bezpieczeństwa i nowych dependencies. Dependency to zewnętrzny element oprogramowania, od którego zależy program. Jeśli projekt nie jest dobrze utrzymywany, znane problemy mogą pozostawać nierozwiązane.

Im więcej zewnętrznych elementów oprogramowania używa program, tym więcej miejsc może stać się źródłem problemu bezpieczeństwa. Złośliwe lub przejęte dependency może więc zagrozić całemu systemowi. Dlatego warto sprawdzić, czy każde dependency jest naprawdę potrzebne, skąd pochodzi i czy używana wersja jest nadal aktualna.

W przypadku oprogramowania open source znaczenie mają też licencje. Jeśli łączysz elementy objęte różnymi licencjami, mogą obowiązywać warunki dotyczące udostępniania kodu źródłowego, informacji o prawach autorskich, zmian lub patentów. To szczególnie ważne do sprawdzenia przed rozpowszechnieniem oprogramowania.

Forki mają również swoją ciemniejszą stronę. Dają swobodę wyboru, ale mogą rozpraszać programistów, użytkowników, dokumentację i utrzymanie bezpieczeństwa między wieloma projektami. Fork potrzebuje własnych maintainerów, zabezpieczeń, nowych wersji oraz użytkowników lub operatorów node’ów, aby dobrze działać w dłuższej perspektywie.

W crypto istnieje jeszcze jeden punkt kontroli. Kod w publicznym repozytorium nie musi automatycznie być dokładnie tym samym kodem, który instalujesz. Dlatego ważne jest, aby sprawdzić, skąd pochodzi oprogramowanie i czy wersja, którą instalujesz, odpowiada oficjalnej wersji.

W przypadku smart contracts możesz dodatkowo sprawdzić, czy opublikowany kod odpowiada kontraktowi, który faktycznie działa na blockchainie.

Krótko mówiąc: open source daje więcej możliwości kontroli, ale nie zwalnia Cię z tej kontroli całkowicie. Przy oprogramowaniu i projektach crypto warto więc zwracać uwagę także na utrzymanie, praktyki bezpieczeństwa, zależności i wersję, z której faktycznie korzystasz.

Podsumowanie

Open source oznacza, że kod źródłowy jest dostępny na podstawie licencji, która daje jasne prawa do używania, analizowania, modyfikowania i udostępniania oprogramowania. Sama licencja jest tu co najmniej tak samo ważna jak sam kod.

W przypadku crypto i blockchaina open source jest szczególnie istotny, ponieważ node’y wykonują zasady protokołu, a różne niezależne clients mogą sprawić, że sieć będzie mniej zależna od jednego programu. Jednocześnie publiczny kod nie gwarantuje bezpieczeństwa ani jakości. Nadal równie ważne są dobre kontrole, aktywne utrzymanie i bezpieczne dependencies.

Traktuj więc open source przede wszystkim jako mocną podstawę przejrzystości, współpracy i swobody wyboru. Daje możliwości, ale nadal trzeba sprawdzić, jak projekt jest zarządzany i czy używane oprogramowanie jest rzetelnie utrzymywane.

O Finst

Finst to wiodąca platforma kryptowalutowa w Holandii, oferująca bardzo niskie opłaty transakcyjne, bezpieczeństwo klasy instytucjonalnej oraz szeroki zakres usług crypto, takich jak trading, przechowywanie aktywów, staking oraz wpłaty i wypłaty fiat. Finst, założona przez byłych kluczowych członków zespołu DEGIRO, jest autoryzowana jako dostawca usług w zakresie kryptoaktywów na mocy MiCAR przez Holenderski Urząd ds. Rynków Finansowych (AFM) i obsługuje klientów detalicznych oraz instytucjonalnych w 30 krajach europejskich.

Platforma krypto dla wszystkich inwestorów

Niezależnie od tego, czy aktywnie handlujesz, czy inwestujesz długoterminowo, Finst pomaga Ci rozwijać portfel krypto z pewnością i spokojem.

Zarejestruj się