Files
astrololo/docs/przeglad-bibliotek-i-licencji.md
gitea 3655b39acf Rozszerz analizę warstwy logicznej: gotowce, licencje, złożoność + LOG-25
- docs/przeglad-bibliotek-i-licencji.md: przegląd istniejących bibliotek/
  programów z komentarzem licencyjnym i oceną ryzyka praw autorskich;
  rekomendacja ścieżki A (Skyfield/Moshier permisywne) + nota o prawach do
  treści baz.
- docs/warstwa-logiczna-analiza.md: rozwinięcie 24 wymagań LOG, przypisanie
  permisywnych gotowców, ocena złożoności implementacji od zera, rola B/C
  jako wyroczni walidacyjnej; kolejność budowy.
- astrololo_wymagania.xlsx: w arkuszu "Warstwa logiczna" 4 nowe kolumny
  (gotowe rozwiązanie / licencja / złożoność od zera / rola B/C) oraz nowy
  wiersz LOG-25 (harness walidacyjny). Licznik w Przeglądzie zaktualizowany.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 12:31:37 +02:00

12 KiB
Raw Permalink Blame History

Przegląd istniejących rozwiązań + analiza licencji

Dokument roboczy. Przegląd bibliotek i programów, które mogą być przydatne dla projektu astrololo, ze szczególnym naciskiem na licencje i ryzyko praw autorskich (zgodnie z prośbą). Stan: czerwiec 2026.

⚠️ Najważniejszy wniosek (TL;DR). Branżowy standard obliczeń — Swiss Ephemeris — oraz wszystkie popularne biblioteki astrologiczne, które na nim bazują (pyswisseph, kerykeion, immanuel, flatlib, swisseph-wasm), są objęte licencją AGPL3.0 albo płatną licencją komercyjną. AGPL wymusza udostępnienie całego kodu źródłowego aplikacji — i to także wtedy, gdy aplikacja jest tylko udostępniana przez sieć (SaaS / API / hosting online, o którym mowa w notatkach). Dla produktu zamkniętego z unikalnymi bazami kolaboratora oznacza to albo (a) zakup licencji komercyjnej Swiss Ephemeris, albo (b) zbudowanie warstwy obliczeń na permisywnym fundamencie (Skyfield MIT + dane NASA JPL = public domain) i samodzielną implementację części astrologicznej. Szczegóły i rekomendacja: sekcja 6.

Legenda ryzyka: 🟢 permisywne (MIT/BSD/PD) · 🟡 wymaga uwagi/atrybucji · 🔴 copyleft/AGPL — ryzykowne dla produktu zamkniętego.


1. Silniki efemeryd / obliczenia astronomiczne (fundament warstwy logicznej)

Rozwiązanie Co robi Licencja Komentarz / ryzyko
Swiss Ephemeris (C, Astrodienst — aloistr/swisseph) Defacto standard: pozycje obiektów, domy, aspekty, gwiazdy stałe, lots — pełna astrologia, najwyższa dokładność Dual: AGPL3.0 LUB komercyjna (CHF 750 za pierwszą licencję + CHF 400 za każdą kolejną; ważna 99 lat) 🔴 AGPL: użycie w usłudze sieciowej = obowiązek otwarcia całego kodu. Licencja komercyjna zdejmuje copyleft z silnika, ale wrappery językowe (poniżej) mają własne licencje — trzeba je sprawdzić osobno. Decyzję trzeba podjąć przed dystrybucją/uruchomieniem usługi.
pyswisseph (astrorigin/pyswisseph) Wrapper Pythona do Swiss Ephemeris AGPL3.0 🔴 To prawdopodobnie „kalkulator z GitHuba", o którym wiesz. Sam wrapper jest AGPL niezależnie od licencji silnika.
swissephwasm (prolaxu/swisseph-wasm) Swiss Ephemeris skompilowany do WebAssembly (JS) dziedziczy po Swiss Ephemeris (AGPL/komercyjna) 🔴 Ta sama pułapka AGPL, tyle że w przeglądarce.
Skyfield (skyfielders/python-skyfield) Czysto astronomiczne pozycje planet (researchgrade), oparte o dane NASA JPL MIT 🟢 Permisywne, idealne dla produktu zamkniętego. ALE: tylko astronomia — nie liczy domów, aspektów, lots ani technik. Warstwę astrologiczną trzeba dopisać samemu.
Dane NASA JPL DE440 / DE441 Współrzędne efemeryd (Chebyshev), źródło dla Skyfielda Dane rządu USA — faktycznie public domain, swobodnie dystrybuowane 🟢 Permisywny fundament danych. DE440: lata 15502650; DE441: 13200 do +17191.
Moshier ephemeris (Steve Moshier, moshier.net) Semianalityczna teoria, ~0,1″ dokładności, bez plików danych Public domain 🟢 Wolny od jakichkolwiek zobowiązań. Mniej dokładny niż JPL, ale dla astrologii w zupełności wystarcza. Istnieje też reimplementacja JS (0xStarcat/Moshier-Ephemeris-JS, MIT).
Astropy Astronomia ogólna (układy współrzędnych, czas) BSD3 🟢 Permisywne; pomocnicze (czas, transformacje), nie astrologia.

