- 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>
12 KiB
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ą AGPL‑3.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) |
De‑facto standard: pozycje obiektów, domy, aspekty, gwiazdy stałe, lots — pełna astrologia, najwyższa dokładność | Dual: AGPL‑3.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 | AGPL‑3.0 | 🔴 To prawdopodobnie „kalkulator z GitHuba", o którym wiesz. Sam wrapper jest AGPL niezależnie od licencji silnika. |
swisseph‑wasm (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 (research‑grade), 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 1550–2650; DE441: −13200 do +17191. |
Moshier ephemeris (Steve Moshier, moshier.net) |
Semi‑analityczna 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) | BSD‑3 | 🟢 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 | AGPL‑3.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 | GPL‑3.0+ | 🔴 GPL (sieciowo łagodniejsze niż AGPL, ale wciąż copyleft); ciągnie AGPL‑owy 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 | AGPL‑3.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 / front‑end (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 | open‑source (zweryfikować plik LICENSE) | 🟡 Brak obliczeń = brak ryzyka efemeryd. Sprawdzić dokładnie licencję przed użyciem. |
| swisseph‑wasm | (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 (timezone‑boundary‑builder, ODbL) — przy dystrybucji bazy wymagana atrybucja i klauzula share‑alike dla samej bazy (nie dla Twojego kodu). |
| GeoNames (baza miejscowości) | Miejscowości + współrzędne + strefy (do dropdowna lokalizacji) | CC‑BY 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) |
GPL‑2.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 (open‑source) | 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ń (Q‑01: produkt zamknięty/hostowany czy nie) i Q‑07 (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 long‑term) 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ąć AGPL‑owy 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ąć AGPL‑owych 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
DataProviderw 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,langz notatek). Oddzielić materiał: własny kolaboratora / public domain / cytowany za zgodą / wymagający usunięcia.
Źródła
- Swiss Ephemeris — licencja (astro.com) · LICENSE · repo
aloistr/swisseph - pyswisseph (
astrorigin/pyswisseph) - kerykeion (PyPI) · immanuel (PyPI) · flatlib LICENSE (MIT)
- Skyfield (PyPI, MIT) · libephemeris (
g-battaglia/libephemeris) - NASA JPL DE440/DE441 · Moshier ephemeris · Moshier‑Ephemeris‑JS
- CircularNatalHoroscopeJS · AstroChart (
Kibo/AstroChart) · swisseph‑wasm - timezonefinder (PyPI, MIT) · Astrolog (Wikipedia)