HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
dspinellis
unix-history-repo
Assembly2014–2026
dspinellis / unix-history-repo

unix-history-repo

Continuous Unix commit history from 1970 until today

76Distinct people
104Mentions
0Explicit recommenders
7.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Continuous Unix commit history from 1970 until today

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year104 dated mentions

Observed mentions: 2014-05-25 22:21:07 UTC to 2026-09-18 12:06:57 UTC.

0510152014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 10 mentions; 4 submissions, 6 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 13 mentions; 1 submissions, 12 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 6 mentions; 2 submissions, 4 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 10 mentions; 2 submissions, 8 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 17 mentions; 1 submissions, 16 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC211
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC1046
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC13112
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC624
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC211
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC725
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC1028
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC909
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC17116
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC716
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC918
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC707
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC505

From the project README

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

What Hacker News says

104 sources
A lot of people have already made almost all of the same observations that I was going to make. Except for: There is no bug that originates in a GNU version of an old networking program and magically makes its way into the NetBSD, FreeBSD, DragonFlyBSD, and OpenBSD (Yes; I checked.) versions of that program. History simply didn't happen that way. This bug goes as far back at least as far as the Jolitz-released 386BSD source for libexec/telnetd , where it can be found and which is credited in the GNU versions of the file. GNU just took the 386BSD code. But BSD had a telnetd before 386BSD. In BSD, telnetd itself goes back to 1983. Although its code to do line mode did not pre-date RFC 1116, which was published in August 1989. The code to do line mode was written the month after that RFC, by Paul Borman, and the bug is in the very first
Read the rest
version of that code: * https://github.com/dspinellis/unix-history-repo/blob/dc8d504... This bug is not 32 years old.
In A 32-year-old bug walks into a Telnet server
Yeah, I probably went too far in saying it's just the userland, but I'll insist it's more complicated than saying it was based on 4.4BSD-Lite2. I haven't done a proper deep dive yet, but I can tell that it wasn't strictly based on the Lite2 release. Take a look at XNU 123.5's (OS X 10.0) kern/tty.c: https://github.com/apple/darwin-xnu/blob/xnu-123.5/bsd/kern/... Notice the SCCS version info dates the file 1/21/94. Now look at the Lite2 equivalent: https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/s... The SCCS date on this file is 1/9/95, a year later. It appears the XNU copy is from Lite1 instead: https://github.com/dspinellis/unix-history-repo/blob/BSD-4_4... You'll also see the source has been reorganized, with e.g. the VFS source being regrouped into bsd/vfs, instead of being left in bsd/kern. This coincidentally mirrors how
Read the rest
OSF/1 was organized (no other source relation though, just an interesting observation): https://github.com/Arquivotheca/OSF1/tree/OSC200/src/kernel/... For that matter, compare the the differences between vfs_bio.c in XNU: https://github.com/apple-oss-distributions/xnu/blob/rel/xnu-... With Lite2's, where most function bodies have been replaced with the comment "Body deleted.", presumably due to use of encumbered code: https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/s... This file had to be reimplemented by all of the BSDs. In this case, this version appears distinct from the FreeBSD and NetBSD versions I can find. If you grep around for the `NeXT` ifndef/ifdefs in XNU, too, you'll see some code of which some appears to have been copied/adapted from the NeXT source tree, itself derived from Mach/CMU sources. (and 4.3BSD ;-) I say all this to draw attention to the ways XNU differs from BSD, which is pretty interesting, at least to me.
In Linuxulator on FreeBSD Feels Like Magic
Here [1] is a related trick in the old Unix to run either `foo`, `/bin/foo` or `/usr/bin/foo` (apparently before `PATH` convention existed): char string[10000]; strp = string; for (i=0; i<9; i++) *strp++ = "/usr/bin/"[i]; p = *argv++; while(*strp++ = *p++); // string == "/usr/bin/foo" execv(string+9, args); // foo (execv returns only in case of error, i.e. when foo does not exist) execv(string+4, args); // /bin/foo execv(string, args); // /usr/bin/foo [1] https://github.com/dspinellis/unix-history-repo/blob/Researc...
In Understanding the bin, sbin, usr/bin, usr/sbin split (2010)
Indeed, that was the way it originally worked in all UNIXes: https://github.com/dspinellis/unix-history-repo/blob/Researc... It was a then-important optimization to do the most common operations with macros since calling a function for every getc()/putc() would have slowed I/O down too much. That's why there is also fgetc()/fputc() -- they're the same as getc()/putc() but they're always defined as functions so calling them generated less code at the callsite at the expense of always requiring a function call. A classic speed-vs-space tradeoff. But, yeah, it was a mistake that it originally used a "char" to store the file descriptor. Back then it was typical to limit processes to 20 open files ( https://github.com/dspinellis/unix-history-repo/blob/Researc... ) so a "char" I'm sure felt like plenty.
In Stdio(3) change: FILE is now opaque
UNIX, designed and developed on the PDP-11, had similar per-process instruction/data space limitations until V6 and V7 were ported to 32-bit minis ca. 1977 and 1979, and was further constrained by the PDP-11's limited physical address space: 18-bit 1970–75, 22-bit 1975–, so a quarter of the 8086's and 80286's 20- and 24-bit address spaces, respectively. As an aside, this reminds me of an amusing early example of a rough-and-ready configure-style script[1] included in the BSD source for the compress(1) utility, used to limit the maximum supported LZW code length based on an estimate of memory that will be available to the process[2]. [1] https://github.com/dspinellis/unix-history-repo/blob/BSD-4_3... [2] https://github.com/dspinellis/unix-history-repo/blob/BSD-4_3...
In 80286 ATX mainboard based on the IBM 5170 AT PC

Showing the 15 most recent of 104 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.