This is a highly simplified history of Unix and its derivatives. Windows does not figure in it because its history is essentially separate.
Once upon a time operating systems were complex and unwieldy. One day in the late 1960s, Ken Thompson, Dennis Ritchie and a few of their colleagues at AT&T Bell Labs decided to write a simpler version of Multics to run games on their PDP-7, and thus Unix was born.
AT&T held the rights to the code, and licenses were expensive. Many other companies sublicensed Unix and sold their own version. Major players included DEC, HP, IBM, Sun. Unix variants added their own extensions, often nicking ideas from each other and from academia.
Meanwhile, in Berkeley, a number of academics were unhappy with the licensing situation and decided to create a version of Unix that didn't include any AT&T-licensed code. Thus in the early 1980s the Berkeley Software Distribution, or BSD, became a free variant of Unix. BSD first ran on Minicomputers such as PDP-11 and VAXen.
Meanwhile, on the East coast, Richard Stallman threw a fit when he couldn't get the source code to his printer driver. He founded the GNU (GNU's not Unix) project in 1983 intending to make a free Unix-like operating system, only better. After a little hesitation, the kernel of this operating system was chosen to be Hurd, which is going to be usable any decade now. Many components of the GNU project are included in all current free unices, in particular the compiler GCC.
Meanwhile, in Finland, Linus Torvalds went on a hacking binge in summer 1991. When he woke up, he realized that he'd written an operating system for his PC, and he decided to share it by putting it on an FTP server in a directory called linux. The success exceeded his expectations.
Many people created software distributions including the Linux kernel, many GNU programs, the X Window System, and other free software. These distributions (Slackware, Debian, Red Hat, SUSE, Gentoo, Ubuntu, etc.) are what people generally refer to when they say “Linux”. Most Linux distributions consist mostly of free-as-in-speech software, though software that is merely free-as-in-beer is often included when no free equivalent exists.
Other currently existing unices include the various forks of BSD (you get a choice of FreeBSD, NetBSD and OpenBSD, all being free, open and developed through the 'net), as well as a disminishing number of commercial variants targeted towards servers: and AIX, HP-UX, Solaris, and a few very minor contenders. Another proprietary unix-based operating system is Mac OS X running on Apple desktops, laptops and PDAs.
It is very tempting to want to define the differences between BSD and Linux. Just like Gilles said in the comments, it is not an easy task since they're so numerous and disparate. Very often, the differences won't even be noticeable at the user's level; everything has been worked out so that the OS behaves as you would expect a Unix to.
Moreover multiple distributions are available for each. No matter what you say about Linux/BSD generally, you'll often find a distribution that contradicts it.
The following is a list of comparisons I found scattered over the web.
- Here on U&L, a user has defined the following differences:
Big differences are (in my opinion of course):
- Userland (Linux uses GNU while BSD uses BSD)
- Integration (Linux is a collection of different efforts, BSD is much more unified at the core)
- Packaging (Linux typically manages installed software in binary packages - BSD typically manages a "ports" tree that you use to
build software from sources)
Notice the word typically in his last point. Some Linux distributions will manage source code and conversely some BSDs will manage binary packages.
- Matthew D. Fuller has a lengthy comparison between BSDs and Linux you may want to look into. The article will compare both on Design level, Technical differences, Philosophies and finally address common Myths. Here are some excerpts:
BSD is what you get when a bunch of Unix hackers sit down to try to
port a Unix system to the PC. Linux is what you get when a bunch of PC
hackers sit down and try to write a Unix system for the PC.
--
BSD is designed. Linux is grown. Perhaps that's the only succinct way
to describe it, and possibly the most correct.
Key differences:
- FreeBSD full os. Linux is kernel. Linux distribution is os (100+ majro disrtos).
- FreeBSD everything comes from a single source. Linux is like mix of lot of stuff.
- BSD License vs GPL
- FreeBSD Installer
- BSD commands (ls file -l will not work) vs GPL command (ls file -l will work)
- FreeBSD better and updated man pages.
- BSD rc.d style booting vs Linux SysV style init.d booting
Here are some articles describing the history of each:
I will give one "solid" opinion: If I had to choose one system that
would act as my router, DNS, ftp server, e-mail gateway, firewall, web
server, proxy server, etc., that system would run a BSD-based
operating system. If I had to choose one system that would act as my
desktop workstation, run X, all the application I like, etc., that
system would run Linux. HOWEVER, I would have no problem running Linux
as my work horse server or running the BSD-based system on my desktop.
Further reading
Best Answer
This is a compilation and index of the answers given so far. This post is community wiki, it can be edited by anybody with 100+ reputation and nobody gets reputation from it. Feel free to post your own answer and add a link to it in here (or wait for me to do it). Ideally, this answer should just be a summary (with short entries while individual other answers would have the details).
Currently actively maintained systems:
//host/file
network file sharing paths.//pathname
requests to MVS datasets, not to network files. Example.Defunct systems
@BinaryZebra Apollo Domain/OS (confirmed). Also mentioned at Official Description UNC (Universal Naming Convention) as the possible origin of
//host/path
notations (see also, page 2-15).According to Donn Terry, it was HP (which acquired Apollo Computers) that pushed for inclusion of that provision in the POSIX spec for Domain/OS.
@jillagre Tektronix Utek (corroborated), where
//host/path
is a path on a distributed file system.@gilles QNX 4 with the FLEET distributed processing system, where
//123/path
is a/path
on node 123. (Mentioned in the QNX 6 documentation.)@roaima AT&T SysV Release 3 (unverified).
//host/path
in (discontinued in SVR4) RFS Remote File Sharing system.@Scott SEL/Gould UTX-32 (unverified). Used for
//host/path
.Applications that treat
//foo/bar
specially for paths//depot/A/B/C/D
refers to a path in a depot.//
prefix for relative paths (to the blend associated with the data-block).//
prefix for labels of targets within the Bazel build graph.