#+SETUPFILE: ../../../template/level-2.org
#+TITLE: Software Metaphors
#+DATE: <2014-02-08 Sat 00:00>
#+AUTHOR: vaeringjar
#+EMAIL: vaeringjar@land
#+DESCRIPTION: In response to reading so many arguments over the years about what a kernel means or what an operating system means.
#+KEYWORDS: critique


* Post

Modified: 2016-05-13 14:22


* DISCLAIMER: Work in Progress

In response to reading so many arguments over the years about what a
kernel means or what an operating system means.

This documentation is of history, not about proper language (in my case
English). I shall not take a stance to tell people how to speak their
own language. Ideas can change from one person to the next, from one
place to the next, or over time. People can agree or not regardless of
their knowledge of history. That history is what I find interesting,
thus I seek to flush it out in this short file.

Also, most users, even in the broad sense, never use directly a
significant portion of Linux kernel. Also, for example, most people
would almost never ever say they use Qualcomm Atheros either, even
though most users of Linux and Atheros have a significant cross section.
How common does someone say "I use the heck of my kernel for process
scheduling!" versus "I use my wireless network card all the time!"? If a
user finds a tool, it makes little difference whether hardware or
software. And if one claims that abstraction tiers matter, the typical
user has more awareness of the wireless adapter than the scheduling and
memory management of the system resources.


* Operators
  :PROPERTIES:
  :CUSTOM_ID: operators
  :END:

Users of early computers, such as mainframes, were operators of the
machine itself. These users performed the task of scheduling on
computers and at the time there was much less resource abstraction.


* Operating systems
  :PROPERTIES:
  :CUSTOM_ID: operating-systems
  :END:

As per above, operators perform tasks in an operating system.

RMS says: "An operating system does not mean just a kernel, barely
enough to run other programs. In the 1970s, every operating system
worthy of the name included command processors, assemblers, compilers,
interpreters, debuggers, text editors, mailers, and much more. ITS had
them, Multics had them, VMS had them, and Unix had them. The GNU
operating system would include them too" [1].


* Linux, the trademark
  :PROPERTIES:
  :CUSTOM_ID: linux-the-trademark
  :END:

Linux the word exists as a trademark, thus using or not using it
includes some sort of interest [2]. In the case of calling something
"Linux" it seems that the Linux Foundation perfectly agrees with
operating system distributions which include the name. This friendly
reuse does not always survive into other forms of free software or open
source projects such as the Mozilla trademark Firefox, which other Gecko
browsers have required a rebranding such as Debian Iceweasel [3]. The
community at large does not often continue the analogy for trademark
usage, otherwise non-Firefox branded browsers would more typically be
known as Gecko distributions if the analogy of kernel to web engine were
to survive. For example, Debian Linux would thus include the browser
Iceweasel Gecko if the community was more interested in the engine
behind the front end of the browser just as many people are more
interested in the kernel of the operating system rather than the shell,
desktop environment, or library API's.


* Shell-Kernel metaphor
  :PROPERTIES:
  :CUSTOM_ID: shell-kernel-metaphor
  :END:

The kernel is the non-userland part of the nut and the shell is the
basic userland interaction which is either just a husk or all of the
fleshy part of the nut (or fruit). Kernels interact with the hardware or
a layer of abstraction near the hardware; shells interact with the
kernel or rather they represent the userland around the kernel. Most
people remember that there is a metaphor here, but it seems to have
changed over time. Based on the responsibilities, some kernels are
called microkernels or monolithic kernels, etc. [*]


* Kernel mode
  :PROPERTIES:
  :CUSTOM_ID: kernel-mode
  :END:

Tanenbaum describes kernel mode (or supervisor mode) as the part of the
OS that is not user mode. Yet he notes that, "It is hard to pin down
what an operating system is other than saying it is the software that
runs in kernel mode--and even that is not always true." The reason for
this difficulty rests on the opinion that an operating system provides
resource abstraction and resource management [4]. Note that Tanenbaum
uses the word "hardware" and "resource" in his book, but in the case of
someone who works with a virtual machine, perhaps thinking of a hardware
element as a resource element will create a more abstract picture.


* Kernel means operating system?
  :PROPERTIES:
  :CUSTOM_ID: kernel-means-operating-system
  :END:

Do kernel and OS mean the same thing? The professionals and the
community at large has no concensus. Above, RMS sees an OS as a set of
software in order to operate the resources provided by the hardware. On
the other hand, Tanenbaum describes immediately on page 1 of his book
Modern Operating Systems that an OS as specific to the software that
acts in supervisor mode, while other software "is actually not part of
the operating system although it uses the operating system to get its
work done". Tanenbaum indicates that the user interacts with the
application software which then interacts with the kernel. This is not
to say that a user will not ever interact with the kernel, but there is
a layer of abstraction to make things look more attractive (if you have
the text you can see Tanenbaum's funny illustrations of the uglier,
lower levels of computing on page 5). For Tanenbaum exists the
difference between the end user who uses the pretty applications and the
developer who uses the ugly operating system [4]. RMS does not seem to
make this distinction of users, which may or may not affect the
difference of opinion on whether kernel means operating system. But
these need not be all or nothing scenarios. Some developers certainly
behave as end users of other applications and some end users never act
as developers. If user status seems relative, so does operating system
status. Thankfully, there seems less of or no argument about what a
kernel means, even if many types of kernels exist.


* Notes for further investigation
  :PROPERTIES:
  :CUSTOM_ID: notes-for-further-investigation
  :END:

Discussion about POSIX.


* References
  :PROPERTIES:
  :CUSTOM_ID: references
  :END:

[*] A proper source to be determined or supplied soon.\\
[1] https://www.gnu.org/gnu/thegnuproject.html\\
[2] http://www.linuxfoundation.org/programs/legal/trademark\\
[3] https://packages.debian.org/wheezy/iceweasel\\
[4] Modern Operating Systems (3rd Edition) by Andrew S. Tanenbaum,
ISBN-10: 0-13-600663-9\\
[5] https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds\_debate
