<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Trausch’s Little Home &#187; operating systems</title>
	<atom:link href="http://mike.trausch.us/blog/tag/operating-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://mike.trausch.us/blog</link>
	<description>My writing on life, computers, and technology</description>
	<lastBuildDate>Wed, 09 Feb 2011 18:16:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Uniform Driver Interface—why wasn&#8217;t it adopted?</title>
		<link>http://mike.trausch.us/blog/2010/03/03/the-uniform-driver-interface%e2%80%94why-wasnt-it-adopted/</link>
		<comments>http://mike.trausch.us/blog/2010/03/03/the-uniform-driver-interface%e2%80%94why-wasnt-it-adopted/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 23:31:53 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[random thoughts]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://mike.trausch.us/blog/?p=592</guid>
		<description><![CDATA[Every now and again, I come back to looking at device drivers and driver-writing, and I wonder why there is not some common interface for device drivers. What would the world be like if we could write a device driver for Linux, and be able to use it on FreeBSD without modification? There was a [...]]]></description>
			<content:encoded><![CDATA[<p>Every now and again, I come back to looking at <a href="http://en.wikipedia.org/wiki/Device_driver">device drivers</a> and driver-writing, and I wonder why there is not some common interface for device drivers. What would the world be like if we could write a device driver for Linux, and be able to use it on FreeBSD without modification? There was a project called the <a href="http://www.projectudi.org/">Uniform Driver Interface</a>, which aimed to create a common specification (both <a href="http://en.wikipedia.org/wiki/API">API</a> and <a href="http://en.wikipedia.org/wiki/Application_binary_interface">ABI</a>) for drivers such that they could be used portably between operating systems. In other words, a device manufacturer could create a device (say, a <a href="http://en.wikipedia.org/wiki/SATA">SATA</a> chipset) once, and it could then be used by <a href="http://en.wikipedia.org/wiki/Linux">Linux</a>, <a href="http://en.wikipedia.org/wiki/FreeBSD">FreeBSD</a>, <a href="http://en.wikipedia.org/wiki/NetBSD">NetBSD</a>, <a href="http://en.wikipedia.org/wiki/OpenBSD">OpenBSD</a>, <a href="http://en.wikipedia.org/wiki/Haiku_(operating_system)">Haiku</a>, <a href="http://en.wikipedia.org/wiki/Microsoft_Windows">Windows</a>, <a href="http://en.wikipedia.org/wiki/Mac_OS_X">OS X</a>, or any other <a href="http://en.wikipedia.org/wiki/Operating_system">operating system</a> that chose to implement the UDI specification (or, honestly, <em>any</em> generic, OS-independent driver specification).</p>
<p>The <a href="http://en.wikipedia.org/en/Free_Software_Foundation">Free Software Foundation</a> <a href="http://www.gnu.org/philosophy/udi.html">objected to UDI</a> for various reasons. Mostly, I think, it was because they were afraid that people who are not them would choose to use drivers that were non-free. As I&#8217;ve written about before here, there are people who think that forcing people to use <a href="http://en.wikipedia.org/wiki/Free_software">free software</a> is somehow freedom—and I will not go into it in any great depth here, because I have done that in the past. Suffice it to say that forcing <em>anything</em> is not freedom; it cannot be freedom. So, the Free Software Foundation, I think, was really afraid that they would have to do more work to be able to stick to their own requirement of using 100% free software on their own computer systems. (And hey, Roy, if you&#8217;re reading—I&#8217;m not saying that the FSF is wrong, and I&#8217;m not putting myself in a position opposite of that of the FSF. I suspect you think so anyway, but hey, I just figured I would point that out.)</p>
<p>Even if the free software operating systems did not adopt the UDI specification, why didn&#8217;t proprietary operating systems? This is perhaps the most puzzling thing to me. It seems that in this event, <em>none</em> of the operating systems—free or proprietary—did what would have made sense. After all, even if <em>only</em> <a href="http://en.wikipedia.org/wiki/Apple_Inc.">Apple</a> and <a href="http://en.wikipedia.org/wiki/Microsoft_Corporation">Microsoft</a> adopted a common device driver specification, that would save a lot of time, effort, and improve user experience all the way around. Apple users would be able to use all the hardware that Microsoft users could use—and the inverse would also be true. The amount of time that device driver authors would have to spend writing and debugging driver code would go <em>way</em> down—free software driver authors would be able to write a driver <em>once</em>, for example, and all systems (including free software systems that chose to support the specification) would benefit.</p>
<p>I could see an objection of a driver specification that was binary-only. However, UDI was not—it mandated an ABI so that drivers that are built for a particular platform were binary-compatible with operating systems on the same platform, but it also mandated an API, so that drivers would be source compatible to <em>any</em> operating system that implemented the specification, on any platform. That by itself would seem to me to be positive motivation to hardware manufacturers to release the source code to drivers so that they can support operating systems that are on platforms that do not exist yet, or have not been considered (or have been considered to be nonviable or unsupported platforms).</p>
<p>So, I have to wonder why a common device driver specification was never implemented in various operating systems. It would seem to be a common sense thing, especially given that there are so many operating systems. It would make the coexistence of operating systems a lot easier, and it would promote choice. It might encourage bits of proprietary code on free software operating systems, but it would also enable people to drop the excuse that “free operating system <em>x</em> does not support device <em>y</em>”, and would as a result potentially increase the number of free software programs and operating systems in use, even if there is a minor cost in terms of certain drivers. And those drivers could always be replaced—a common driver specification would make it easier to understand the structure of drivers generally, and make it easier for lawful, clean-room reverse engineering to be done on those drivers.</p>
<p>Imagine, for example, if drivers for graphics cards, TV tuner cards, video and audio encoding/decoding cards, modems, storage chipsets, motherboard chipsets, <a href="http://en.wikipedia.org/wiki/USB">USB</a> chipsets, <a href="http://en.wikipedia.org/wiki/IEEE-1394">IEEE-1394</a> chipsets, graphics tablet devices, touch screens, debugging interfaces, network devices, and so forth were all written to a common specification, it would reduce the amount of code which needed testing. It would increase user choice in both hardware and operating systems—something which I still hold is quite likely the most valuable freedom we have. It would increase reliability, since the users of Windows, OS X, Linux, the various BSD systems, and other, not-so-mainstream operating systems would be able to run the same driver code and collectively supply debugging information and perform testing in a multitude of environments. It would increase security, because then common code that is well-known could be used on all platforms and not just the one it was written for. It would do for device drivers what <a href="http://en.wikipedia.org/wiki/POSIX">POSIX</a> has done for user-mode application software. I do not believe that I could be convinced that this would be anything other than a good thing.</p>
<p>Also, it could bring back old operating systems.  Imagine what life could be like, for example, if <a href="http://en.wikipedia.org/wiki/OS/2">OS/2</a> had a “UDI driver” written for it, and it could then take advantage of newer drivers never intended for it. Or any other very old operating system which is no longer supported and could still be useful, for any of a number of reasons…</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2010/03/03/the-uniform-driver-interface%e2%80%94why-wasnt-it-adopted/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>When is it GNU/Linux and when is it not?</title>
		<link>http://mike.trausch.us/blog/2009/09/30/when-is-it-gnulinux-and-when-is-it-not/</link>
		<comments>http://mike.trausch.us/blog/2009/09/30/when-is-it-gnulinux-and-when-is-it-not/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 22:32:58 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://mike.trausch.us/blog/?p=568</guid>
		<description><![CDATA[Of the many controversies in free software, this is one that I&#160;have long found to be interesting.&#160; People seem to define things in different ways, which leads to confusion (and arguing)&#160;when one person calls a system a &#34;GNU/Linux&#34; system and the next calls it just the &#34;Linux&#34; system.&#160; Too often, I&#160;have found people saying &#34;You [...]]]></description>
			<content:encoded><![CDATA[<p>Of the many controversies in free software, this is one that I&nbsp;have long found to be interesting.&nbsp; People seem to define things in different ways, which leads to confusion (and arguing)&nbsp;when one person calls a system a &quot;GNU/Linux&quot; system and the next calls it just the &quot;Linux&quot; system.&nbsp; Too often, I&nbsp;have found people saying &quot;You must <strong><em>always</em></strong> call it GNU/Linux, Linux is nothing without GNU!&quot; and this is simply incorrect.&nbsp; So, here I&nbsp;try to spell out the issues and when something is &quot;GNU/<em>anything</em>&quot; and when it is not.</p>
<h2>Question 1: What <em>is</em> an operating system?</h2>
<p>Here is a (very partial, heavy on the Unix-like systems) list of operating systems:&nbsp; GNU, FreeBSD, OpenBSD, NetBSD, Microsoft Windows, Mac OS, XENIX, AIX, OS/2, MS-DOS, PC-DOS, FreeDOS.&nbsp; All of these are full operating systems, though some are more compartmentalized than others.&nbsp; I&nbsp;hear some saying already, &quot;But GNU&nbsp;is not an operating system!&quot;&nbsp; Incorrect.&nbsp; When using the Hurd and a GNU&nbsp;userland operating system stack, that <em>is</em> the GNU&nbsp;system.&nbsp; I&nbsp;hear others saying, &quot;But you left Linux out!&quot;&nbsp; Correct, I did: Linux <em>is not an operating system by itself</em>.&nbsp; Many people are under the impression that the kernel <em>is</em> the operating system, and this is simply incorrect.&nbsp; <strong>A kernel is the core of an operating system, but it is not <em>the</em> operating system itself.</strong></p>
<p>If the kernel is not the operating system itself, what is?&nbsp; An operating system consists of a kernel and software that is used to make that kernel useful&mdash;software that provides the user (or the programmer) with an <em>interface</em> to the kernel.&nbsp; An operating system in the modern sense comprises a kernel and software that surrounds the kernel.&nbsp; In the case of POSIX, UNIX and UNIX-like operating systems, this includes the C library, a set of utilities (kill, ps, ls, cp, mv, rm, sh, and so forth), and more.&nbsp; To compare to Windows, the Windows operating system is <em>not</em> just NTOSKRNL.EXE.&nbsp; That&#8217;s the kernel, but there are a suite of executables and libraries that surround it and provide interfaces to it which make the kernel useful.&nbsp; While it is technically possible to do, law prevents the creation of a &quot;GNU/Windows&quot; or &quot;GNU/NTOS&quot;.&nbsp; It would not be as straightforward as it is to run GNU&nbsp;on a Unix-like system, but it would be possible (Cygwin is as close as it can lawfully get).</p>
<p>So, when we talk about the FreeBSD&nbsp;operating system, we are referring both to the FreeBSD&nbsp;kernel and the utilities and software that make it useful.&nbsp; &quot;FreeBSD&quot; includes  utilities and libraries and all of that, just like the NetBSD or Windows operating systems do.&nbsp; But, Linux does not.&nbsp; When we say &quot;Linux&quot;, we are <em>necessarily</em> talking about only a kernel, the project that is the brainchild of a man named Linus Torvalds and the army of programmers around him.</p>
<h2>Question 2: What is an OS&nbsp;kernel?</h2>
<p>An operating system kernel is the core of the operating system.&nbsp; However, without the rest of the components that build an operating system, a kernel is useless.&nbsp; To make matters more interesting, a single kernel can be used as a component in several different operating systems.&nbsp; This is actually the case for many systems, though it is most prominent in the case of systems that are built around the Linux kernel because there are so many of them.</p>
<p>The lifecycle of a kernel is generally something like this:&nbsp;&nbsp;Set up and initialize itself, load and initialize basic hardware drivers, kick off one (or more) processes that are required to make the system useful, and then loop, handling things like hardware interrupts and system calls from software.&nbsp; In the case of a Unix-like system, the kernel attempts to run a program called &quot;init&quot; (usually on modern systems, this is found in /sbin/init), which initializes userland and starts running services that make the system useful. &nbsp;So a Unix-like operating system provides at least a kernel and an init process, as well as programs for logging in from TTYs (or virtual terminals), manipulating files, processes, and the kernel&#8217;s state, and so forth.&nbsp; If a Unix-like system cannot find an init program, it will halt (panic)&nbsp;or return to firmware where a user could tell the kernel to use an alternate program for init (for example, you can pass &quot;init=/bin/bash&quot; to the Linux kernel, and it will start a single program:&nbsp;bash).</p>
<h2>Question 3: Where is the line between an OS&nbsp;and the rest?</h2>
<p>To answer this question, we must look at several operating systems, and we must be able to know what the difference is between <em>core</em> software and <em>application</em> software.&nbsp; The line can be blurred, of course, especially when the core software depends on certain application software.&nbsp; So in order to more accurately tell the difference, we need to know exactly what the core system uses.&nbsp; A classic example in the UNIX&nbsp;world: some software is used as system software, and is also available for use as application software.&nbsp; A system cannot be called a Unix without some of it, and a system certainly isn&#8217;t Unix-like without it (and remember:&nbsp;Unix is an operating system definition).</p>
<p>For non-technical people, an operating system is a distribution.&nbsp; That is, Microsoft Windows is an operating system as it is installed; Ubuntu, Debian, and Red Hat Enterprise Linux are also operating systems.&nbsp; For those who are more technical, though, the line isn&#8217;t there:&nbsp; the line is somewhere between what is shipped for installation and what is the core system.</p>
<p>Let&#8217;s compare FreeBSD&nbsp;with Linux.&nbsp; A typical FreeBSD system contains the FreeBSD&nbsp;kernel, FreeBSD&#8217;s C library, FreeBSD&#8217;s kernel management utilities, an implementation of init, and implementations of the Unix utilities (ls, ps, cp, kill, etc.).</p>
<p>However, a typical Linux system contains the Linux kernel, the Linux kernel utilities, the GNU&nbsp;C Library, GNU&nbsp;coreutils, GNU findutils, GNU&nbsp;bash, filesystem-specific utiltiies, an implementation of init (could be sysvinit, Upstart, or any number of other ones), and others.</p>
<h2>Question 4:&nbsp;When is it GNU/Linux? &nbsp;When is it not? &nbsp;When is any system GNU/<em>anything</em>?</h2>
<p>The simple answer:&nbsp;most systems <em>aren&#8217;t</em> GNU/<em>anything</em>, but they <em>could</em> be.&nbsp; Take as an example the project to use the FreeBSD kernel (but not the FreeBSD&nbsp;userland).&nbsp; The system <em>cannot</em> simply be called FreeBSD&nbsp;any longer:&nbsp;a significant portion of the FreeBSD operating system is removed when its userland is replaced.&nbsp; The project&#8217;s operating system is called &quot;GNU/kFreeBSD&quot;, not &quot;GNU/FreeBSD&quot; because FreeBSD was a complete operating system before its utilities were removed and GNU&nbsp;implementations dropped in.&nbsp; This would include the GNU&nbsp;C library and the typical things you see in a Linux installation.&nbsp; This also means that it&#8217;s a different operating system entirely!&nbsp; Any piece of software that expects to be built on FreeBSD and assumes a complete FreeBSD&nbsp;system might not even build when using the FreeBSD kernel and the GNU&nbsp;userland.</p>
<p>In the case of Linux:&nbsp; When you&#8217;re using the GNU&nbsp;utilities and core system, it&#8217;s GNU/Linux.&nbsp; When you&#8217;re <em>not</em>, then it&#8217;s not.&nbsp; For example, Android is a distinct operating system from Ubuntu.&nbsp; They both use the Linux kernel, but that&#8217;s where the similarities stop.&nbsp; Android is one example of a distinctly different operating system that shares a kernel with another operating system.&nbsp; Aside from the fact that Ubuntu is most commonly run on x86 or x86-64 systems and Android is most commonly run on ARM&nbsp;systems, if you sat the two side-by-side on the same platform you&#8217;d <em>still</em> have different operating systems that do things differently.&nbsp; This is because Android doesn&#8217;t even use the same C library as Ubuntu; many pieces of software that are stated to work on a Unix-like system such as GNU/Linux or FreeBSD assume a richer environment (closer to that specified by operating system standards).&nbsp; They would have to be <em>ported</em> to Android to run on Android successfully; that&#8217;s a major red flag that says &quot;Oh, that&#8217;s a different operating system.&quot;</p>
<h2>Question 5:&nbsp;Does that mean I&nbsp;can create my own operating system?</h2>
<p><strong><em>Yes</em></strong>.&nbsp; You can.&nbsp; And you can even re-use the kernel from any other operating system that is licensed in such as way as to permit you to do so.</p>
<p>Let&#8217;s think about this in terms of OS&nbsp;X&nbsp;and what Microsoft could potentially do for Windows, as an example.&nbsp; Apple used to have its own operating system called &quot;System&quot;, which was then called &quot;MacOS&quot;, and today we call it &quot;Mac OS&nbsp;Classic&quot;.&nbsp; This system was a cooperatively multitasking operating system that ran software specially built for it.&nbsp; It was very popular, and it was also not as robust as modern operating systems.&nbsp; It was pretty interesting, though:&nbsp;it did not have a command-line interface.&nbsp; Nearly everything that was in the <em>System Folder</em> was the operating system itself, aside from installed fonts, extensions, and system enablers (though often extensions and enablers would patch the operating system in memory, or hook into it in some way so as to attach itself to it).&nbsp; Apple abandoned that system years ago for OS&nbsp;X. &nbsp;They took a BSD&nbsp;kernel and wrote a stack around it, reusing some components but using a very different architecture to put things together.&nbsp; The kernel for OS&nbsp;X&nbsp;is called Darwin, and it&#8217;s a very important&mdash;in fact, the central&mdash;piece of the OS&nbsp;X operating system stack.&nbsp; But it is not OS&nbsp;X; it is but a component.</p>
<p>How could Microsoft do something like this?&nbsp;&nbsp;Let&#8217;s say that Microsoft went and did something similar, taking the BSD kernel and porting Windows&#8217; software stack to run around it.&nbsp; They also call it Windows.&nbsp; Let&#8217;s say that they modified the kernel to load Microsoft&#8217;s old drivers and that they had incorporated a PE&nbsp;loader and ported their software to this new operating system (but retained API and binary compatibility with their legacy operating system that used a very different composition of kernel and userland, by necessity).&nbsp; Would this mean that they were running FreeBSD?&nbsp;&nbsp;No.&nbsp; It <em>would</em> mean that their operating system were based on (at the very least)&nbsp;the FreeBSD&nbsp;kernel.&nbsp; Though they could keep the FreeBSD stack and package it as a set of extensions to their new operating system, and claim the ability to run FreeBSD&nbsp;(and in a limited fashion, some Linux, if they retain the Linux compatibility mode of the FreeBSD&nbsp;kernel and system)&nbsp;software.&nbsp; Now that would be an interesting market position for Microsoft to be in, wouldn&#8217;t it?&nbsp; Microsoft could even make their new system compliant in some way with POSIX&nbsp;and the SUS and get branded as a UNIX&reg; system.&nbsp; But the new system would be more like Windows than it would be FreeBSD if they didn&#8217;t keep FreeBSD&nbsp;as-it-were, since they&#8217;d likely replace the core stack to fit their desires and needs, like Apple did.</p>
<h2>Conclusion</h2>
<p>I hope that this has clarified things a bit.&nbsp; However, if it has not, a good place to start reading is the Wikipedia articles for <a href="http://en.wikipedia.org/wiki/Operating_system">&quot;operating system&quot;</a> and <a href="http://en.wikipedia.org/wiki/Kernel_%28computer_science%29">&quot;Kernel (computer science)&quot;</a>.&nbsp; They are a long articles, but they make for a great starting point for research and clarification of just what an operating system is.&nbsp; Both articles look at different operating systems (and their kernels).&nbsp; As to whether or not you can determine what an operating system is, you will want to become intimately familiar with <em>many</em> different operating systems (and types of operating systems; there are families of them as people create more and more systems both original and reimplementations of others) before you start trying to figure it out.&nbsp; Look at native code and managed code operating systems&mdash;also realize that the distinction of what is the operating system can sometimes be relatively hard to determine accurately.</p>
<p>If you want to see what a bare operating system looks like, though, check out one of these operating systems&#8217; source code:&nbsp;&nbsp;FreeBSD, NetBSD, OpenBSD.&nbsp; Each of them in their version control systems has the <em>complete operating system</em>, which is much more than just a kernel. &nbsp;You can then, should you want, figure out exactly what packages on a typical GNU/Linux system take the place of the remainder of the operating system.&nbsp; It&#8217;d be an interesting exercise in learning&mdash;if learning is truly what you&#8217;re after, and not just argument.</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2009/09/30/when-is-it-gnulinux-and-when-is-it-not/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>On the names of operating systems&#8230;</title>
		<link>http://mike.trausch.us/blog/2008/04/23/on-the-names-of-operating-systems/</link>
		<comments>http://mike.trausch.us/blog/2008/04/23/on-the-names-of-operating-systems/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 22:10:38 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Stuff I Read]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operating systems]]></category>

		<guid isPermaLink="false">http://www.trausch.us/2008/04/23/on-the-names-of-operating-systems/</guid>
		<description><![CDATA[Jon wrote “For Me, It’s Linux, Not GNU/Linux” today. I notice that every so often, this issue crops up again in some circles. Many people feel that saying “GNU/Linux” is confusing and shouldn’t be said at all… and, I would even agree with them—but not in the usual “let’s just call it Linux” way. See, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jonreagan.wordpress.com/2008/04/23/for-me-its-linux-not-gnulinux/#comments">Jon wrote “For Me, It’s Linux, Not GNU/Linux”</a> today.  I notice that every so often, this issue crops up again in some circles.  Many people feel that saying “GNU/Linux” is confusing and shouldn’t be said at all… and, I would even <em>agree</em> with them—but not in the usual “let’s just call it Linux” way.  See, Ubuntu <em>is</em> a GNU/Linux distribution.  It is an operating system that brings together the Linux kernel and the GNU userland.  Ubuntu is also a Debian derived from Debian; it incorporates the Debian utilities for package management, installing, and far more other things (both Debian-specific, and not).  So, that identifier of GNU/Linux is more that of the underlying strategy to assemble the system than it is an identifier of the system itself.  Slackware is a GNU/Linux variant just as much as Ubuntu is—but they’re quite different from each other.  One is “Slackware” and the other is “Ubuntu,” and the same can be said of Gentoo, Fedora, or <code>$INSERT_FAVORITE_DISTRIBUTION_HERE</code>.</p>
<p>When we explain a system to its users, we ought to talk about the operating system as what it is named; we need to not bore them with the technical details of the system.  They don&#8217;t care if it’s GNU’s operating system utilities being used with the Linux operating system kernel, or if it&#8217;s the Microsoft Win32 API running on top of the Microsoft Windows kernel.  It could be a hamster in a ball running around, and as long as it worked for them, they truly wouldn’t care, because they do not often want to know the details of how their computer works—they just want to know that it works, and they want to use it for whatever reason it is they have a computer in the first place.</p>
<p>There is more of a reason than just the Free Software Foundation’s desire to be accredited for their hard work in creating GCC, the GNU coreutils, the GNU C Library, etc. to call a GNU/Linux system a GNU/Linux system, and not just a Linux one.  For one, if we’re talking about a Linux-based system that is running GNU, we should say that—because there are many possible configurations, both involving and not involving GNU software.  For example, embedded systems rarely carry the entire weight of GNU with them—often, something like <a href="http://www.busybox.net/">Busybox</a> is used in such systems, along with a non-GNU C library.  Certainly, if someone wanted to take the Linux kernel and make it a part of a proprietary system, they could do so—all they&#8217;d need to do is write (or port) their compiler and libraries to the Linux kernel, and they could create a system that is (like GNU/Linux) Linux-based, but (unlike GNU/Linux) not based on any work from GNU.  Microsoft could do such a thing, if they wanted.  They would then only be compelled to release their operating system kernel’s modifications, and not any of the other code.  Then, we&#8217;d have the Microsoft/Linux variant to talk about.  (Which, I think, would be very interesting—Microsoft could easily put PE support in the Linux kernel, and then port their APIs and various other things over, including the windowing system, and they&#8217;d gain an awful lot out of the deal, too.)</p>
<p>Stepping away from theory a little bit more, there are already GNU systems that are in varying degrees of operation on other operating systems.  There is the <a href="http://www.debian.org/ports/kfreebsd-gnu/" title="Debian GNU/kFreeBSD Project">GNU/kFreeBSD Project</a>, for example.  The importance of the “GNU/” identifier is heightened there, because FreeBSD does include its own native utilities, and “FreeBSD” is the name of the kernel <em><strong>and</strong></em> the associated userland utilities that live in /bin and so forth.  FreeBSD has its own C library, too.</p>
<p>That having been said, the only operating system that would <em>not</em> need the “GNU/” prefix on it is probably the Hurd.  Why?  Because the GNU operating system userland is, in fact, native to the Hurd, which is also part of the GNU project.  Linux may be thought of that way in many people’s eyes today, but it’s really not—the Linux operating system kernel was developed independently of the GNU software base, and the GNU software base was started long before the Linux operating system kernel was even thought of.  The fact that they work together as well as they do is more of a force of inertia than anything else, because GNU didn&#8217;t have Linux in mind as the system they&#8217;d be running on when they had started it.</p>
<p>My reasoning for using the “GNU/” prefix when talking about GNU/Linux systems is more out of my desire to actually identify the system I am talking about.  99% of the time, I’m not talking to end-users about GNU/Linux anyway—I’m telling them about <a href="http://www.ubuntu.com/" title="Ubuntu Web Site">Ubuntu</a>, which just happens to be a Debian variant, which itself happens to be a GNU/Linux variant.  The details are best left to people that want them, and they should probably be stated correctly and unambiguously when they’re stated at all.</p>
<p>Just my 2¢ on the issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2008/04/23/on-the-names-of-operating-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

