Shared publicly  - 
 
New Wikipedia list! http://en.wikipedia.org/wiki/List_of_software_forks Needs filling in from http://en.wikipedia.org/wiki/Category:Software_forks and tableization, references etc ...

Anyone got firm etymology on fork as in software? What is first documented use? +Eric Raymond, do you know?
3
2
Russell Nelson's profile photoDavid Gerard's profile photoTony Sidaway's profile photoHolger Durer's profile photo
27 comments
 
Sorry, I don't know first use on this one.
 
I think referring it specifically to the POSIX standard is incorrect, but I have little doubt that early Unix fork() is the antecedent.
 
That sounds right to me. fork() was (as we all know) around long before POSIX. It feels like exactly the right source.
 
The question is when it was first applied to software. What did they call it when the BSDs were splitting? What did they call it when XEmacs became a separate community?
 
I seem to recall hearing EGCS referred to that way, but have no citation to offer.
 
I think that "fork off" with the intuitive meaning of creating an exact copy that can the develop by itself - as inevitably fork()'ed processes would - was such a commonplace that we may never be able to trace when it was first used for software projects.

An interesting early use (in USENET) that I could find searching google groups is here:

http://groups.google.com/group/net.misc/browse_thread/thread/b0e9f8531558b7e9/1cc726d9e9e05ebd?q=fork#1cc726d9e9e05ebd

(assuming I have the link right). With title "Can somebody fork off a "net.philosophy"? That's the earliest use I can find of something that is truly not a direct use of fork() but a metaphorical use. Clearly a similar usage would apply to forking a software project.
 
I'm suspecting the first fork to be called a "fork" in this sense was XEmacs. The trick would be to find an early usage in regard to this project. (I can't find anything on the origin of the BSDs being called a "fork" except in retrospect.)

Francis - excellent catch! Anyone know John Gilmore and could ask him where he got it from, if he remembers 28 years later? :-D I'm seeing a few '80s usages of "fork off" to describe what Unix fork() does, so that does strike me as a likely candidate.

Jay - EGCS,1997: http://oldhome.schmorp.de/egcs.html Linux libc, 1996 (usage specifically stating community split): http://groups.google.com/group/gnu.misc.discuss/browse_thread/thread/5d7529d865d4d9ca/69ebc4771f32bc45?q=fork+xemacs#69ebc4771f32bc45 XEmacs, 1995: http://groups.google.com/group/cu.cs.macl.info/browse_thread/thread/ed9e5ff9cb21c359/4ce930d2fd1271eb?q=%22fork+of%22+xemacs#4ce930d2fd1271eb Newsgroup forking, 1994 (same usage as Gilmore's): http://groups.google.com/group/misc.jobs.misc/browse_thread/thread/de46b1b56a60294f/a4c3d96c81e8a6ce?q=%22fork+of%22+software+-%22resource+fork%22+-%22data+fork%22#a4c3d96c81e8a6ce

rcs seems (if I'm reading this right) to have used "fork" in the sense of "branch" in 1989: http://groups.google.com/group/comp.sources.amiga/browse_thread/thread/29a299ab653f4326/22afd57bb6e802b3?q=%22fork+of%22+project+-%22resource+fork%22+-%22data+fork%22#22afd57bb6e802b3 Though in conventional usage rcs called them "branches" as we do now.

Jon - here's extensive research on the origin of fork() http://groups.google.com/group/comp.arch/browse_thread/thread/702ebb1f2a8d2274/13efa0c2951aa906?q=%22fork+of%22+project+-%22resource+fork%22+-%22data+fork%22#13efa0c2951aa906
 
Ah, now that's interesting. Now that you mention it - I had a ringside seat at the XEmacs brouhaha in 1991 (I was working on GNU Emacs a lot at the time), and I don't think the word "fork" was used of it when it was happening. (Neither RMS nor JWZ were natively Unix-culture guys. so this would fit with a derivation from early Unix.)

However, the term was used and well established at the time of the EGCS fork in 1997. And I recorded it in the Jargon File in 1992. So I think it came into general use just after the XEmacs split. Possibly as a result of it.
 
Eric - looking at the archive of Jargon File versions at http://magic-cookie.co.uk/jargon/ , the earliest version to talk about software forks in the "forked" entry is 4.2.2 from 2001 (which dates the term to 1997). Did you use the term somewhere else in 1992?
 
Hmmmm. I'll have to check my back versions.
 
It was absent in 4.2.1 and present in 4.2.2. (Assuming those archives are accurate, and I have no reason to assume they're not. I know Rayner, he's fine y'know.)

I'm wondering if the Emacs newsgroups are worth grovelling in ...
 
+David Gerard In the context of forking a project or software version, it goes back a long way before 2001. I wouldn't be surprised if the use in this context came from RCS (revision control system) or SCCS usage. (I've used it as a term pretty much as long as I can professionally remember)

A quick google gives me http://www.gnu.org/s/rcs/tichy-paper.pdf and this

http://sccs.berlios.de/man/sccs.me.html SCCS man page last modified 1980, includes quote Creating a branch "forks off" a version of the program.
 
Matt - good one! Now we need the first usage in terms of a community fork ...
 
I would imagine somewhere buried in Berkeley whilst they were making Ingres and Postgres then, as the author of that sccs doc was Eric Allman. My Google-fu isn't giving me any hard references though.
 
+Matt Holmes I believe you, but all that establishes is early Unix usage. It's easy to forget this now post-Linux, but up until the ... oh, I'd say early-to-mid 1990s... the Unix-derived and non-Unix-derived wings of the hacker culture had not yet fully merged, and vocabulary reflected this. In 1991 I would not have expected RMS and JWZ to be casually tossing around Unix jargon.

You, on the other hand, are clearly from the Unix tributary of today's mainstream (as was I, though I had a foot in the LISP camp that RMS aand JWZ were from as well). Thus, for you to report very early use of "fork" is not surprising but doesn't necessarily give us a clue about when it entered production use for people like JWZ and RMS.

I think we can say the late bound was 1997, at the time of the EGCS fork. And I think it was later than the XEmacs fork in 1991.
 
I've edited http://en.wikipedia.org/wiki/Fork_%28software_development%29#Etymology to give Eric Allman first credit for applying the term to branching, noted it wasn't used for the BSD splits (which were very Unix) or XEmacs split, and that it seemed to be in use by 1995. But, obviously, more is needed. I haven't noted the similarity to fork() without a citation as it's merely plausible, unless Eric Allman says that's what he was thinking of. Needless to say, any citation-heavy pedant can edit Wikipedia ...
 
+Eric Raymond A good point! I set out entirely on the Unix branch - my career started by being handed a copy of K&R and a login. Later on came the branching out into PCs and suchlike.
 
+David Gerard you still thinking heretical thoughts about Wikipedia, then? I can tell you from Citizendium, THE BUMS NEVER WIN! ;-)
 
(They still got the June election banners up? Crikey.)
 
"Pago-Pago, American Samoa, time"? What the shit.
 
I looked in the likely places and didn't find anything about it.
Add a comment...