Milán Major

netscape-revival

1 branch
Code

README.md added

authorMilán Major <milan.major.work@gmail.com>
date2026-08-06 16:17
commit8aec58bdee22bb5b4049bee72b1589ea80375d56
parente59b22f
changes1 file, +149 -0

Diffstat

README.md | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 149 insertions(+)

Diff

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ed6ae81
--- /dev/null
+++ b/README.md
@@ -0,0 +1,149 @@
+# Netscape Revival
+
+A preservation and revival project for **Netscape Communicator 3.0.2**.
+
+The goal of Netscape Revival is to bring an important piece of early web history back into a usable, buildable, and understandable state on modern Unix-like systems — while preserving as much of the original software and architecture as possible.
+
+This project serves an educational purpose - to understand development and compilation process, to teach debugging methods, and to show how many features does the modern internet rely on.
+
+
+## Project Status
+
+**Experimental / Work in Progress**
+
+The project's aim to make a reproducable and stable compilation of the netscape binary on Debian Linux, and to expand the code later to not just show historical Netscape, but to show what might have been.
+
+## Why?
+
+Netscape Communicator was one of the defining pieces of software of the early Web.
+
+Its source code represents a very different software environment from today's browsers:
+
+* X11
+* Motif
+* C
+* Unix process models
+* X resources
+* early networking libraries
+* NSPR
+* Mocha / early JavaScript
+* pre-standardization HTML
+* early browser UI conventions
+
+Getting it running today is therefore both a software archaeology project and an interesting exercise in understanding how radically the assumptions surrounding desktop software have changed.
+
+The intention is to preserve those characteristics rather than erase them.
+
+## Philosophy
+
+The project follows a few basic principles.
+
+### Preserve first
+
+The original source should remain recognizable.
+
+Changes should be kept separate from the original implementation whenever practical, and modern fixes should be documented rather than silently replacing historical behavior.
+
+### Modernize only where useful
+
+Some things need to change simply because the original build environment no longer exists.
+
+For example, modern compilers may reject constructs that were perfectly valid in the environment Netscape was originally developed for.
+
+Likewise, old X11 and Motif dependencies can be difficult to reproduce on current Linux distributions.
+
+These problems may require compatibility patches.
+
+### Understand before replacing
+
+When something crashes, the first goal is to understand **why**.
+
+A compatibility shim or replacement library should not automatically be introduced simply because it makes the browser compile.
+
+This is particularly important for the Motif/X11 portions of the program, where apparently minor ABI or behavioral differences can result in difficult-to-diagnose crashes.
+
+## Building
+
+Originally the building process built some configuration files first, and then the export files.
+
+``` make config && make netscape-export ```
+
+And to clean up:
+
+``` make clobber ```
+
+### Motif
+
+One of the major challenges is the age of the Motif dependency.
+
+While libmotif-dev on Debian preserves a lot of motif conventions and calls, it's different in behaviour than the OpenMotif library of the time. Instead of hunting down and compiling old OpenMotif, we will simply use a newer one, so the build process will be more easily reproducable on modern systems. People expect to just clone the repository, install dependencies from their OS's repository and then be able to make the binary.
+
+## Debugging
+
+Debugging is performed primarily with GDB.
+
+For example:
+
+```bash
+gdb ./netscape-export
+```
+
+Useful breakpoints and stack traces are used to investigate crashes occurring during browser initialization and window creation.
+
+One area of particular interest is the interaction between Netscape's XFE frontend and Motif widgets.
+
+## Branches
+
+The repository uses branches to separate different stages of the revival process.
+
+### `legacy`
+
+The historical source tree and the starting point for the revival work.
+
+### `first-compilation`
+
+The first attempts to get the original source compiling on a contemporary system.
+
+## What This Project Is Not
+
+Netscape Revival is not:
+
+* a commercial Netscape product
+* an attempt to recreate the modern Firefox codebase
+* a modern browser with a Netscape-themed interface
+* a complete implementation of contemporary HTML/CSS
+* an attempt to make every modern website work
+* a replacement for a modern secure web browser
+
+It is primarily a **software preservation and experimentation project**.
+
+## Security Warning
+
+This software is extremely old.
+
+Even if it becomes possible to browse modern websites with it, **Netscape Communicator 3.0.2 should not be considered a secure modern web browser**.
+
+Do not use it for:
+
+* banking
+* authentication
+* sensitive communications
+* handling confidential information
+* untrusted websites
+
+Running the browser inside a disposable VM or otherwise isolated environment is strongly recommended.
+
+## License
+
+The Netscape source code is historical software and its licensing terms should be consulted before redistribution.
+
+This repository's own patches, documentation, build scripts, and other original work should be clearly distinguished from the original Netscape source.
+
+## Disclaimer
+
+Netscape, Netscape Communicator, and related trademarks are properties of their respective owners.
+
+This is an independent preservation and research project and is not affiliated with or endorsed by Netscape or Mozilla.
+
+---
+