Files

230 lines
15 KiB
Plaintext

Jihad Browser
Copyright (c) 2026 NotAlexNoyle.
This product includes software developed by third parties, as listed below.
This NOTICE file is provided to satisfy the attribution requirements of the
Apache License 2.0 (section 4(d)) and to document the origin of incorporated
Mozilla Public License 2.0 code.
--------------------------------------------------------------------------------
isis-browser (user-interface shell)
Copyright (c) 2012 Hewlett-Packard Development Company, L.P.
Licensed under the Apache License, Version 2.0.
Origin: https://github.com/isis-project/isis-browser
isis-project BrowserServer / BrowserAdapter / AdapterBase (render daemon + IPC)
Copyright (c) 2012 Hewlett-Packard Development Company, L.P.
Copyright (c) 2012-2014 LG Electronics, Inc.
Licensed under the Apache License, Version 2.0.
Origin: https://github.com/isis-project/{BrowserServer,BrowserAdapter,AdapterBase}
Includes the YAP interface generator, vendored at
render/browserserver/CodeGen/YapCodeGen.cpp from BrowserServer's CodeGen/YapCodeGen.cpp
and MODIFIED by the Jihad Browser project (2026-08-15): a non-terminating scan over
leading whitespace was fixed, and the definition syntax gained an "optional" flag that
emits an async command's server-side declaration with an empty default body instead of
"= 0;". The file carries a notice of those changes in its header, and the modifications
are the Jihad Browser project's own.
Enyo 1.0 framework (UI runtime dependency)
Copyright (c) 2012 Hewlett-Packard Development Company, L.P.
Licensed under the Apache License, Version 2.0.
Enyo 2 framework core + "layout" library (Mochi UI variant runtime dependency)
Copyright (c) 2012-2014 LG Electronics, Inc.
Licensed under the Apache License, Version 2.0.
Origin: https://github.com/enyojs/enyo
https://github.com/enyojs/layout
The Enyo 2 core and its layout library (FittableRows/FittableColumns, Panels,
List) are BUNDLED into the Mochi (Enyo 2) .ipk at build time by
build/webos-oe/build-mochi-ipk.sh; they are not vendored in this repo.
Mochi UI widget library (Mochi UI variant)
Copyright (c) 2014 LG Electronics, Inc.
Licensed under the Apache License, Version 2.0.
Origin: https://github.com/enyojs/mochi
The Mochi touch widget set (Header, IconButton, Input, ProgressBar, Popup,
List, Panels, etc.) drives the app-mochi/ front-end. It is BUNDLED into the
Mochi (Enyo 2) .ipk at build time (build-mochi-ipk.sh); not vendored here.
UXP — Unified XUL Platform / Goanna engine (rendering engine dependency)
Copyright (c) Mozilla Foundation and contributors.
Copyright (c) Moonchild Productions and Pale Moon contributors.
Licensed under the Mozilla Public License, Version 2.0, and other compatible
licenses documented within the UXP source tree.
Origin: https://repo.palemoon.org/MoonchildProductions/UXP
The engine in the packages is MODIFIED (MPL-2.0 section 3.2): its Source Code Form is the
branch jihad/uxp-RB_20261006 of https://git.trueog.net/NotAlexNoyle/UXP-Jihad (the pinned
commit is the third_party/uxp submodule of https://git.trueog.net/NotAlexNoyle/Jihad-Browser),
upstream base release RB_20261006; the changes are the patches in build/desktop/patches/ of
that repository, one commit each, listed in docs/ENGINE-SOURCE.md there. The same source
covers liblgpllibs (SoundTouch, LGPL-2.1) and libmozavcodec/libmozavutil (the FFmpeg subset
"ffvpx": VP8, VP9 and FLAC decoders only; LGPL-2.1). The engine's own about:license page,
installed with it, carries the licences of everything compiled into libxul.
libavcodec.so.58 and libavutil.so.56 are FFmpeg 4.4.5 (https://ffmpeg.org/, LGPL v2.1 or
later; the text is licenses/runtime/ffmpeg-COPYING.LGPLv2.1), built by
build/webos-oe/build-ffmpeg-arm.sh with the H.264, AAC and MP3 decoders and parsers only, no
GPL or non-free parts, unmodified source (sha256 of ffmpeg-4.4.5.tar.xz pinned in the script);
the engine loads libavcodec at run time for the formats ffvpx does not decode. The H.264 and AAC
formats are covered by patents in some countries; whether a decoder may be distributed or used
there is a question for the distributor and the user, not something this notice can settle.
Jihad Browser's per-domain User-Agent override table (render/goanna/
EngineHost.cpp, jihadUaTable) — the domain→Firefox-version site-compat
choices — is derived from Basilisk / Pale-Moon's uaoverrides.inc:
application/basilisk/branding/shared/uaoverrides.inc
palemoon/branding/shared/pref/uaoverrides.inc
Copyright (c) Moonchild Productions and the Pale Moon team, MPL-2.0.
Palefill Web Technologies Polyfill (bundled add-on)
Copyright (c) 2020-2025 Martok & Contributors.
Portions based on GitHub Web Components Polyfill Add-on,
Copyright (c) 2020 JustOff, Copyright (c) 2022 SeaHOH.
Licensed under the Mozilla Public License, Version 2.0 (licenses/MPL-2.0.txt).
Origin: https://github.com/martok/palefill — https://martok.github.io/palefill/
Version 1.30, the author's release file, UNMODIFIED
(sha256 5ba4b1bd90f7f37b47115595a9a4cd52e10bfc64eed650241c1754c3a0782993).
Every Jihad Browser package carries it in the engine's bundled-addons/
directory and offers it to a new profile once, through the engine's own
add-on manager; it is then the user's add-on to disable or remove. An XPI is
a zip of the add-on's source files, so the package contains its source form;
the same file is published at the origin above. See third_party/palefill/README.md.
EasyList and EasyPrivacy (bundled filter lists, data)
Copyright (c) The EasyList authors, https://easylist.to/
Dual-licensed by their authors under the GNU General Public License v3 or
later, or Creative Commons Attribution-ShareAlike 3.0 or later; Jihad Browser
takes them under the GPL v3 or later (licenses/GPL-3.0.txt).
Origin: https://easylist.to/easylist/easylist.txt
https://easylist.to/easylist/easyprivacy.txt
Snapshots of upstream version 202610151429 (15 Oct 2026), UNMODIFIED
(sha256 241caa88e276e1707c605eb44bcf53053c2eaf8f108aabd278e29a5a2ee92102 and
744da111e46b1f0f14afc6423d09fd569dc86506272f2208c96ac820753392f8).
Every Jihad Browser package carries both raw in the engine's blocklists/
directory; the content blocker (render/goanna/components/jihadContentBlocker.js,
MPL-2.0) compiles them on the device into the sets it blocks with and refreshes
them from the origin above. The lists are data the engine reads, not code linked
into it; the compiled form is a derivative of the lists under the same licence.
See third_party/easylist/README.md.
Atlas Browser (parallel isis-browser fork) — ported fixes
Copyright (c) Herman van Hazendonk (Herrie82) and the Atlas Browser project.
Licensed under the Apache License, Version 2.0.
Origin: https://github.com/Herrie82/BrowserAdapter
https://github.com/Herrie82/BrowserServer
Jihad Browser incorporates device-hardening fixes first developed in Atlas
(which also forks isis-browser but targets WPE WebKit):
- YAP memory-safety fixes (YapProxy delete[], YapServer int16 length
validation, YapClient reconnect socket teardown, YapPacket malloc
null-check) — Atlas BrowserServer commit 89b71a7.
- BrowserAdapter LunaCE paint fix (dstBuffer raw-blit path instead of the
QPainter/PGContext deref that segfaults LunaSysMgr), out-of-buffer white
fill, tall-buffer pan, pinch-zoom scaled blit, and scroll indicator —
Atlas BrowserAdapter commits 7b91ab8, aefab6d, dbc897c, 27b54a5, 77ab724.
- BrowserAdapter key-focus gating: handleKeyDown/handleKeyUp returned
bEditorFocused alone, so a page that auto-focuses an input on load left the
adapter consuming every keystroke even after the user tapped the chrome
address bar. Gated on mPageFocused as well — Atlas BrowserAdapter commit
ce199bc. Jihad extends the same expression with mFlashGestureLock so a Flash
game (which focuses no HTML editor) also receives its keys instead of
leaking them to the chrome; that extension is the Jihad project's own.
- BrowserAdapter rotation-aware composite: useGraphicsContext=true + bitblt
the offscreen (wrapped as a Piranha PGSurface) THROUGH the WebKit-provided
PGContext, which carries the card's rotation/scale transform. This makes
portrait<->landscape rotation render correctly (the raw dstBuffer blit is
row-major in the card's logical space and sheared/tiled after a rotate) —
Atlas BrowserAdapter handlePaint graphics-context path. The Piranha PG* ABI
declarations (render/adapter/PGContext.h, PGSurface.h) are the Jihad
project's own minimal reconstruction of the webOS SDK interface (resolved at
load time from the device libWebKitLuna.so), not copied from HP or Atlas.
- Self-contained install model (packaging/, build/webos-oe/recipes-jihad/):
run the engine + render daemon IN PLACE from the app's own cryptofs
deviceroot and copy NOTHING to /media/internal, because that vfat volume is
the user's USB mass storage and must stay free of app internals; confine the
rootfs footprint to the NPAPI adapter plugin and the app's own upstart job,
opened in a single remount-rw window and reversed exactly by prerm. Adopted
from atlas-browser-app/packaging/{ipk-postinst.sh,ipk-prerm.sh}, including
the practice of removing only the package's own files on uninstall so stock
registrations survive. Jihad's variant-namespacing (three independent
packages) is its own.
- Low-memory design patterns from atlas-wpe-backend/BrowserPageWPE.cpp:
pin the engine memory budget near the REAL free memory so purges happen
before system OOM, throttle pressure handling to avoid GC thrash, and
persist the cookie jar on disk so consent/login cookies survive daemon
restarts (EngineHost memory-pressure watcher + profile dir provider).
Palm/HP webOS BrowserServer (this project's upstream base, Apache-2.0)
The daemon's low-memory reaction (timed memory watch -> notify + malloc_trim,
tiered response) follows the original BrowserServer memchute watcher
(BrowserServer::doMemWatch / getMemInfo).
Arctic Fox and Mypal68 (Pale Moon / Goanna family forks for legacy hardware)
Copyright (c) their respective contributors, MPL-2.0.
Origin: https://github.com/rmottola/Arctic-Fox
https://github.com/Feodor2/Mypal68
The 512 MB device JS-heap tuning in goanna.js (javascript.options.mem.
high_water_mark, gc_incremental_slice_ms) follows the values these forks
ship for low-memory/slow-CPU machines.
--------------------------------------------------------------------------------
Trademark notice
"Pale Moon", "Basilisk", and Moonchild Productions marks and logos remain the
property of their owners and are NOT used by Jihad Browser. All such branding
is stripped from the embedded engine build. See LICENSE for details.
--------------------------------------------------------------------------------
Personas bundled with Jihad Browser (render/goanna/personas/)
Free Palestine: from the photograph "Village of Battir" by Labour Palestine,
https://www.flickr.com/photos/labour2palestine/16428074717/ (CC BY 2.0,
https://creativecommons.org/licenses/by/2.0/); cropped, scaled, the sky deepened, the flag and
the words (Noto Sans Black, SIL Open Font License 1.1) drawn over it. CC BY 2.0.
Aurora Silk: drawn for this project (MPL-2.0).
The others come from addons.riverstonerelay.org, credited there. See CREDITS.md.
--------------------------------------------------------------------------------
Runtime libraries bundled in deviceroot/hl/ (every package)
--------------------------------------------------------------------------------
The engine and the daemon run in place from the app's own directory, with their own C runtime
and the system libraries they need, because the TouchPad's are too old. Each is a third
party's work under its own licence; the texts are in licenses/ of the package and this
repository.
GNU C Library 2.23 (ld-2.23.so, ld-linux.so.3, libc.so.6, libm.so.6, libpthread.so.0,
libdl.so.2, librt.so.1, libresolv.so.2, libnss_dns.so.2, libnss_files.so.2)
Copyright (C) Free Software Foundation, Inc. LGPL-2.1 or later (licenses/LGPL-2.1.txt).
Built by crosstool-NG 1.25.0 with its 14 patches for glibc 2.23: MODIFIED.
GCC 9.4.0 runtime (libgcc_s.so.1, libstdc++.so.6)
Copyright (C) Free Software Foundation, Inc. GPL-3.0 or later with the GCC Runtime Library
Exception 3.1 (licenses/GPL-3.0.txt, licenses/GCC-exception-3.1.txt).
From Debian 8 "jessie" (armel), unmodified; Debian's copyright files, which carry the
authors' notices and licence terms, are in licenses/runtime/:
libasound.so.2 alsa-lib 1.0.28 LGPL-2.1 or later (libasound2.copyright.txt)
libexpat.so.1 Expat 2.1.0 MIT (libexpat1.copyright.txt)
libfontconfig.so.1 fontconfig 2.11.0 MIT-style (libfontconfig1.copyright.txt)
libfreetype.so.6 FreeType 2.5.2 FreeType License (libfreetype6.copyright.txt)
libglib-2.0.so.0, libgthread-2.0.so.0 GLib 2.42.1 LGPL-2.0 or later (libglib2.0-0.copyright.txt)
libpcre.so.3 PCRE 8.35 BSD-3-Clause (libpcre3.copyright.txt)
libpng12.so.0 libpng 1.2.50 libpng licence (libpng12-0.copyright.txt)
libz.so.1 zlib 1.2.8 zlib licence (zlib1g.copyright.txt)
Portions of this software are copyright (c) The FreeType Project (www.freetype.org). All
rights reserved. This software is based in part on the work of the FreeType Team.
Corresponding source (LGPL-2.1 section 4, GPL-3.0 section 6):
glibc 2.23 and GCC 9.4.0: the release tarballs named in
build/webos-oe/toolchain/tarballs.manifest (sha256-pinned, with their download URLs),
crosstool-NG 1.25.0's patches for them (third_party/crosstool-ng/packages/glibc/2.23/,
packages/gcc/9.4.0/) and the configuration build/webos-oe/toolchain/jihad.defconfig, all
in https://git.trueog.net/NotAlexNoyle/Jihad-Browser; build/webos-oe/toolchain/build.sh
rebuilds the toolchain from them.
The Debian libraries: the source packages of the versions named in
build/webos-oe/arm-sysroot-debs.manifest, at http://archive.debian.org/debian/pool/.
The engine's LGPL parts: the engine source named above.
These directions ship with the object code, in this file. Ask the project for a copy on a
medium if you cannot download: the address is in the README.
Also in the packages
Hyphenation patterns (deviceroot/hl/hyphenation/hyph_*.dic, 36 languages), from the UXP tree
(intl/locales/*/hyphenation/), each under its own licence stated in the pattern file's
header or beside it there (LGPL, GPL, MPL, BSD-style and others, all permitting
redistribution).
Lato (Mochi package only, lib/mochi/fonts/), by Lukasz Dziedzic, SIL Open Font License 1.1
(lib/mochi/fonts/OFL.txt), bundled with the Mochi library it belongs to.