An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
Unix History Repository
The history and evolution of the Unix operating system is made available
as a revision management repository, covering the period from its
inception in 1970 as a 2.5 thousand line kernel and 48 commands,
to 2025 as a widely-used 41 million line system. The 2 GB repository
contains about 850 thousand commits and more than eight thousand merges.
The repository employs Git system for its storage and is hosted on GitHub.
It has been created by synthesizing with custom software 22 snapshots of
systems developed at Bell Labs, the University of California at Berkeley,
and the 386BSD team, and the modern repository of the open source
FreeBSD system.
In total, about 2700 individual contributors are identified,
the early ones through primary research.
The data set can be used for empirical research in software engineering,
information systems, and software archaeology.
You can read more details about the contents, creation, and uses of this
repository through this link.
Two repositories are associated with the project:
unix-history-repo is
a repository representing a
reconstructed version of the Unix history, based on the currently
available data. This repository will be often automatically regenerated from
scratch, so this is not a place to make contributions.
To ensure replicability its users are encouraged to fork it or archive it.
unix-history-make is
a repository containing code and metadata used to build the above repository.
Contributions to this repository are welcomed.
Project status
The project has achieved its major goal with the establishment of a continuous timeline from 1970 until today. The repository contains:
snapshots of PDP-7, V1, V2, V3, V4, V5, V6, and V7 Research Edition,
Unix/32V,
all available BSD releases,
the CSRG SCCS history,
two releases of 386BSD,
the 386BSD patchkit,
the current FreeBSD repository, which now contains its full history.
The files appear to be added in the repository in chronological order according to their modification time, and large parts of the source code have been attributed to their actual authors. Commands like git blame and git log produce the expected results.
The repository contains a number of two-way merges.
3 BSD is merged from Unix/32V and Research Edition 6
Various BSD releases are merged from the development branch and a time point of BSD-SCCS
Blame is apportioned appropriately.
Tags and Branches
The following tags or branch names mark specific releases, listed in rough chronological order.
Epoch
Research-PDP7
Research-V1–6
BSD-1
BSD-2
Research-V7
Bell-32V
BSD-3, 4, 4_1_snap, 4_1c_2, 4_2, 4_3, 4_3_Reno, 4_3_Net_1, 4_3_Tahoe, 4_3_Net_2, 4_4, 4_4_Lite1, 4_4_Lite2
SCCS-END,
386BSD-0.0, 0.1, patchkit
All release and releng branches found in the
FreeBSD Git repository
A detailed description of the major tags is available in the
file releases.md.
More tags and branches are available.
The -Snapshot-Development branches denote commits that have been synthesized from a time-ordered sequence of a snapshot's files.
The -VCS-Development tags denote the point along an imported version control history branch where a particular release occurred.
Cool things you can do
If you have a broadband network connection and about 2 GB of free disk space,
you can download the repository and run Git commands that go back decades.
Run
git clone https://github.com/dspinellis/unix-history-repo
git checkout BSD-Release
to get a local copy of the Unix history repository.
View log across releases
Running
git log --reverse --date-order
will give you commits such as the following
commit 64d7600ea5210a9125bd1a06e5d184ef7547d23d
Author: Ken Thompson <ken@research.uucp>
Date: Tue Jun 20 05:00:00 1972 -0500
Research V1 development
Work on file u5.s
Co-Authored-By: Dennis Ritchie <dmr@research.uucp>
Synthesized-from: v1/sys
[...]
commit 4030f8318890a026e065bc8926cebefb71e9d353
Author: Ken Thompson <ken@research.uucp>
Date: Thu Aug 30 19:30:25 1973 -0500
Research V3 development
Work on file sys/ken/slp.c
Synthesized-from: v3
[...]
commit c4999ec655319a01e84d9460d84df824006f9e2d
Author: Dennis Ritchie <dmr@research.uucp>
Date: Thu Aug 30 19:33:01 1973 -0500
Research V3 development
Work on file sys/dmr/kl.c
Synthesized-from: v3
[...]
commit 355c543c6840fa5f37d8daf2e2eaa735ea6daa4a
Author: Brian W. Kernighan <bwk@research.uucp>
Date: Tue May 13 19:43:47 1975 -0500
Research V6 development
Work on file usr/source/rat/r.g
Synthesized-from: v6
[...]
commit 0ce027f7fb2cf19b7e92d74d3f09eb02e8fea50e
Author: S. R. Bourne <srb@research.uucp>
Date: Fri Jan 12 02:17:45 1979 -0500
Research V7 development
Work on file usr/src/cmd/sh/blok.c
Synthesized-from: v7
[...]
Author: Eric Schmidt <schmidt@ucbvax.Berkeley.EDU>
Date: Sat Jan 5 22:49:18 1980 -0800
BSD 3 development
Work on file usr/src/cmd/net/sub.c
View changes to a specific file
Run
git checkout Research-Release
git log --follow --simplify-merges usr/src/cmd/c/c00.c
to see dates on which the C compiler was modified.
Annotate lines in a specific file by their version
Run
git blame -C -C usr/sys/sys/pipe.c
to see how the Unix pipe functionality evolved over the years.
3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 53) rf->f_flag = FREAD|FPIPE;
3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 54) rf->f_inode = ip;
3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 55) ip->i_count = 2;
[...]
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 122) register struct inode *ip;
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 123)
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 124) ip = fp->f_inode;
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 125) c = u.u_count;
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 126)
1f
Read the full README on GitHub