History of the Pale Moon project
1.5/2.0 era
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.
3.x era
Since then, Firefox, Thunderbird and Seamonkey versions specifically
for
different systems were built, gaining experience, learning the quirks
and
following code development. Eventually, with Firefox 3.5.2, it was
settled
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
actually
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.
4-20 era
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"
branch.
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
later versions.
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.
24-26 era
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.
With
the 26.0 milestone, we changed to our own layout and rendering engine
called
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
code to be compatible with a much more JavaScript-heavy web. Many
individual developments took place on v27, including an almost complete
rewrite of the media back-end and many changes and improvements of the
JavaScript engine to implement the many points of the (massive)
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
application.
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
the void.
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.
v28+ era
Going from UXP Take 2, Pale Moon's front-end (application code) was
once
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 platform technology left in the now fully
Firefox-centric codebase. It isn't even a platform codebase for many
applications anymore. Not even a Firefox-first platform. There is just
Firefox and nothing else, there.
2021, or: how Open Source ends
In the summer of 2021, with Pale Moon solidly going into milestone 29,
the project came under attack from a group of primarily Eastern
European/former Soviet state individuals for defending its rights under
the Mozilla Public License, in particular requiring that source code
forms of forks be made available to the public and that branding be
respected. This attack ranged from threats (both legal and to life) to
attempted de-platforming of the project, to flat-out stealing of
unpublished code and spinning off copies of unfinished applications
based on it.
Ultimately, this destroyed the possibility of open, collaborative
development for the project as a whole (including other applications
like Basilisk and Interlink) and set a pretty grim precedent for Open
Source, wherein licensing is considered "optional" to follow (or
selectively, for that matter, taking advantage of the rights but not
adhering to the obligations). The hard decision was made to stop
publishing source code repositories and having public and transparent
development progress, and return to a much earlier state of releasing
the browser alongside source code snapshots in release state only.
Unfortunately this was too restrictive of an environment to properly
develop in so we were forced to eventually open our repositories back
up, albeit with a serious lesson learned about the general approach to
Open Source and total lack of respect shown by the people who are
supposed to be colleagues in the spirit of collaborative development,
even if goals and visions are different between groups operating
generally in the same area.
A (failed) reboot into the Goanna Runtime Environment™
As 2022 rolled around and with the worst of the Corona pandemic behind
us, following a controversial probe into the desires
of the browser's end-user's wishes and priorities in late 2021, Pale
Moon had a reboot. UXP was abandoned as a concept with lack of
collaboration and increasing difficulty attracting people actually
wanting to help maintain and support a very broad multi-use
multi-target platform (the main reason, as it turned out, being the
overbearing control of one bad faith actor, see below).
UXP was released to the community to further use if desired for various
forks and spin-offs, but no longer developed by the Pale Moon team.
This reboot, however, turned out to be a total failure because of the
bad faith of one of the project's main contributors, Matt A. Tobin
(colloquially known as "Tobin") where the real reason behind this split
off was to support the self-expressed notion of "making the project
[his] own or utterly destroying it". In March of that year, things came
to a head with how it came out that extrension compatibility was
factually less in the new setup (not more, as Tobin asserted initially)
and porting bugs had become tenfold more difficult, (i.e. having to do
everything Tobin's way from that point forward) and ultimately, when it
became clear the rest of the project was giving increasing resistance
to his attempted "coup", ending
in a
successful hacking attempt by Tobin of the project's DNS structure,
removing access to critical services (shutting down servers he operated
for the project), taking down the entire project for a short time and
effectively halting development for a while as damage control and
recovery of critical services was done. This therefore played out
exactly as the threat that had been made early in the year (which came
to light several months later thanks to saved IRC logs of a space Tobin
assumed was not monitored by anyone in the core of the project, but
ultimately relayed to Moonchild and coming out in the wash). Several
attempts have been made by Tobin to rewrite history in his updates and
public posts and statements to somehow make him blameless for the bad
faith actions and play down his malicious takedown efforts. As of July
2024 he has publicly
stated he will (finally) stop trying to involve himself with UXP,
Pale Moon or other independent Mozilla development.
With the Goanna Runtime
Environment (GRE) being effectively nothing but an obfuscation attempt
that was executed without proper communication, testing (resulting in
very difficult to pinpoint instability and functional issues) or
adherence to
the project's maintained vision and strategies to put the user first,
it was dismissed and development returned to UXP after communicating
intensively with the community core contributors about how to move
forward.
UXP development returned to a more open development strategy, more
historical compatibility with Mozilla, and a stronger reliance on the
community itself to use their own judgement and common sense moving
forward instead of the (attempted) tight control by Tobin at various
key points. As the year 2022 continued, more and more control points
came to
light and were addressed with solutions favoring collaboration,
transparency and open development.
As part of this "return to sanity", several other things were reverted
like the removal of Macintosh code from UXP, allowing a collaboration
with the main Mac developer (of "White Star") and unnecessary
restrictions in both the code base and now self-hosted add-ons website.
Later in 2022, a new balance was found without Tobin, but with more
active support of the community surrounding the browser and platform,
giving rise to new applications like Epyrus and a successful restart of
the Basilisk browser (which was initially discontinued to make room for
GRE and closed "cathedral-style" development) under a new developer.
The focus had once again
become one of true cooperation and doing our best to help out sibling
applications and projects.
Since then, official Macintosh builds were finally released as of Pale
Moon 32.0, and
beta-state builds for FreeBSD were also created and officially
supported by the project.
Future directions
With
our independence in Pale Moon, the future of it is
continued support for the existing extension ecosystem (XUL
extensions), a focus on
desktop computing, improving web compatibility and maintaining (and
possibly extending) the flexibility of the platform used to build
the browser and other applications on.
The future for broad web compatibility in a generic web browser is
uncertain as the big players (specifically Google) continue to grow the
behemoth of web specifications with unnecessary fluff that go far, far
beyond what would be required for sane web development; with the
continued focus on "client computing" for Web 3.0 and beyond, UXP and
Pale Moon's focus may ultimately become much more specialized for
specific environments as opposed to the commercialized web.
More information can be found on our future
roadmap.
|