Jak działa ściągawka prawna GitHuba i dlaczego warto wdrożyć choosealicense.com lokalnie
Prawdopodobnie spotkałeś się z formularzem wyboru licencji podczas tworzenia nowego repozytorium na GitHubie. Kilka kliknięć i Twój projekt otrzymuje plik z prawidłowym prawem autorskim i aktualnym rokiem. Niewiele osób zdaje sobie sprawę, że cała ta logika, zwięzłe wyjaśnienia i prawa wyróżnione ikonami znajdują się w otwartym repozytorium.
Projekt wyrosnął z prostego pomysłu. Programiści rzadko rozumieją niuanse prawne i nie chcą czytać dziesiątek stron tekstu prawniczego. Potrzebują prostej odpowiedzi: co można zrobić z kodem, a czego nie można. Witryna spełnia tę potrzebę, a samo repozytorium służy jako backend systemu licencyjnego GitHuba.
Dlaczego to repozytorium istnieje
Przede wszystkim jest to statyczna strona Jekyll. Jej głównym celem jest rozbicie złożonych dokumentów prawnych na zrozumiałe kategorie bez wydawania ocen. Autorzy nie narzucają konkretnej licencji — dostarczają narzędzie do własnego wyboru.
Poza prowadzeniem strony, zawartość repozytorium jest regularnie importowana do gema Ruby Licensee. Ta biblioteka to właśnie to, co napędza samego GitHuba — określa typ licencji w Twoich projektach, wyświetla jej status w interfejsie repozytorium i udostępnia dane przez API GitHuba.
Jak licencje są strukturyzowane wewnętrznie
Cała magia strony i integracji opiera się na ustrukturyzowanych opisach każdego dokumentu. Folder zawiera pliki Markdown. Każda licencja ma nagłówek YAML (front matter) i pełny tekst prawny.
Nagłówek YAML definiuje metadane:
Zasady są podzielone na trzy kategorie: uprawnienia, warunki i ograniczenia. Pełne wyjaśnienie poszczególnych atomowych zasad, takich jak lub, jest przechowywane osobno w pliku. Jeśli musisz dodać nowy warunek, opisujesz go raz w i odwołujesz się do niego w plikach licencji.
Podczas tworzenia nowego repozytorium GitHub pobiera szablon i podstawia rzeczywiste wartości za wbudowane zmienne:
- lub nazwę autora
- bieżący rok
- dla nazwy repozytorium
- dla linku do projektu
Automatyczne budowanie i wsparcie wielojęzyczne
Strona obsługuje tłumaczenia interfejsu i krótkie adnotacje za pomocą wtyczki Jekyll. Rzeczywiste teksty prawne licencji celowo nie są tłumaczone, aby uniknąć zniekształcenia znaczenia prawnego oryginalnych dokumentów.
Ponieważ nie należy do standardowej listy obsługiwanych wtyczek GitHub Pages, wdrożenie jest obsługiwane przez GitHub Actions. Workflow buduje stronę i publikuje gotowy pakiet statyczny do gałęzi.
Uruchamianie projektu lokalnie
Możesz wdrożyć lokalną kopię strony w ciągu kilku minut. Będziesz potrzebować kompilatorów i zainstalowanych.
Na macOS zależności instaluje się przez Homebrew:
Na Ubuntu lub Debian wystarczy standardowy menedżer pakietów:
Następnie sklonuj repozytorium wraz z submodułami i uruchom skrypty budowania:
Strona będzie dostępna pod adresem . Możesz edytować pliki w i natychmiast widzieć wyniki w przeglądarce.
Wykorzystanie repozytorium we własnych projektach
Lokalna kompilacja lub fork projektu przydaje się w różnych sytuacjach:
- Tworzenie wewnętrznej bazy dokumentów prawnych. Duże firmy często mają własne zasady korzystania z kodu stron trzecich. Możesz sforkować repozytorium, dodać wymagania korporacyjne i wdrożyć wewnętrzny przewodnik referencyjny.
- Generowanie licencji w narzędziach CLI. Jeśli piszesz własny generator szablonów projektu, to wygodne źródło sprawdzonych tekstów LICENSE z automatycznymi zmiennymi podstawianymi.
- Zautomatyzowane audyty kodu. Na podstawie plików reguł w możesz łatwo napisać prosty linter do sprawdzania zależności stron trzecich w swoim pipeline CI/CD.
- Poznawanie architektury wielojęzycznych stron Jekyll. Niestandardowy pipeline budowania z wtyczką stanowi doskonały przykład dla własnych projektów statycznych.
Podsumowanie
Repozytorium stanowi doskonały przykład przekształcania nudnych dokumentów prawnych w wygodną strukturę danych. Projekt łączy przyjazny interfejs webowy, metadane czytelne maszynowo i mechanizmy automatycznego podstawiania. Jeśli potrzebujesz zorganizować licencjonowanie we własnych projektach lub stworzyć przydatną referencję dla swojego zespołu, kod źródłowy tej strony stanowi doskonały punkt wyjścia.
Powiązane projekty