Skip to content

Latest commit

 

History

History
627 lines (420 loc) · 32.3 KB

File metadata and controls

627 lines (420 loc) · 32.3 KB

The Complete History of Hack

From 1982 to 2026: How Hack survived digital decay

This document reflects the current best historical reconstruction based on primary sources recovered as of 2025-2026. Where earlier secondary accounts conflicted with newly recovered source code and contemporaneous documentation, those discrepancies have been corrected and cited. For the underlying evidence, see TIMELINE.md and COMPARISON.md.

Timeline at a Glance

1980  ████ ROGUE
      │    ∘ Created by Toy, Wichman (UCSC) and Arnold (UC Berkeley)
      │    ∘ Establishes procedural generation + permadeath
      │    ∘ ASCII graphics, turn-based gameplay
      │
~1980-81 ░░░ HACK PROTOTYPE (Logo on Apple II)
      │    ∘ Fenlason plays Rogue at UC Berkeley, decides to build his own
      │    ∘ First version written in Logo (Turtle Graphics) on Apple II
      │
1981-82 ████ HACK DEVELOPMENT (Fenlason Era, Lincoln-Sudbury)
      │    ∘ Fenlason ports from Logo to C on PDP-11/70 running V7 Unix
      │    ∘ 57 monsters, 15 potions, 15 scrolls, 16 wands, 17 rings
      │    ∘ Collaborators: Woodland (mazes), Thome (chameleon), Payne (CURS/locks)
      │    ∘ Brian Harvey submits to USENIX 82-1 distribution tape
      │
1982  ████ USENIX DISTRIBUTION
      │    ∘ ;login: (June 1982) confirms tape completed before Boston conference
      │    ∘ Hack and JOVE are the most popular items on the tape
      │
~1983-84 ░░░ VU AMSTERDAM BRANCH
      │    ∘ Huisjes & de Wilde produce PDP-11 Hack at Vrije Universiteit
      │    ∘ Add zoos, graveyards, swamps, vaults
      │
1984  ████ HACK 1.0 (Brouwer Takes Control)
      │    ∘ Andries Brouwer distributes Hack 1.0 (Dec 17, 1984)
      │    ∘ Near-complete rewrite: adds shops, pets, long worms
      │    ∘ Renames Amulet of Frobozz to Amulet of Yendor
      │    ∘ 61 monster types, expanded food/armor/item systems
      │
1985  ████ HACK 1.0.2 / 1.0.3
      │    ∘ 1.0.2 (April): female adventurer, moon phases, pools
      │    ∘ 1.0.3 (July): Brouwer's final version, 19,239 lines
      │    ∘ Direct template for NetHack development
      │
1987  ████ NETHACK SPLITS OFF
      │    ∘ Stephenson, Miller, and Walz fork Hack 1.0.3
      │    ∘ "More everything" philosophy wins popularity
      │    ∘ Hack development effectively stops
      │
1990s ░░░ THE DARK AGES
      │   ∘ K&R C becomes obsolete, builds fail
      │   ∘ NetHack dominates, Hack largely overshadowed
      │   ∘ BSD ports keep minimal versions alive
      │
2010s ░░░ DIGITAL ARCHAEOLOGY
      │   ∘ Retrocomputing renaissance begins
      │   ∘ Emulation projects preserve binaries
      │   ∘ Source recovery efforts struggle with compilation
      │
2025  ████ RESTOHACK RESURRECTION
      │    ∘ K&R → ANSI C conversion (250+ functions)
      │    ∘ Memory safety without behavior changes
      │    ∘ CMake build system, cross-platform support
      │    ∘ Authentic 1984 gameplay preserved (verified by testing)
      │
2025  ████ PROTOHACK: THE LOST SOURCE RECOVERED
      │    ∘ Brian Harvey provides preserved PDP-11 backups from LSRHS
      │    ∘ Fenlason's original 1981-82 source code restored to run on modern Linux
      │    ∘ Primary-source research resolves 40+ years of timeline uncertainty

