Milán Major

netscape-revival

1 branch
Code

README.md

# 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.

---