History of the Pale Moon project
This project started off as merely fiddling with the build process on
Windows, seeing first off if (at the time just one person) it could be
managed to make own Windows
builds of the Firefox browser and then seeing how these builds compared
to official ones. Finding the difference significant, the resulting
browsers (simply "own Firefox builds") were given to a number of
friends to use, with very positive results.
This was back in the time when Firefox was still in its 1.5.x stage.
Since then, Firefox, Thunderbird and Seamonkey versions specifically
different systems were built, gaining experience, learning the quirks
following code development. Eventually, with Firefox 3.5.2, it was
on what was an optimal compromise between speed, features and
useability of the browser for general use. At that point in time, the
Pale Moon project
was given shape, releasing the highly optimized browser to the public
from Oct 4th, 2009 onwards.
Since its release, it has become rather popular, with no less than
15,000 visits to the home page just in the first month of release. With
many downloads from a wide range of locations, not all of them
monitored or counted, it is anyone's guess how many people were
using it, but it surpassed anything that was initially expected.
Feedback had been positive, and as a result of several requests from
people, a second build version was created of Pale Moon, to cater
specifically to the capabilities of Athlon XP and Athlon MP processors,
still extremely popular processors for systems used at the time that
could not meet the minimum processor requirements otherwise. Later
on, a portable version was also created to allow people to take Pale
Moon with them on USB stick or removable drives.
As the source code developed, so did Pale Moon, and a few major changes
had been made with the transition from 3.5 to 3.6 versions and later
on to separate Pale Moon installations from Firefox ones. Always
attempting to strike a balance, some minor features were removed, and
later added again; feedback from the users has always been taken into
account, and the development of Pale Moon has therefore been given
shape, in part, by its users.
When version 4.0 of the Firefox code arrived, after extensive betas,
Pale Moon deviated further from its sibling by also making changes to
the standard UI (User Interface) layout. UI design choices made to
"innovate" the user interface, removing quite essential user feedback
and changing the layout of navigation controls were considered to be
poor choices, and were altered to provide a more familiar, and
also more intuitive, interface to the browser.
At this point it was also decided to keep developing the 3.6.x branch
separately, while version 4 and later became the "next generation"
An accelerated major version release scheme was started on in early
2011, with ambitious plans by Mozilla to make faster changes to
Firefox. When version 5.0 arrived, though, it turned out to be a
release that could just as well have been numbered 4.1 or similar, as
there was surprisingly little that had changed, apart from correcting
some mistakes made in the implementation of 4.0. 5.0 can therefore best
be considered a "bugfix release" of 4.0, and not really a new product.
Version 6.0 saw a similarly small amount of changes and both 5.0 and
6.0 have been considered to be a continuation of the "next generation"
branch of the Firefox product started with version 4.0. As such, 4.0
and 5.0 were discontinued for Pale Moon. This trend was continued for
In Oct 2011, a new milestone was reached with Pale Moon 7: better
resource use, faster code, and maturation of the code base to a level
where 3.x now became depreciated in favor of this version - still, the
old branch continued to be supported and developed because there was
still a clear need for it, and remained the browser of choice for
"special needs" environments.
From this point on, development on the Next Generation (versions 4 and
up) branch continued, following Mozilla Firefox for most major
releases, while the 3.6.x (Legacy) branch continued to see patches for
bugfixes, security issues and some performance improvements, including
continued support beyond Mozilla's EoL (End of Life) date for the 3.x
branch. Inevitably, though, the older engine started falling terribly
short of its intended purpose, and as more and more sites became
problematic, the legacy branch was discontinued in the summer of 2012.
April 2012 saw another milestone with the release of version 12, at
which point the release schedule stopped following Mozilla's rapid
release schedule of Firefox. From this point on, development and
release of Pale Moon became fully independent and more specifically
aimed at refining the engine and features and implementing additional,
Pale Moon specific features. Pale Moon diverged from its sibling with
each release into a separate, independent browser not longer
necessarily tied to Firefox code development or release, although a
close parallel was maintained for extension compatibility by rebasing
Pale Moon code on top of later Firefox versions.
With the release of Firefox 24 (and Pale Moon of the same version),
Pale Moon's already divergent development direction started to more
clearly separate from Firefox than it had already done before, by
focusing much more strongly on individual development of interface,
features and back-end, while adopting continued security updates
through Firefox's ESR channel. After a year of this development (and
turbulent times for Firefox with the growing dislike for the decisions
made about the browser by their development and management teams), the
decision was made for Pale Moon to completely and decisively break the
existing direct ties with Firefox (in the form of how it identifies
itself) and be a completely independent force on the browser market.
With Pale Moon 25 and later this brought us a fully independent browser
product on a sharply diverging path.
the 26.0 milestone, we changed to our own layout and rendering engine
Goanna, which has been forked off from Gecko, debuting in the Pale Moon
26 milestone release after more than 6 months in pre-release
development. It should be noted that this was merely the culmination of
on-going changes to the Gecko-named engine previously and that it had
already developed in its own direction for some time (the first real
split-off point of note was, in fact, with 24.6).
v27 era (code name "Tycho")
In 2016, a fresh fork point from mozilla-central code and subsequent
individual development led to the release of the v27.* versions of Pale
Moon, which in many ways laid the groundwork for the future in terms of
a collection of components ready for re-use and re-application on UXP
(see below). Tycho tackled many issues that were pivotal to the
maturation of Pale Moon into a modern equal of what v24 started out as,
matured Goanna through its 3.* versions, and uplifted all front-end
individual developments took place on v27, including an almost complete
rewrite of the media back-end and many changes and improvements of the
specification called ECMAScript v6.
When we created Tycho (Pale Moon 27) from a hybrid of our own
independent development being ported to a platform base of ESR38 plus
the Pale Moon 24-26 application code, completely bypassing and removing
the "native" Firefox application code that came with the esr38 tree, we
expected that would be the last time we would do such a thing. We had a
good foundation and retained practically all of Pale Moon as an
The reason we expected Tycho to be the last time was because by the
next ESR Mozilla had planned to destroy enough of itself that the
foundational technologies such as XUL, XBL, XPCOM would be a shadow of
their former selves if not changed to a degree that was simply
unuseable to anyone outside of MozCo, or simply gone and tossed into
Obviously, this wasn't the case when we (or they!) thought it would be.
ESR45 was largely okay but it wasn't enough to justify a jump in our
eyes since so much more development on Tycho had happened since,
especially in the media subsystem. Why throw that away?
Well, Mozilla has been known to take forever to do things, and the
rapid release schedule they've been on since Firefox 4.0 never changed
that; it just increased the pace of immature code changes being shipped
out to end users, and not much else. Surely, the next ESR would be too
damaged to use right? So Tycho continued the way it was developing.
Enter Firefox ESR52: more destruction happened and more co-op of
fundamental technologies happened, but also some good CSS and JS
support of a significant nature was present. Still, we didn't want to
throw Tycho away so we continued on, back porting and continuing
forward with our own independent development.
Despite the efforts and investments in Tycho,
it ultimately took on a transitional position due to the fact that
certain landmark features could not be ported from Mozilla because of
lack of community involvement, making the
browser lose some of its functional backbone required for a web
landscape more and more built on limited, JS-heavy frameworks.
Interstitial: UXP and Basilisk
Firefox Quantum happened, along with the end to Mozilla-style
extensions (XUL/toolkit/overlay, bootstrap, and jetpack). This raised
an issue... Mozilla had finally begun the final destruction of their
technology. All of it was now fair game. On one hand we were glad they
were finally doing it without any further pretense, but on the other
hand we were saddened by the tragic destruction without even the
thinnest of hopes left that they may change course and avert it.
Moonchild decided that the Quantum and general extension refugees
deserved a browser that, unlike Pale Moon, would stay much closer to
what they had then and there. An Australis Firefox drop-in replacement.
Many of this second major wave of Mozilla refugees were less likely to
fit into the Pale Moon box and just wanted a then-current-day Firefox.
Of course, the surface garbage like pocket and other Mozilla Service
tie-ins would be scraped off. This became Basilisk.
With Basilisk came a platform, of course.
We knew we couldn't maintain two platform codebases in the long run, so
the Möbius project started at the end of 2017, creating an independent
application platform to be used as the basis for future
Pale Moon versions and other XUL-based applications, called the Unified
XUL Platform (UXP), with the intent to port Pale Moon to it as well
just like we did with Tycho. However, in the meantime Basilisk and the
Möbius platform needed to reach a polish level beyond Mozilla before
that could happen.
Initially, we proceeded from a code standpoint of gecko/53 as a base,
and backporting from 54 and 55 heavily. This is why Basilisk carried a
Mozilla version number of 55 during that time. After some months,
Basilisk was released but development continued.
With the dawn of 2018 came Tobin's resurgence in participation in the
Pale Moon project, who previously conducted the primary vNext research
that lead to inital porting up the line that helped make Tycho possible.
It was time to pull the same trick twice to bring Pale Moon to the new
platform... but there was a problem! Unbeknownst to us, Mozilla had
landed a refactoring storm of changes immediately after 52 that largely
made the platform difficult to use, if not flat-out unuseable, for
anything but Firefox (there were workarounds for SeaMonkey and
Thunderbird in dev but even those had not been fully worked out yet).
This was game ending for Pale Moon that would either spell delays and
potental busting of Pale Moon on some fundamental levels or just take
much too long to reverse in the platform. We were stuck.
Taking a step back, Tobin checked Firefox ESR-52 and it was suitable, so the Take 2 plan
for the Unified XUL Platform was drafted. UXP based on the Mozilla
platform code at the Firefox ESR-52 level had several pros and cons.
The cons were obvious: lose all the work we had already done with
Basilisk and Möbius as well as more backporting work required to reach
proper code maturity levels. The pros, however, were abundant and could
not be ignored: If we were to
use the platform as a platform we
should use the most historically complete version of it that also
matched current day platform code of other projects that would reach
dead ends at Mozilla with Quantum. An additional pro was that Pale Moon
as an application would work with standard porting strategies developed
during vNext, without any major expected problems.
Take 2 was agreed on, and that is where we are today with Pale Moon,
Basilisk, and the other allied and non-aligned UXP based projects.
Going from UXP Take 2, Pale Moon's front-end (application code) was
again adapted to a different platform to retain its customizability and
ergonomics while supporting its core browsing features with Goanna 4.*
and UXP. After a long and busy 9 months, August 2018 saw the first
release of the
new milestone of Pale Moon on UXP.
Make no mistake though: this is it. There can never be another
vNext/Tycho/Möbius type of forking situation of the Mozilla code. There
isn't enough of the Mozilla technology left in the now fully
Firefox-centric codebase. It isn't even a platform codebase for many
apllications anymore. Not even a Firefox-first platform. There is just
Firefox and nothing else, there.
our independence in Pale Moon, the future of it is
continued support for the existing extension ecosystem (XUL
extensions), a focus on
desktop use, improving standards compliance and maintaining (and
possibly extending) the flexibility of the XUL framework used to build
the browser on.
More information can be found on our future