2. Biblioteki astrologiczne wyższego poziomu (domy, aspekty, lots, techniki)

Rozwiązanie Co robi Licencja Komentarz / ryzyko
kerykeion (g-battaglia/kerykeion) Nowoczesna, utrzymywana: pozycje, domy, aspekty, wykresy SVG, synastria/tranzyty/composite AGPL3.0 🔴 Wymaga otwarcia projektu. Autor oferuje hostowane Astrologer API (REST) — korzystanie z niego nie narzuca copyleft na Twój kod (ale to usługa zewnętrzna, płatna, wysyłasz dane na zewnątrz).
immanuel (theriftlab/immanuel-python) Dane czytelne dla człowieka + JSON, wzorowane na astro.com / Astro Gold; na pyswisseph GPL3.0+ 🔴 GPL (sieciowo łagodniejsze niż AGPL, ale wciąż copyleft); ciągnie AGPLowy pyswisseph.
flatlib (flatangle/flatlib) Astrologia tradycyjna (domy, aspekty, godności) kod własny: MIT 🟢, ale zależy od Swiss Ephemeris 🔴 🟡🔴 Sam kod flatlib jest permisywny (MIT), lecz obliczenia robi Swiss Ephemeris — więc realnie obowiązuje Cię AGPL/komercyjna SE. Słabo utrzymywane. Dobra referencja projektowa.
libephemeris (g-battaglia/libephemeris) API zgodne z pyswisseph, ale liczy Skyfieldem (NASA); 25 systemów domów, weryfikowane względem pyswisseph AGPL3.0 🔴 Ciekawe technicznie (permisywny fundament: Skyfield+JPL), ale autor wybrał AGPL → i tak copyleft. Można potraktować jako wzorzec, jak dołożyć domy do Skyfielda.

3. JavaScript / frontend (jeśli warstwa prezentacji będzie webowa)

Rozwiązanie Co robi Licencja Komentarz / ryzyko
CircularNatalHoroscopeJS (0xStarcat/...) Liczy natalny wykres (Asc/MC, domy, tropikalny/syderyczny) — na Moshierze, bez Swiss Ephemeris MIT 🟢 Rzadki przypadek: obliczenia astrologiczne bez „skażenia" AGPL. Dobry wzorzec/komponent dla JS.
AstroChart (Kibo/AstroChart) Renderowanie kosmogramu (SVG) — tylko rysowanie, bez efemeryd opensource (zweryfikować plik LICENSE) 🟡 Brak obliczeń = brak ryzyka efemeryd. Sprawdzić dokładnie licencję przed użyciem.
swissephwasm (jak w sekcji 1) AGPL/komercyjna 🔴