Key: ████ = Active Development    ░░░ = Dormancy/Preservation

protoHack = original source recovery + research. restoHack = stabilized restoration + curated history. docs/research/ = shared evidence base.

Project Status: Complete - Authentic 1984 Hack running on modern systems Code Provenance: FreeBSD 4.10 Games Collection Documentation: CODING_STANDARDS.md | CHANGELOG.md


Table of Contents

  1. The Genesis: Rogue and the Birth of a Genre (1980)
  2. Enter the Hack: Fenlason's Revolution (1981-1982)
  3. The VU Amsterdam Branch (1983-1985)
  4. The Brouwer Era: Hack's Golden Age (1984-1985)
  5. The Great Schism: NetHack's Rise (1985-1987)
  6. The Dark Ages: Abandonment and Decay (1990s-2000s)
  7. Digital Archaeology: Preservation Efforts (2010s)
  8. The Lost Source: Rediscovery (2025)
  9. The Resurrection: restoHack (2025)
  10. Technical Legacy and Cultural Impact

The Genesis: Rogue and the Birth of a Genre (1980)

The Original Vision

In 1980, Michael Toy and Glenn Wichman (UC Santa Cruz) created Rogue. Ken Arnold (UC Berkeley) later joined, contributing curses support and interface improvements. Together, they created something that would fundamentally change computer gaming. Rogue wasn't just a game; it was a revolutionary concept that combined:

  • Procedural generation: Every dungeon was unique, generated algorithmically
  • Permadeath: No save-scumming, no respawns—death was final
  • ASCII graphics: Pure text-based visualization that left everything to imagination
  • Turn-based tactical combat: Every move mattered in a chess-like battle system

Technical Foundation

Rogue was written in C for Unix systems, utilizing:

  • Curses library for terminal control and screen management
  • K&R C (pre-ANSI) programming style
  • File-based save system with character serialization
  • Minimal memory footprint (< 100KB typical)

The source code was compact, elegant, and deeply tied to Unix philosophy: "Do one thing and do it well."

Cultural Impact

Rogue emerged during the golden age of Unix development at universities. It spread through ARPANET, university networks, and tape sharing between institutions. The game became legendary on campuses, creating the first generation of "roguelike" addicts.


Enter the Hack: Fenlason's Revolution (1981-1982)

The Visionary High School Student

The timeline was previously uncertain; this has now been resolved through the recovery of original 1981-82 source code and contemporaneous documentation (see TIMELINE.md).

In the summer of 1980, Brian Harvey — Computer Director at Lincoln-Sudbury Regional High School in Sudbury, Massachusetts — invited students to California for a summer class he was teaching at San Francisco State University. During the trip, Jay Fenlason visited UC Berkeley and played Rogue for the first time: "I think I got a little bit obsessed then, and like any obsessed person who'd been cut off, I decided to build my own." (Craddock, p. 92)

Fenlason first created Hack in Logo (Turtle Graphics) on an Apple II. Once satisfied with the prototype, he migrated the game to C on the PDP-11/70 at Lincoln-Sudbury (Craddock, p. 94). As he recounts in a 2000 Linux.com interview with Julie Bresnick: "I was curious about some of the game play issues involved in designing it, things like how the rooms and corridors were generated, so I started hacking up some random level generators and stuff to try things out."

When someone looked over his shoulder and asked what he was working on, they said "oh, that's cool; when do we get to play it?" — and Hack was born.

Collaborators

Fenlason developed Hack as his "first semester programming project" (READ_Me) on a PDP-11/70 running V7 Unix (alpha test site for 2.9BSD), administered by a student-run Computer Center Users Society with ~50 members who had keys and unsupervised access. Harvey, whose background was in the MIT and Stanford AI labs, had built the school's computing environment to resemble those labs: "a powerful computer system, with lots of software tools, an informal community spirit, and not much formal curriculum."

