Bitcoin Institute

Satoshi's 164 SVN Commit Messages: Word Counts, a 75-Day Silence, and a Quieter Return

Dark-themed infographic titled "164 SVN Commit Messages," showing a word-count histogram on the left, a commit-interval timeline in the middle with one bar dwarfing the rest, and a small callout box reading "15.74 words before, 9.78 after" on the right.

Satoshi’s SourceForge SVN history is well documented as a record of what was implemented: four committers, 252 revisions, a 75-day silence in early 2010. Nobody, as far as I could find after searching, had counted the words in those 164 commit messages, run the numbers on the gaps between them, or checked what happened to his writing once that silence finally broke. I did. When Satoshi came back, he wrote less, not more. This same 164-commit figure appears as a single line in the identification-asymmetry entry’s inventory of surviving material; this entry is the full accounting behind that line.

1. Getting the count right

The archive’s own existing record put Satoshi’s SVN commits at “160” in this archive’s code analysis, or noted that “164 also circulates from mirror-side counts” in the SVN repository committers record. I started from the git mirror research-note/bitcoin-legacy, which returns 159 commits authored by s_nakamoto, five short of 164.

The mirror itself has gaps: across the whole r15-r202 range, seven SVN revisions are simply absent from its master branch, regardless of author. I checked each one directly against SourceForge’s own commit log. Five belong to Satoshi: r29, r30, r31 (three small Linux/xpm fixes from November 4, 2009), r50 (“Version 0.2.0 released”), and r98 (“version 0.3 release”). The other two (r26, r27) belong to Martti Malmi. 159 + 5 = 164, matching this archive’s own svn-committers.json exactly. The 160 figure in the older code-analysis entry was simply an earlier count, taken before this reconciliation.

2. What the messages say

Across all 164 messages (the full text, not just the first line: a distinction that matters, since some commits pack a running list of unrelated fixes into one message, separated by commas), the average is 11.74 words and the median is 8. The shortest is a single word, shared by five commits: “misc” (four commits) and “correction” (one, from December 2010). The longest runs 64 words, itemizing socket-handling fixes for ThreadSocketHandler one clause at a time.

The vocabulary is almost entirely mechanical: “version” (41 occurrences), “fix” (25), “build” (20), “linux” (18), and “added” (17) are the five most common content words; “rpc” and “unix” tie for sixth, at 14 each. Three messages name a contributor and say thanks: to teknohog, to jgarzik, and to “BlackEye for figuring out the alignment problem” on the Crypto++ speedup. Five more credit a translator by name. First-person language appears exactly twice in 164 messages. There are no exclamation points.

For comparison, Gavin Andresen’s 81 SVN commits average 13.61 words with a median of 8, the same median as Satoshi’s. Martti Malmi’s 21 commits (as sirius-m) average 7.69 words, median 5. Whatever produced Satoshi’s terseness, it wasn’t unique to him; it reads like a habit the project’s commit culture shared.

3. The gap, measured

The 75-day silence between March 5 and May 19, 2010 is already documented in this archive’s code analysis. What hadn’t been measured is where that gap sits among all 163 intervals between consecutive commits. The answer: it takes first place by a wide margin, at 1,797.5 hours, against a median interval of 22.9 hours and a mean of 62.0. Using the standard IQR test (upper fence at 168.6 hours), eight of the 163 intervals qualify as outliers; the 75-day gap is the largest of those eight too. These same timestamps have also been read for a different signal: the nationality-question analysis treats the near-total absence of commits between 06:00 and 12:00 UTC as consistent with an EST or CST timezone.

Commit timing splits into roughly even thirds once you set the threshold at half and double the median: 54 of the 163 intervals are short bursts, 55 are a steady pace, and 54 are longer waits. The messages themselves changed shape around the gap, too: the 54 commits through March 5 average 15.74 words (median 10); the 110 from May 19 onward average 9.78 (median 8). Whatever Satoshi was doing in those 75 days, he came back writing shorter notes.

4. The phantom commit

Sorting 158 of the 164 commits by total lines changed (the other six touch no .cpp/.h files or aren’t in the git mirror) produces a ranking where the largest, by far, is a revision from August 29, 2010: 65 files, 31,004 insertions, 31,004 deletions. The commit message: “propset svn:eol-style native.”

It’s a line-ending normalization: an SVN property change that rewrites every line’s ending without touching a single character of actual content. Git’s line-based diff can’t tell the difference between “this line changed” and “this line’s terminator changed,” so it reports the whole file as replaced. Left in, it inflates the average change size from 396 to 784 lines and makes the distribution look bimodal in a way that has nothing to do with how Satoshi actually worked. Excluded, the real largest commit is 8,591 lines: “strip out unfinished product, review and market stuff” from February 2010, which is a genuine, if unusually large, content commit.

Classifying all 164 commits by what they actually did (feature work, bug fixes, refactoring, cleanup, documentation, or a bare version-release tag) gives 74 feature additions, 44 bug fixes, 14 cleanups, 13 documentation/translation commits, 12 release tags, and 7 refactors. Comment density in the added code lines holds close to flat across the 75-day gap, 8.12% before and 9.09% after: one thing that didn’t shift even as the messages got shorter. Twenty-one commits show a same-file follow-up paired with a correction word (“fix,” “revert,” “correction”); the cleanest is revision fb7e197, four words long: “revert revision 56, going in different direction with boost::asio and JSON-RPC.”

5. Limits

Five of the 164 commits, the ones missing from the git mirror, are counted here by message text alone. I haven’t pulled their diffs, so the diff-size numbers in §4 (total lines changed, the largest-commit ranking) cover 158 commits, not all 164; the categorical classification in the same section, based on message text alone, covers all 164. Two of those five (r50, r98) lack a recorded time of day, so the two intervals touching them in §3 carry that same imprecision. None of this moves the medians or the outlier ranking: the gaps are all at the edges of an already generous margin.

I went into this expecting the boring answer: that nobody had counted these words because there was nothing in them worth counting. Mostly, that held; the vocabulary here is a parts list, not a diary. One real surprise turned up along the way: the biggest-looking commit in the whole history, by line count, was an eol-style property change that touched no actual content, the kind of thing you’d only catch by opening the diff instead of trusting the number next to it. But the number that actually stays with me is smaller. When Satoshi came back after those 75 days, he didn’t write more to explain where he’d been. He wrote less: 9.78 words a message against 15.74 before the gap. Whatever kept him away didn’t make him more talkative on return. It made him quieter. That’s the only trace the silence left in the record, and even that isn’t a sentence. It’s an average.