Introducing: Goanna

Pale Moon releases and site news
User avatar
Pale Moon guru
Pale Moon guru
Posts: 35602
Joined: 2011-08-28, 17:27
Location: Motala, SE

Introducing: Goanna

Unread post by Moonchild » 2015-06-21, 23:07

We are working on a new milestone release, Pale Moon 26, which is currently in alpha state, which will debut a new layout and rendering engine: Goanna.

This announcement will (hopefully) provide some basic information about it, the why and the how. This will not completely be without drawbacks either, but we'll be working on keeping potential impact for users to a minimum. Some techies may already have garnered the name from the repository on GitHub in the form of a new development branch.

What is Goanna?
Goanna logo.
Goanna logo.
Goanna Logo-a2.png (13.33 KiB) Viewed 27694 times
Goanna is the name for our layout and rendering engine that has become so significantly different from Gecko, that it would be wholly incorrect to continue carrying the name of its sibling. This change, just like Pale Moon, has been a gradual process of development, but is currently at the point where continuing to call it "Gecko" would both be technically and also legally incorrect.
As the name (synonymous to a group of carnivorous lizards in Asia and Australia) and logo suggests, the identification of our implementation is kept as close to its sibling as the code and feature set is (currently, anyway) - meaning it's generally the same class of engine, with broadly the same mechanics at work to parse and render content, but is still significantly different enough to clearly be its own animal (pun intended! :)).

Why do this? What's wrong with "Gecko-based"?

How is gecko used?
Gecko is historically the name of the layout and rendering engine used in Netscape products that Mozilla stems from. Unfortunately, the Mozilla group has started to blur the lines between the Gecko "platform" and the Firefox "product" by making the Gecko version synonymous with whatever version of the Firefox browser it appears in. At the same time, Gecko build identifiers are frozen, meaning the gecko "slice" (Gecko/20100101) as seen in the User Agent of Firefox is actually rather pointless and only serves as a named reference, while the "revision" number is always kept at whatever 6-week version of Firefox is published.

The technical problem
The technical problem with how Pale Moon (and FossaMail) carry the "Gecko" revision is that it is currently, similar to Firefox, tied to the product version. The problem is, however, that "our" 25.0 is nothing alike "their" 25.0 - and this is carried through to the Gecko platform version as well. This causes problems, because it leads to confusion about what is and is not supported when "Gecko 25.0" is found by a website, web application, or extension. There is no "closest match" to current revisions of gecko anymore, and even if there was, it would still just be an approximation. This isn't a situation that can be solved in the current setup and versioning of the browser, so it needs an actual change - this change is why Goanna now exists.

The legal problem
Not only technicalities stand in the way of what we do in our Pale Moon development; there's also a legal aspect to this story. Gecko as a layout engine name is actually a registered trademark.
Mozilla Trademark Policy FAQ wrote:What about "Gecko"?
Gecko® is a registered trademark of Netscape Communications Corporation. Netscape/AOL has licensed the trademark to the Foundation for use in describing our layout engine.
Since we're obviously making a significantly different implementation here and have not been licensed the use by Netscape/AOL, we can't indefinitely keep using the trademark name for what is more and more our own development and less and less the Gecko engine. I wouldn't look forward to a lawyer knocking on our door with a Cease and Desist demand for carrying the registered trademark on a different and independent product. This may be an Open Source effort but trademark law applies nonetheless.
Given this, a change of branding for what we do is not only prudent, but absolutely necessary if we want to move forward.
As an aside: Goanna is, of course, our own trademark since its inception in the context of the engine, and the logo is a licensed design that falls under my personal, full copyright. More details about that on the following copyright information page.

How will this change take place?

The change will involve a few aspects, some of which may have an impact on e.g. extensions:
  • The identifying name of the engine will be changed to "Goanna" throughout the code where applicable.
  • The version of the engine will be reset to 1.0 on the first release, and will, from that point forward, carry its own, independent, milestone.major.minor[.point] version independent of the products it is used in (similar to how Mozilla used a non-product-bound version of Gecko in Firefox prior to 4.0).
  • The Platform Version will change accordingly. For the sake of compatibility, we are planning to at least keep the original Gecko-equivalent (from an extension point of view) of the platform version present, and expose the Goanna version separately so as to break as little third party software as possible in this transition period.
  • Goanna will be put on the fast track for new major improvements and additions to the engine, while the current engine will be deprecated and receive fewer feature updates until the new milestone is ready for release. Of course, security and stability updates will continue to have priority on the current development "trunk"
What will be the impact of this change?

Apart from the freedom to continue to develop in our own direction? Hopefully very little.
As indicated though, there may be some compatibility issues with extensions if they choose code paths based on platform version, but we plan to at least change the most common code path for checking this version (through the Services module) to return a (frozen) compatibility version for historical reasons. More details about this will be posted on the developer site on in due time.
"Sometimes, the best way to get what you want is to be a good person." -- Louis Rossmann
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite