Koncepcje programowania/Licencjonowanie

Z Wikibooks, biblioteki wolnych podręczników.

Programy, żeby mogły zacząć być używane przez innych, muszą zawierać odpowiednią licencję. Prawo polskie przewiduje, że przedmiotem prawa autorskiego jest każdy przejaw działalności twórczej o indywidualnym charakterze, ustalony w jakiejkolwiek postaci, niezależnie od wartości, przeznaczenia i sposobu wyrażenia i działa ono automatycznie, ochrona praw autorskich rozpoczyna się z chwilą ustalenia utworu, bez konieczności spełnienia jakichkolwiek formalności i są niezbywalne. Kolejnym etapem jest udostępnienie naszej pracy w interesującym nas zakresie uprawnień dla potencjalnego użytkownika bądź programisty tzn. W jaki sposób nasza praca może być utrwalania i zwielokrotniania - proces w którym się na to decydujemy, jest ustaleniem autorskich praw majątkowych.

Istnieją z grubsza dwie metody na dzielenie się pracą

  • Oprogramowanie zamknięte (ang. closed source, proprietary software) - oprogramowanie objęte restrykcjami dotyczącymi używania, kopiowania bądź modyfikacji, rozpowszechniane zwykle w postaci binarnej, bez kodu źródłowego.
  • Oprogramowanie otwarte (ang. open source) - Odwrotność wyżej wymienionego, jest to rodzaj oprogramowania komputerowego, w którym kod źródłowy jest wydawany na podstawie licencji, na mocy której właściciel praw autorskich przyznaje użytkownikom prawa do badania, zmiany i rozpowszechniania oprogramowania w ramach danej licencji wolnego oprogramowania. Oprogramowanie o otwartym kodzie źródłowym jest zazwyczaj rozwijane przez szeroką społeczność programistów.

Zaletą oprogramowania zamkniętego jest to, że masz pełną kontrolę nad tym, co robi Twój program. I na tym zalety się kończą, bowiem istnieje bardzo wiele konsekwencji wynikających z tego jednego prostego kroku, że nie udostępnisz kodu źródłowego:

  • Prawdopodobieństwo wystąpienia błędu jest potencjalnie większe niż w przypadku udostępniania kodu. - zob. Prawo Linusa.
  • Ponadto Ci inni programiści będą mogli wprowadzić modyfikacje, aktualizacje i ulepszenia do Twojego kodu, często za darmo.
  • Jeśli nie masz ogromnego zaplecza programistycznego i nie jesteś wyposażony w testerów, designerów, administratorów, rozwój Twojego programu będzie znacznie powolniejszy niż u konkurencji.

I tak dalej i tak dalej,

Na tym etapie, nauki programowania i zdając sobie sprawę jak jeszcze niewiele wiesz, prawdopodobnie dużo lepszą opcją będzie udostępnienia aplikacji tak, by każdy mógł do Twojego programu zajrzeć i potencjalnie Ci pomóc. Istnieje praktycznie niezliczona ilość licencji otwartego i wolnego oprogramowania dlatego dziś przedstawimy tylko dwie najważniejsze kategorie.

  • Wolne oprogramowanie - Jest to seria szeroko stosowanych licencji, które gwarantują użytkownikom końcowym cztery swobody uruchamiania, studiowania, udostępniania i modyfikowania oprogramowania zdefiniowane w tym dokumencie. Najczęściej oznacza to użytkowanie licencji z rodziny GNU GPL
  • Permisywna licencja na oprogramowanie, czasami nazywana również licencją typu BSD, jest licencją otwartego oprogramowania, która zamiast ochrony typu copyleft niesie tylko minimalne ograniczenia dotyczące tego, jak oprogramowanie może być używane, modyfikowane i rozpowszechniane, zwykle w tym zrzeczenie się gwarancji. Przykłady obejmują licencję Apache, BSD bądź MIT.

Przykładowo, podręcznik który właśnie czytasz, jest udostępniony na otwartej licencji CC-BY-SA 3.0 - Creative Commons, uznanie autorstwa, na tych samych warunkach. Co to oznacza?

  • Uznanie autorstwa (ang. Attribution, BY): zezwala się na kopiowanie, dystrybucję, wyświetlanie i użytkowanie dzieła i wszelkich jego pochodnych pod warunkiem umieszczenia informacji o twórcy. To postanowienie jest obecne we wszystkich licencjach, ponieważ autorskie prawa osobiste są niezbywalne.
  • Na tych samych warunkach (ang. Share Alike, SA): zezwala się na kopiowanie, dystrybucję, wyświetlanie i użytkowanie pochodnych dzieł, pod warunkiem, że będą one opublikowane na takiej samej licencji.

Jest to licencja najbardziej zbliżona do GNU FDL.

Natomiast wszystkie kody źródłowe zawarte w tej książce, są na licencji MIT. MIT to licencja permisywna co oznacza że daje użytkownikom nieograniczone prawo do używania, kopiowania, modyfikowania i rozpowszechniania oryginalnego lub zmodyfikowanego przedstawionej tutaj kodu źródłowego. Jedynym wymaganiem jest, by we wszystkich wersjach zachowano warunki licencyjne i informacje o autorze (bo jak już zostało wyżej wspomniane dwukrotnie - prawa autorskie są niezbywalne). Innymi słowy, nie wymusza, tak jak jest to w przypadku licencji CC-BY-SA bądź GNU FDL, GPL, udostępniania dzieł pochodnych na tej samej licencji.