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 I could manage to make my own Windows build of the Firefox browser and then seeing how my own builds compared to official ones. Finding the difference significant, the resulting browsers (simply "my 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

I have since built Firefox, Thunderbird and Seamonkey specifically for different systems, gaining experience, learning the quirks and following code development. Eventually, with Firefox 3.5.2, I settled on what I found was an optimal compromise between speed, features and useability of the browser. At that point in time, the Pale Moon project was given shape, releasing the highly optimized browser to the public from Oct 4th, 2009.

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 are actually using it, but it has 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. 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 have 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 have been 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 1:0.975 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 changed 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, 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 resurgance 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 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.

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 use, improving standards compliance and maintaining (and possibly extending) the flexibility of the XUL framework used to build the browser on.


Pale Moon will also continue to support:
  • Binary components in extensions
  • XUL (overlay) extensions, including XPCOM/XBL
  • NPAPI plugins (e.g. Silverlight, Flash, Java, Unity web player)
  • Complete themes
  • Lightweight themes

Australis

Pale Moon will continue to use the well-known, fully customizable user interface based mostly on Firefox 4-28, and will not be following Mozilla's (and alternative rebuilds') move to the "Australis" or "Photon" user interfaces. Even so, the style and some features of those interfaces can be achieved by the flexibility of complete themes.

More information can be found on our future roadmap.

Bottom line

Pale Moon aims to remain what it is at its heart: a fully customizable web browser.
"Added tools" are nice, but may not be adopted in Pale Moon if they go beyond what should normally be part of a web browser for general use.


Site and contents © 2009-2019 Moonchild Productions - All rights reserved
Pale Moon is subject to the following licensing.
Policies: Cookies - User Content - Privacy.