Lekcja 30. Prawo autorskie w programowaniu
PodstawowyPo co się tego uczymy?
Kod, który piszesz, muzyka której słuchasz podczas pracy, obrazki które wykorzystujesz w aplikacji — wszystko to podlega prawu autorskiemu. Podstawa programowa (INF.04.3.9) wymaga znajomości podstaw prawa autorskiego w kontekście programowania. To wiedza, która chroni CIEBIE (jako twórcę) i uchroni Cię przed niechcianym naruszeniem cudzych praw (np. przy używaniu gotowych bibliotek czy grafik w projekcie).
Teoria
Program komputerowy w Polsce jest chroniony prawem autorskim od momentu jego stworzenia (ustalenia), bez konieczności rejestracji czy oznaczania symbolem ©. Prawa autorskie dzielą się na dwie kategorie:
- prawa osobiste — niezbywalne, nie można się ich zrzec ani ich sprzedać. Obejmują m.in. prawo do oznaczenia utworu swoim nazwiskiem (albo pseudonimem) oraz prawo do integralności utworu (sprzeciwu wobec zniekształcania go);
- prawa majątkowe — można je sprzedać, przekazać w umowie lub udzielić licencji na korzystanie z nich. To one decydują, kto może kopiować, rozpowszechniać czy modyfikować program. W Polsce prawa majątkowe do programu wygasają standardowo 70 lat po śmierci twórcy (a dla programów tworzonych w ramach zatrudnienia — od daty rozpowszechnienia, jeśli prawa przejął pracodawca).
Licencje oprogramowania określają, na jakich warunkach można z niego korzystać:
- licencje własnościowe (proprietary) — kod źródłowy jest zamknięty, użytkownik dostaje tylko prawo do uruchamiania programu na określonych warunkach (np. Microsoft Office, Adobe Photoshop);
- licencje open source — kod źródłowy jest jawny i można go modyfikować, ale różne licencje open source różnią się warunkami (np. MIT pozwala na niemal dowolne wykorzystanie łącznie z komercyjnym, GPL wymaga, żeby program powstały na bazie kodu z licencją GPL też był open source — tzw. "zaraźliwość" licencji copyleft);
- freeware — program darmowy w użyciu, ale bez ujawnionego kodu źródłowego (nie to samo co open source).
W praktyce programisty najważniejsze jest: zanim użyjesz cudzej biblioteki, grafiki, fragmentu kodu ze Stack Overflow czy czcionki w swoim projekcie (szczególnie komercyjnym), sprawdź jej licencję — niektóre wymagają podania autora, inne zabraniają użycia komercyjnego, a naruszenie prawa autorskiego może mieć realne konsekwencje prawne dla firmy i programisty.
Przykład z życia
Firma, która wykorzysta w swojej płatnej aplikacji fragment kodu biblioteki na licencji GPL bez ujawnienia własnego kodu źródłowego, łamie warunki tej licencji i naraża się na proces sądowy — dlatego duże firmy technologiczne mają wewnętrzne działy prawne sprawdzające licencje każdej używanej biblioteki. Podobnie programista korzystający z darmowej ikony znalezionej w Google Grafika bez sprawdzenia licencji może nieświadomie naruszyć prawa autorskie jej twórcy.
Komentarz i wyjaśnienie kodu
Ta lekcja ma charakter czysto teoretyczny (prawny), dlatego nie zawiera bloku kodu C#. To jedyna tego typu lekcja w całym dziale — ale INF.04.3.9 wymaga tej wiedzy wprost, a temat regularnie pojawia się w formie pytań teoretycznych na egzaminie zawodowym.
Ćwiczenie samodzielne
Sprawdź licencję dowolnej biblioteki, z której korzystałeś w projektach z tego serwisu (albo dowolnego pakietu NuGet w Visual Studio) — znajdź plik LICENSE w jej repozytorium na GitHubie i sprawdź, czy pozwala na użycie komercyjne.
Zadania do pracy własnej
Wyjaśnij własnymi słowami różnicę między prawami osobistymi a majątkowymi do programu komputerowego, podając po jednym przykładzie każdego.
Porównaj licencje MIT i GPL — znajdź ich pełne teksty (są krótkie i publicznie dostępne) i wypisz min. 3 różnice w warunkach korzystania.
Opisz sytuację (scenariusz), w której student tworzy aplikację na zaliczenie, wykorzystując: a) własny kod, b) fragment kodu skopiowany ze Stack Overflow, c) darmową bibliotekę na licencji MIT, d) grafikę znalezioną w internecie bez sprawdzenia licencji. Oceń, które z tych elementów mogą stanowić problem prawny i dlaczego.
Typowe błędy
Przekonanie, że kod bez informacji o licencji jest "wolny do użycia" — brak jawnej licencji NIE oznacza domeny publicznej. Domyślnie każdy utwór (w tym kod) jest chroniony prawem autorskim, nawet bez adnotacji ©.
Mylenie freeware z open source — program darmowy w użyciu niekoniecznie ma jawny, otwarty kod źródłowy — to dwie niezależne cechy licencji.
Ignorowanie licencji "zaraźliwych" (copyleft, np. GPL) — użycie fragmentu kodu na licencji GPL w projekcie może w pewnych warunkach zobowiązywać do udostępnienia całego własnego kodu na tej samej licencji, co bywa nieoczekiwaną konsekwencją dla firm chcących zachować kod zamknięty.
Nawiązanie do egzaminu zawodowego
To realizacja INF.04.3.9 — "stosuje zagadnienia prawa autorskiego w programowaniu: prawa osobiste/majątkowe, czas trwania, licencje oprogramowania". Tą lekcją kończy się realizacja wszystkich dziewięciu punktów INF.04.3 (Projektowanie oprogramowania) w tym dziale — razem z lekcjami 1-18 (INF.04.4, Programowanie obiektowe) dział "Programowanie konsolowe" pokrywa teraz kompletnie oba te fundamenty podstawy programowej.