4. Geolokalizacja i strefy czasowe (dla pola „miejscowość → timezone → Asc/MC")

Notatki opisują obliczenie strefy czasowej z większej miejscowości, potem przeliczenie dla dokładnej lokalizacji. Przydatne:

Rozwiązanie Co robi Licencja Komentarz / ryzyko
timezonefinder (jannikmi/timezonefinder) Strefa czasowa z lat/long, offline kod: MIT 🟢 / dane: ODbL 🟡 🟡 Dane (timezoneboundarybuilder, ODbL) — przy dystrybucji bazy wymagana atrybucja i klauzula sharealike dla samej bazy (nie dla Twojego kodu).
GeoNames (baza miejscowości) Miejscowości + współrzędne + strefy (do dropdowna lokalizacji) CCBY 4.0 🟡 Wolne, ale wymaga atrybucji „GeoNames". Idealne do tabeli miejscowości z notatek.
IANA tz database (tzdata) Reguły stref i czasu letniego (DST) Public domain 🟢 W Pythonie przez zoneinfo (stdlib) — bez zależności.

5. Pełne programy referencyjne (do nauki algorytmów, nie do kopiowania kodu)

Program Licencja Komentarz / ryzyko
Astrolog (Walter Pullen, astrolog.org) GPL2.0+ (od wersji 6.00) 🔴 do kopiowania kodu (GPL), ale bezcenny jako referencja algorytmów (domy, dyrekcje, techniki). Opcjonalnie używa Swiss Ephemeris. Można czytać i uczyć się metod, nie wklejać kodu do produktu zamkniętego.
Maitreya / Morinus (opensource) GPL (zweryfikować) 🟡 Jw. — referencja, nie źródło kodu do zamkniętego produktu.

6. Strategia licencyjna — trzy ścieżki (z rekomendacją)

Wybór zależy od jednej decyzji z arkusza wymagań (Q01: produkt zamknięty/hostowany czy nie) i Q07 (SQL/architektura). Przy założeniu produktu zamkniętego z prywatnymi bazami (co wynika z notatek — hosting online, własność kolaboratora):

Ścieżka A — permisywna, „zbuduj sam" 🟢 (rekomendowana longterm) Skyfield (MIT) + dane JPL DE440 (public domain) lub Moshier (PD) do pozycji; domy/aspekty/lots/dyrekcje implementujemy sami (wzorując się na Astrologu i libephemeris — czytając, nie kopiując).

  • Pełna swoboda licencyjna, produkt może być zamknięty i hostowany.
  • Najwięcej pracy w warstwie logicznej (ale dokładnie tę warstwę i tak projektujemy modułowo).

Ścieżka B — Swiss Ephemeris na licencji komercyjnej 🟡 (najszybsza „pełna dokładność") Kupujemy licencję komercyjną SE (CHF 750) i wołamy silnik C bezpośrednio (z cienkim własnym wrapperem, by ominąć AGPLowy pyswisseph).

  • Od razu komplet funkcji i najwyższa dokładność; produkt zamknięty OK.
  • Koszt + formalności licencyjne; trzeba uważać, żeby nie wciągnąć AGPLowych wrapperów.

Ścieżka C — AGPL „na całość" 🔴 (tylko jeśli produkt może być otwarty) kerykeion/immanuel/flatlib+pyswisseph — najszybszy development.

  • Gotowiec, mało kodu.
  • Wymusza otwarcie całej aplikacji (w tym kodu obsługującego prywatne bazy). Przy hostingu online (AGPL!) praktycznie wykluczone dla tego projektu.

Ścieżka D — hostowane API (np. Astrologer API) jako uzupełnienie: korzystanie z REST nie narzuca copyleft, ale to zależność zewnętrzna, koszt, prywatność danych urodzeniowych i może nie pokrywać egzotycznych technik (firdaria, zodiacal releasing, warianty primary directions).

Rekomendacja: zarezerwować w architekturze warstwy logicznej interfejs silnika efemeryd (jak DataProvider w warstwie danych), tak by dało się podmienić backend: MoshierEngine / SkyfieldEngine (ścieżka A) ↔ SwissEphCommercialEngine (ścieżka B). Wtedy decyzję A vs B można podjąć później bez przepisywania logiki.


7. Osobna kwestia: prawa autorskie do TREŚCI baz (to NIE są licencje software!)

To dotyczy zawartości baz interpretacji, nie kodu — i jest tu realne ryzyko do rozważenia:

  • Bazy kolaboratora. Jeśli to oryginalna twórczość współpracownika, to on jest dysponentem praw — potrzebne jasne ustalenie (umowa/licencja) na wykorzystanie ich w produkcie. To załatwia sprawę po stronie tych danych.
  • Źródła z opublikowanych książek. Przykładowy plik „The Encyclopaedia of Medical Astrology" to wydana książka (H. L. Cornell, 1933). Cyfrowy przedruk obszernych opisów interpretacyjnych z chronionego dzieła = ryzyko naruszenia praw autorskich, niezależnie od licencji oprogramowania. Status zależy od jurysdykcji i daty (część dawnych dzieł może być już w domenie publicznej — wymaga sprawdzenia per tytuł).
  • Fakt vs. twórczość. Krótkie formuły sygnifikatorów (np. „Ma Ari = …") to raczej fakty/metoda — trudniej objąć je prawem autorskim. Natomiast rozbudowana proza interpretacyjna (kolumna Effect) jest chroniona jako utwór.
  • Zalecenie: dla każdej bazy odnotować proweniencję (autor/źródło/status praw) — najlepiej jako kolumnę/metadane w warstwie danych (pasuje do book-#per-txt, author, lang z notatek). Oddzielić materiał: własny kolaboratora / public domain / cytowany za zgodą / wymagający usunięcia.

Źródła