Working with three collaborators:

  • Kenny Woodland (KW) — Maze-generating code for the bottom level, the original BUZZ() function, and "general random things" (READ_Me). Also contributed code for a game called Bombs. (Craddock, p. 94)
  • Mike Thome (MT) — Invented the chameleon, a monster that "could take on the appearance and abilities of other types of monsters" (Craddock, p. 94). Credited in READ_Me as "The original chamelian" [sic].
  • Jonathan Payne (JP) — The lock file system and "the massive CURS()" (READ_Me). Also the author of JOVE (Jonathan's Own Version of Emacs). Payne and Fenlason had "a friendly rivalry going on as to whose program, JOVE or Hack, could update the screen most efficiently" (Craddock, p. 94). Both programs shipped on the same USENIX 82-1 tape.

What Fenlason Actually Built

The exact content of Fenlason's original was long unknown; a detailed comparison is now possible thanks to the 2025 source recovery (see COMPARISON.md). The recovered code reveals a leaner, more focused game than later versions:

Monster System

  • 57 monsters (56 in an 8x7 array + vampire bat) — vs. Rogue's 26
  • Unique creatures found in no other variant: displacer beast, wumpus, ugod, xerp, zelomp
  • Polymorphic chameleon (Thome's contribution)
  • The Amulet of Frobozz (Brouwer later renamed it to the Amulet of Yendor)

Item System

  • 15 potions (including "alcohol" — later variants changed this to "booze")
  • 15 scrolls (including unique "rust armor" scroll and original incantation names: "Andova Begarin", "Velox Neb", "Foobie Bletch", "Elbib Yloh")
  • 16 wands, 17 ring types (including unique "increase hit points" ring)
  • 6 armor types (suits only: leather through plate)
  • 2 food types (food ration and fruit)

What Was NOT in Fenlason's Original

Several features commonly attributed to early Hack were actually added by later developers:

  • No shops or shopkeepers — Brouwer's own README confirms these were his addition
  • No pet/dog system — the struct monst has no mtame field; Brouwer added pets
  • No long worms — Hack 1.0's #ifdef NOWORM conditional preserves the transition
  • No special room types (zoos, vaults, graveyards) — added by Huisjes & de Wilde
  • No pools or water — location types were limited to wall, door, corridor, room

Technical Architecture

Fenlason's struct monst was notably simpler than later versions, using a combined 2-bit mstat field for flee/sleep/frozen states and including sinv (see invisible) and mstuck fields not present in any other variant:

/* Fenlason's original struct monst (original/hack.h:70-82) */
struct monst {
    struct monst *nmon;
    struct permonst *data;
    xchar mx, my;
    char mhp, orig_hp;      /* char, not int — PDP-11 economy */
    char invis, cham;
    char mspeed, mcan;
    char mstuck;             /* unique to Fenlason */
    char sinv;               /* unique to Fenlason */
    char mstat;              /* 2-bit combined state field */
};

The Hardware and Philosophy

Lincoln-Sudbury was near Maynard, Massachusetts, where DEC headquarters were located. The school's PDP-11 ran Unix in an environment that Harvey had deliberately modeled on the university computing culture he knew from MIT and Stanford.

Even decades later, Fenlason remained a purist about gaming and technology. In the 2000 Linux.com interview, he expressed concerns about modern graphical gaming: "No special effects in the movies will ever live up to those in your head." He kept his children away from computers, believing they needed to learn "more about how the world works, like climbing and building towers out of blocks and all the basic physics things that we take for granted."

USENIX Distribution

In the first half of 1982, Brian Harvey submitted student projects — including Hack and JOVE — for inclusion on the USENIX distribution tapes (82-1). ;login: Vol. 7, No. 3 (June 1982) reports that the tape had been completed, noting the Lincoln-Sudbury submission containing "quite a few games." The tapes were distributed at the Boston USENIX conference in July 1982 — the same conference where Toy and Arnold presented their Rogue talk.

Fenlason later recalled: "Usenix had biannual meetings, Unix users would get together and swap war stories. For each meeting they'd put together a tape of some of the contributed software. I put [Hack] on the tape and forgot about it until someone I know mentioned that the two most popular pieces of software on that particular tape were my silly game and my friend Jonathon's text editor."

From there, Hack spread through USENIX conference tapes, university computer labs, and USENET newsgroups. By the early-to-mid 1980s, Hack had become a prominent roguelike experience, with Fenlason voluntarily avoiding participation in further development after spawning the original.


The VU Amsterdam Branch (1983-1985)

Around 1983-84, Michiel Huisjes and Fred de Wilde at Vrije Universiteit (VU), Amsterdam, produced their own PDP-11 version based on pre-1.0 Hack. Andries Brouwer later described it (in an April 1985 Usenet reply) as copied from his directory without permission while Hack 1.0 was still in development; he noted it was not in shape for distribution and lacked many features present in 1.0.

The VU Amsterdam developers made substantial additions of their own, documented in their README:

"Some additions we (Fred de Wilde and Michiel Huisjes) made are — The Vault / The Swamp / The Zoo / The Graveyard"

They also replaced Fenlason's scroll of confuse monster with a "losing" scroll (drops all inventory), converted simple teleportation into a level-jumping elevator system, replaced the wand of striking with "exhaustion", and added wands of confusion and door closing. Their version inflated hit dice for the dragon (10 → 20hd), purple worm (15 → 20hd), and demon (10 → 14hd).

Huisjes published the PDP-11 Hack to Usenet (net.sources) in February 1985 as five shar parts. In May 1985, a PC/IX port adapted it for IBM PC UNIX.


The Brouwer Era: Hack's Golden Age (1984-1985)

The Near-Complete Rewrite

On December 17, 1984, Andries Brouwer at Stichting Mathematisch Centrum (CWI), Amsterdam, distributed Hack 1.0 to net.sources in 15 shar parts (sender: play@mcvax.UUCP). The announcement promised 10 parts but there were actually 15, all sent on the same day. The volume of Hack traffic on Usenet prompted Gene Spafford to create the net.games.hack newsgroup.

Brouwer later wrote that Hack 1.0.3 "contains very little if anything from the original sources." This was a near-complete rewrite, not merely an expansion.

What Brouwer Added

The source comparison makes clear the scale of Brouwer's transformation:

New Game Systems

  • Shops and shopkeepers — an entire economic layer with pricing, theft mechanics, and consequences
  • Pet/dog system — three dog types (li_dog, dog, la_dog) with full movement AI, loyalty, and training (hack.dog.c, 400+ lines)
  • Long worm segments — multi-tile creatures with segment tracking
  • Amulet of Yendor — renamed from Fenlason's Amulet of Frobozz

Content Expansion

  • 61 monster types (up from Fenlason's 57), including shopkeeper, minotaur, nurse, unicorn
  • 16 food types (up from 2): tripe ration, pancake, dead lizard, fortune cookie, fruits, egg, carrot, tin, garlic, corpse
  • 12 armor types (up from 6): added banded mail, studded leather, elven cloak, helmet, shield, gloves
  • Wand of wishing and wand of make invisible — powerful new magic items

Mathematical Precision

Brouwer brought his mathematical and coding theory background to bear on game design: tight probability distributions, carefully structured data tables, and algorithmic approaches to balance that went beyond Fenlason's more experimental groundwork.

Quest (Undistributed)

Brouwer also wrote Quest, a game sharing most of Hack's source but using its own level generator (quest.mklev.c) that produced more interesting cave shapes instead of "boring rectangles." Quest was never officially distributed but leaked — a copy appeared at Vrije Universiteit, and it was listed among evidence seized in the 1990 Secret Service raids documented in Bruce Sterling's The Hacker Crackdown. Brouwer's own copy was lost when an email transfer from Amsterdam to Denmark was silently discarded by a gateway for exceeding 100 KB.

Release History

  • Hack 1.0 (Dec 17, 1984) — Initial distribution, 15 shar parts
  • Hack 1.0.1 (Jan 1985) — Patch adding a few features (sender: play@turing.UUCP)
  • Hack 1.0.2 (Apr 1-14, 1985) — Full source redistribution over two weeks. The 1.0 single-day dump had overwhelmed many sites, and 1.0.1 required the patch utility which was not universally available. Female adventurer option, moon phase effects, pools, swamps.
  • Hack 1.0.3 (Jul 23, 1985) — Brouwer's final version, distributed as an ed script against 1.0.2. 19,239 lines of meticulously crafted C code. Direct template for NetHack.

Cultural Phenomenon

By 1985, Hack had gained significant influence in academic computing environments:

  • Strategy guides circulated through academic networks
  • Variant development: Hack+, UHack, and dozens of modifications
  • Spoiler databases documenting every game mechanic
  • Source code analysis treated like literary criticism

The Great Schism: NetHack's Rise (1985-1987)

The DevTeam Revolution

On July 28, 1987, Mike Stephenson, Izchak Miller, and Janet Walz forked Hack 1.0.3 and released NetHack 1.3d — beginning independent development by a distributed group of programmers who wanted to modernize and expand Hack for a broader audience.

Philosophical Divergence

The split wasn't hostile, but it was decisive:

NetHack's Vision: "More Everything"

  • Feature proliferation: Add every requested capability

  • Platform expansion: Support DOS, Windows, Mac, Amiga

  • Visual options: Tile graphics alongside ASCII

  • Extended narratives: Deeper lore and complex quest lines

Hack's Philosophy: "Perfection Through Restraint"

  • Focused experience: Maintain the core roguelike essence

  • Unix tradition: Simple, portable, elegant solutions

  • Mathematical purity: Every addition must improve the whole

  • Source clarity: Readable, maintainable code architecture

The Inevitable Victory

By 1987, NetHack had won the popularity contest:

  • Content richness appealed to players wanting more features
  • Platform accessibility reached beyond Unix systems
  • Active development with regular releases and community support
  • Lower barrier to entry with improved documentation and tutorials

Hack development effectively ceased after Brouwer's 1.0.3 release. Fenlason, meanwhile, had long since stepped away from development. As he explained in the 2000 Linux.com interview: "It has evolved without him. It doesn't bother him, he simply plays the original version. (His wife, on the other hand, fancies playing the latest release.)" He considered the later versions to have "got so busy adding cool features and didn't spend enough time thinking about how it would effect playing the game."


The Dark Ages: Abandonment and Decay (1990s-2000s)

Technical Obsolescence

As computing evolved, Hack was left behind:

Language Evolution

  • K&R to ANSI C transition made compilation difficult

  • Library dependencies (curses variants) caused build failures

  • Memory safety standards revealed dangerous practices

  • 64-bit architecture broke pointer arithmetic assumptions

Platform Incompatibility

  • Unix fragmentation meant different behaviors on different systems

  • Terminal diversity caused display and input problems

  • File system changes broke save/restore mechanisms

  • Permission models conflicted with game file management

Cultural Forgetting

A generation grew up never knowing authentic Hack:

  • NetHack dominance made the original seem obsolete
  • Documentation decay left newcomers unable to learn
  • Community migration moved to more actively developed games
  • Academic neglect treated Hack as mere historical curiosity

Preservation Efforts

Despite neglect, some groups maintained Hack:

BSD Collections

  • FreeBSD, NetBSD, OpenBSD kept working versions

  • Linux distributions varied widely in support quality

  • Package maintainers struggled with ancient code

Academic Archives

  • University FTP sites maintained source distributions

  • Computer history projects preserved documentation

  • Digital archaeology efforts began in the 2000s


Digital Archaeology: Preservation Efforts (2010s)

The Retrocomputing Renaissance

The 2010s brought renewed interest in computing history:

Emulation Projects

  • Historical Unix environments (e.g. VAX running 4BSD in SIMH) were capable of running Hack

  • Virtual machines hosting historical Unix systems

  • Container technology isolating old software environments

Source Recovery

  • Archive.org preservation of binary distributions

  • GitHub repositories hosting historical source code

  • Academic digitization projects preserving documentation

Persistent Challenges

Even preservation efforts faced fundamental problems:

Compilation Nightmare

# Typical modern compilation attempt
$ make
gcc -c hack.c
hack.c:23: error: 'u_char' undeclared
hack.c:45: warning: assignment from incompatible pointer type
# ... hundreds of errors

Runtime Instability

  • Segmentation faults from memory management issues

  • Terminal incompatibility with modern emulators

  • File system permission conflicts

  • Character encoding problems

The Authenticity Dilemma

Every "successful" preservation changed the experience:

  • Compatibility patches altered subtle behaviors
  • Modern conveniences removed original constraints
  • Platform differences meant "same game, different feel"
  • Documentation gaps left crucial details unknown

The Lost Source: Rediscovery (2025)

Fenlason's Code Resurfaces After 40 Years

Jay Fenlason's original source code was widely considered lost. By the time he spoke to Julie Bresnick in 2000, he had long since moved on; he still played his original version at home, but had "voluntarily avoided participation pretty much since spawning the original Hack almost 20 years ago." Brouwer's near-total rewrite as Hack 1.0 became the version the world knew, and Fenlason's original largely dropped out of the historical record.

It resurfaced in 2025 when Brian Harvey, who had been Computer Director at Lincoln-Sudbury during Hack's development, provided his preserved copy of the school's PDP-11 backups to Dan Stormont for the Snap!Hack educational project. Dan published the complete original working tree at Sustainable-Games/fenlason-hack.

Chain of custody:

  1. Jay Fenlason — original author, 1981-82 (with Woodland, Thome, and Payne)
  2. Brian Harvey — preserved from LSRHS PDP-11 backups, 1982-2024
  3. Dan Stormont — Snap!Hack project, 2024-present

What the Recovery Revealed

The protoHack project restored Fenlason's original code to run on modern Linux and conducted a detailed source comparison against all known Hack derivatives. Key findings:

  • The timeline is now resolved: ;login: (June 1982) confirms the code was complete and submitted for the USENIX 82-1 distribution tape before the Boston conference that July.
  • Attribution corrections: Shops, pets, long worms, and special rooms were NOT in Fenlason's original — they were added by Brouwer and the VU Amsterdam developers. Earlier secondary accounts that attributed these features to Fenlason have been corrected throughout this document.
  • Unique artifacts: The recovered source contains items found in no other variant — the displacer beast, "alcohol" potion, "rust armor" scroll, and original incantation names. It also preserves personal development files (.cshrc, .login), Zork reference material, and experimental branches showing code evolution.
  • Structural evidence: Fenlason's struct monst is simpler than all derivatives, with unique fields (sinv, mstuck, combined mstat) and missing fields (mtame, wormno, mxlth) that prove the pet and worm systems were later additions.

Lineage

Rogue (1980, Toy/Wichman/Arnold)
  |
  v
Hack in Logo (~1980-81, Apple II, Fenlason)
  |
  v
Fenlason Hack in C (1981-82, PDP-11/70, Lincoln-Sudbury)
  |
  +---> PDP-11 Hack (~1983, Huisjes & de Wilde, VU Amsterdam)
  |       |
  |       +---> PC/IX Hack (1985, IBM PC UNIX port)
  |
  +---> Hack 1.0 (Dec 1984, Brouwer, CWI Amsterdam)
  |       |
  |       +---> Hack 1.0.1 (Jan 1985)
  |       +---> Hack 1.0.2 (Apr 1985)
  |       +---> Hack 1.0.3 (Jul 1985)  <-- restoHack source
  |               |
  |               +---> NetHack 1.3d (Jul 1987, Stephenson/Miller/Walz)
  |
  +---> Quest (Brouwer, undistributed — lost)

The Resurrection: restoHack (2025)

Modern Preservation

restoHack brought authentic 1984 Hack to modern systems through systematic modernization:

  • K&R to ANSI C: 250+ functions converted
  • Memory safety: Buffer overflow protection without behavior changes
  • Build system: CMake replacing fragile Makefiles
  • Cross-platform: Linux, BSD, macOS support verified

Technical Approach

Code changes follow strict documentation standards:

/* Original 1984: strcpy(buf, name); */
(void) strncpy(buf, name, sizeof(buf)-1);  /* MODERN: Safe bounds */
buf[sizeof(buf)-1] = '\0';

Results

  • 0 behavioral changes: Authentic 1984 gameplay preserved
  • 0 compiler warnings: Clean compilation on modern systems
  • Complete source preservation: Original code documented inline

Technical Legacy and Cultural Impact

Technical Innovations That Endured

Data Structure Mastery

Hack helped pioneer object-oriented concepts in C:

  • Polymorphic design through function pointers and data tables
  • Memory optimization with bitfield packing and custom allocators
  • Linked list architecture for dynamic object management
  • Modular code organization enabling extension and modification

Algorithm Contributions

  • Procedural generation techniques still used today

  • Pathfinding AI that balanced challenge and fairness

  • Random number usage demonstrating proper statistical game design

  • State machine implementation for complex monster behaviors

Cultural Influence

Academic Impact

  • Computer science education used Hack to teach core concepts
  • Research methodology applied game analysis to software engineering
  • Open source philosophy demonstrated collaborative development

Gaming Evolution

  • Roguelike genre established fundamental design principles

  • Emergent gameplay showed how simple rules create complexity

  • Player agency demonstrated respect for player intelligence

  • Difficulty design proved that challenge could be fair and rewarding

Modern Descendants

Contemporary games owing debt to Hack:

  • Diablo (real-time roguelike elements)
  • The Binding of Isaac (procedural generation and permadeath)
  • FTL (resource management with permanent consequences)

Linguistic Legacy

Hack exemplified mechanics that came to define roguelikes:

  • "Roguelike" as a genre definition
  • "Permadeath" for permanent character loss
  • "Proc gen" for procedural generation
  • "RNG" for random number generation effects
  • "Min-maxing" for character optimization strategies

Conclusion: The Bridge Restored

Hack's story is one of innovation, perfection, abandonment, and resurrection. It represents a crucial link in gaming evolution—the experimental bridge between Rogue's simplicity and NetHack's complexity.

Historical Significance

Hack demonstrates that some innovations are worth preserving exactly as created. Brouwer's mathematical precision and Fenlason's creative vision produced something that modern game design still hasn't surpassed in its specific domain.

The restoHack Achievement

By bringing authentic 1984 Hack to 2025 systems, restoHack proves that software preservation can be both historically accurate and technically modern. The complete methodology is documented in the restoHack Coding Standards, providing a replicable template for other software archaeology projects.

It demonstrates how digital archaeology should work: respect the past, serve the present, enable the future.


Hack remains the experimental bridge between Rogue's simplicity and NetHack's complexity.


References and Further Reading

Primary Sources

Research Documents

  • TIMELINE.md — Corrected chronology with primary source citations
  • COMPARISON.md — Evidentiary comparison of all known Hack source variants
  • protoHack — Restoration of Fenlason's original 1981-82 source code

restoHack Project Documentation

Academic and Historical Context

Technical Implementation


Contributing to This Document

This history represents ongoing research into Hack's development and cultural impact. Contributions are welcome:

  1. Corrections: Historical inaccuracies or technical errors
  2. Additions: Missing events, people, or technical details
  3. Sources: Additional primary source material or documentation
  4. Verification: Independent confirmation of claims and dates

Please submit improvements via pull request to the restoHack repository with supporting documentation.


This document is maintained as part of the restoHack software preservation project. Last updated: February 2026.