Open-Source Wikis

/

Gecko

/

Fun facts

mozilla/gecko-dev

Fun facts

Selected curiosities from one of the oldest open-source codebases on the public web.

The ns prefix is from Netscape

Every C++ class beginning with ns (e.g., nsCOMPtr, nsIChannel, nsString) inherits the prefix from Netscape. Modern Mozilla code increasingly uses mozilla:: namespaces (e.g., mozilla::dom::Document), but the nsI interface prefix remains the dominant pattern in xpcom/, dom/, netwerk/, and elsewhere.

CLOBBER is a real file

The repository root contains a file literally named CLOBBER. When you commit a change to the build system that requires a clean rebuild, you bump the contents of CLOBBER. The build will then refuse to do an incremental build until you remove your objdir. It is, essentially, a file whose only job is to invalidate caches.

NSPR predates C++11

nsprpub/ — the Netscape Portable Runtime — is an OS abstraction layer that predates C++11 by more than a decade and std::thread by even longer. It provides threads (PR_CreateThread), atomics (PR_AtomicAdd), file I/O, sockets, and a portable type system (PRInt32). Despite being mostly redundant with modern standard libraries, it is still pervasively used because the code base is older than the alternatives.

SpiderMonkey is older than V8

The first SpiderMonkey was written by Brendan Eich in 1996 (alongside JavaScript itself). Today's js/src/ is the result of nearly three decades of continuous development, including roughly five generations of JIT (the modern stack: Baseline Interpreter → Baseline JIT → Warp/Ion).

"Fennec" → "Fenix"

The Android browser was codenamed Fennec (a small fox) for nearly a decade. The 2020 rewrite on top of GeckoView was codenamed Fenix (mythological phoenix). Both names live on in the tree: comments and bug components still use "Fennec", while mobile/android/fenix/ is the canonical app directory.

XUL never quite died

Despite years of "XUL is going away" plans, browser/ and toolkit/ still contain a meaningful amount of .xhtml documents that use a small surviving set of XUL elements (xul:browser, xul:menupopup, xul:treechildren, …). The grand replacement plan migrated most widgets to HTML Custom Elements, but a few XUL primitives are still tightly fused to platform internals and remain.

Mozilla wrote its own IDL three times

Three IDL families coexist in the tree:

  • .idl — XPIDL, for XPCOM interfaces (Netscape-era).
  • .webidl — WebIDL, the W3C standard, for Web platform APIs (modern era).
  • .ipdl — IPDL, Mozilla's own IDL for cross-process protocols (e10s era).

Each has its own compiler living in xpcom/idl-parser/, dom/bindings/, and ipc/ipdl/ respectively.

mozilla-central is famous for "burning the tree"

Mozilla CI culture established the term "closed tree": when CI is broken, no new patches may land. You will see "CLOSED TREE" repeatedly in commit messages — sometimes as a tag accepted by the landing infrastructure to override the closure, sometimes as a description of why a backout was needed. The tree is closed and reopened multiple times per day.

Trains, sheriffs, and try

Mozilla operates a "release train" model with sheriff rotations. Sheriffs monitor the tree for failures and back out patches; try lets developers preview a build before pushing to mozilla-central. The directory taskcluster/ is the source of truth for what runs where on each push.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Fun facts – Gecko wiki | Factory