# Third-party notices Night Sky Live is MIT licensed (see `LICENSE`). It builds on the work below. Keep these notices when you redistribute the project. ## Libraries and fonts (bundled) Everything the page runs on is bundled, so the page loads no code or fonts from other sites. Each component keeps its licence file next to it. The MIT and OFL notices below must stay with any copy. | Component | Files | License | Source | | --- | --- | --- | --- | | [three.js](https://github.com/mrdoob/three.js) 0.160.0 — Copyright © 2010-2023 three.js authors | `vendor/three/three.module.min.js`; the post-processing add-ons `vendor/three/examples/jsm/postprocessing/` EffectComposer, RenderPass, ShaderPass, UnrealBloomPass, Pass, MaskPass and `vendor/three/examples/jsm/shaders/` CopyShader, LuminosityHighPassShader (unmodified) | MIT, `vendor/three/LICENSE` | npm package `three@0.160.0` | | [Astronomy Engine](https://github.com/cosinekitty/astronomy) 2.1.19 — Copyright © 2019-2023 Don Cross | `vendor/astronomy-engine/astronomy.js` (the package's ES-module build `esm/astronomy.js`, unmodified) | MIT, `vendor/astronomy-engine/LICENSE` (the notice from the file's own header) | npm package `astronomy-engine@2.1.19` | | [satellite.js](https://github.com/shashwatak/satellite-js) 5.0.0 — Copyright © 2013 Shashwat Kandadai, UCSC Jack Baskin School of Engineering | `vendor/satellite.js/satellite.min.js` (unmodified) | MIT, `vendor/satellite.js/LICENSE.md` | npm package `satellite.js@5.0.0` | | *Cormorant Garamond* — Copyright 2015 the Cormorant Project Authors | `fonts/cormorant-garamond/` Medium (500) and Medium Italic | SIL Open Font License 1.1, `fonts/cormorant-garamond/OFL.txt` | [google/fonts](https://github.com/google/fonts) `ofl/cormorantgaramond` | | *Manrope* — Copyright 2018 the Manrope Project Authors | `fonts/manrope/` weights 400–600 | SIL Open Font License 1.1, `fonts/manrope/OFL.txt` | google/fonts `ofl/manrope` | | *JetBrains Mono* — Copyright 2020 the JetBrains Mono Project Authors | `fonts/jetbrains-mono/` weights 400–500 | SIL Open Font License 1.1, `fonts/jetbrains-mono/OFL.txt` | google/fonts `ofl/jetbrainsmono` | The fonts are modified only by format conversion: the variable fonts were pinned or narrowed to the weights used, subset to Latin plus common punctuation and symbols, and saved as WOFF2 with fontTools. Their names are unchanged (none uses a Reserved Font Name). ## Sky data (in `data/`) The star, constellation, Milky Way outline and Messier files are converted by `scripts/build_data.py` from the data files of [d3-celestial](https://github.com/ofrohn/d3-celestial) 0.7.35, which is distributed under the BSD 3-Clause license below. The original sources, as credited by d3-celestial, are: | File | Original source | | --- | --- | | `stars.json` (25,723 stars to magnitude 7.5) | XHIP: An Extended Hipparcos Compilation; Anderson E., Francis C. (2012), *Astronomy Letters* 38, 331; doi:10.26093/cds/vizier, [VizieR V/137D](https://cdsarc.cds.unistra.fr/viz-bin/cat/V/137D) | | `starnames.json` | Proper names and Bayer/Flamsteed designations from the IAU and from the cross-index catalogues credited by d3-celestial (Kostjuk 2002, VizieR IV/27A; Smith 1996, VizieR IV/22) | | `constellations.json` | [IAU constellations](https://www.iau.org/public/themes/constellations/); lines and label positions as adapted by Olaf Frohn | | `milkyway.json` | [Milky Way Outline Catalog](http://www.skymap.com/milkyway_cat.htm), José R. Vieira. Used only as a fallback when the photographic Milky Way texture cannot be loaded. | | `dsos.json` | [Messier Objects with Data](http://messier.seds.org/data.html), H. Frommert / SEDS | | `capitals.json` | National capitals with their IANA time zones, compiled for this project and its sister project Live Weather Globe; used only to guess a starting place from the browser's time zone | | `landscape.json` | Skyline profile (altitude of the landscape every 0.25° of azimuth) and the positions of four lit windows, derived from the landscape panorama below by `scripts/build_landscape.py`. The window positions were read off the panorama by hand. | ### d3-celestial license ``` Copyright (c) 2015, Olaf Frohn All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` ### Comets (`data/comets.json`) Orbital elements of comets from the [IAU Minor Planet Center](https://www.minorplanetcenter.net/) file `CometEls.txt`, which the MPC publishes openly for public use. The bundled `data/comets.json` is a snapshot of those elements (its `updated` field gives the date), made and refreshed by hand with `scripts/update_comets.py`, which keeps comets near perihelion and writes the compact JSON. Visitors' browsers never contact the MPC. Credit: "Comet orbits: IAU Minor Planet Center". Positions are computed in the browser from these elements (two-body orbits); brightness uses the MPC's H and G magnitude parameters and is an estimate. ## Imagery (in `assets/`) | File | Origin | License | Modifications | | --- | --- | --- | --- | | `moon.jpg` | NASA Scientific Visualization Studio *CGI Moon Kit*, built from Lunar Reconnaissance Orbiter (LROC) data, as packaged in the `moon-landing-sites` example of [globe.gl](https://github.com/vasturiano/globe.gl) (MIT, © 2019 Vasco Asturiano). | NASA imagery is not copyrighted; credit: NASA's Scientific Visualization Studio. | Converted to a 1024×512 grayscale map. | | `milkyway_4k.jpg`, `milkyway_2k.jpg` | **The Milky Way panorama** *eso0932a* (GigaGalaxy Zoom project) by **ESO / Serge Brunier**, https://www.eso.org/public/images/eso0932a/. Obtained as the 4096×2048 copy `src/assets/skybox/eso_milkyway.jpg` in the [spacekit](https://github.com/typpo/spacekit) repository (commit `573a777`), whose `src/assets/skybox/README.md` records this provenance and whose `examples/black-hole/index.html` credits it as "Sky: ESO/S. Brunier, CC BY 4.0". | [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/), ESO's standard licence for its images (https://www.eso.org/public/outreach/copyright/). Credit: **ESO/S. Brunier**. | By `scripts/build_milkyway.py`: all point sources (stars, planets and their halos) were removed with a median filter and local clamping so only the diffuse band remains, the sky background was subtracted, the levels were rescaled, and the result was saved as 4096×2048 and 2048×1024 JPEGs. These edits were made with conventional image processing (median filtering and level adjustment) in a Python script; no generative AI was used to alter the image. As the ESO licence requires, the credit "Milky Way: ESO/S. Brunier (modified)" is shown visibly in the app, with an active link to the original, whenever this image is displayed, and on the loading screen, each time with a link to the licence. Use of the image does not imply endorsement by ESO. The app draws the catalogue stars on top. The image is in galactic coordinates; a 3.7° correction rotation, fitted against the Hipparcos catalogue with `scripts/fit_milkyway.py` (295 stars matched, 0.16° rms), aligns it with the star positions. | | `landscape.webp` | **noon_grass** HDRI panorama by **Sergej Majboroda**, [Poly Haven](https://polyhaven.com/a/noon_grass) (formerly HDRI Haven). Obtained as `third_party/environments/noon_grass_2k.hdr` in the [Google Filament](https://github.com/google/filament) repository (commit `764fe6c`), whose `third_party/environments/CC0.html` (the CC0 1.0 legal text) and `URL.txt` (https://hdrihaven.com/) record the licence and origin of that directory. | [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/) public domain dedication; no attribution required, given anyway. | By `scripts/build_landscape.py`: tone-mapped from HDR to sRGB; the sky was classified by colour and brightness and turned into an alpha channel, so only the ground, trees and houses remain; land colour was extended under the transparent sky to avoid fringes; saved as a 2048×1024 WebP with alpha. The app relights it by the Sun, twilight, the Moon and light pollution, and adds four small warm window lights by night. | The sky colours, stars, Sun, planets, satellites, the warm windows and every icon are drawn by the page itself. ### Reproducing the processed images `scripts/build_landscape.py` (with `scripts/hdr.py`), `scripts/build_milkyway.py` and `scripts/fit_milkyway.py` are the exact scripts used; they need Python 3 with NumPy and Pillow. Their docstrings give the source files and command lines. ## Data services (called by the visitor's browser) | Service | Use and terms | | --- | --- | | [CelesTrak](https://celestrak.org/) | Public NORAD orbital elements for three named civilian spacecraft, fetched by catalogue number: the ISS (25544), Tiangong's core module Tianhe (48274) and the Hubble Space Telescope (20580). Fetched at most once every 12 hours per visitor and cached in the browser, in line with CelesTrak's request not to download the same data again before it updates. A failed download is remembered too, and not retried for 2 hours, so a visitor never keeps knocking while CelesTrak is down. | | [Open-Meteo Geocoding API](https://open-meteo.com/en/docs/geocoding-api) | Place search, only when a visitor types a place name. Free for non-commercial use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); credited, with a link to the licence, in Layers → Credits. Based on [GeoNames](https://www.geonames.org/) data ([CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)). | Spacecraft positions are computed for a fixed list of civilian, publicly listed objects only (the ISS, Tiangong and Hubble). No other satellites, aircraft or tracking data are used. A visitor's location stays in their own browser (localStorage). It is requested from the browser only when they press "Use my location", and it is never sent anywhere; the place search sends only the text that is typed. If you deploy this commercially, check the Open-Meteo commercial terms first, or replace the place search.